* Add Light4J 1.6.x plug-in
* Add unit test for Light4J plug-in
* Add missing id to server-starter
* Remove mentions of version 1.6.x
Some local testing showed that the plugin successfully generated traces for a light4j project built with light-codegen v2.x. Therefore, there is no need for a separate plugin for v2.x and no distinction needs to be made with light4j v1.6.x.
* Update supported light4j versions
* Use ContextSnapshot to maintain trace
In a typical Light4j project, the ExceptionHandler#handleRequest is the asynchronous execution point. The flow is ExceptionHandler#handleRequest -> HttpServerExchange#dispatch -> ... -> ExceptionHandler#handleRequest. This means that handleRequest is being intercepted twice and each time a LocalSpan is created. Without handling thread propagation, the trace segment gets split up.
By saving a ContextSnapshot into the enhanced object (ExceptionHandler), we can determine if it is necessary to continue the segment.
* Update logic for span creation in trace
By default, the Light4J plugin now overrides the Undertow plugin's entry span with its own. This new entry span is created just before execution of the ExceptionHandler#handleRequest in the I/O thread. The entry span is generated here because it is considered the starting point of the Light4J handler chain.
There is now also the option to enable detailed span creation when tracing requests through Light4J. These local spans mark which middleware and business handlers are involved with handling the HTTP request to a Light4J service.
* Update skywalking version
* Update light4j version
* Fix LightInstrumentation javadoc
* Remove import violating checkstyle
This import was added from the link reference in the javadoc. The javadoc has now been changed to just reference the method name.
* Move light4j agent config property
* Sync UI
* Support op group name in agent config core.
* Provide core API for operation name grouping, rest template plugin update, and doc update.
* Fix doc
* Fix test case.
* Fix missing changes.
* add shuyun to powered-by.md (#3341)
* add shuyun to powered-by.md
* update powered-by.md
* Remove static method.
* Add cached writer so we need not call whole method.
* Make writer volatile.
* Make writer to WRITER.
* Rewrite the writeFactory for add the cached writer and keep the unit tests stable.
* Give the default writer.
* Remove volatile.
* Stabilize unit test
The FileWriterTest creates files in the source directory(failed to
delete them due to a bug in the `deleteDir` method), making
them being checked by checkstyle plugin and failed to pass.
* Seperate compilation step
* Refactor open edge.
* Make refactor works.
* Revert log back.
* Remove unnecessary codes.
* Open edge for all internal binding interceptors.
* Add document about JDK 9+ module.
* Change bytebuddy to 1.10.1(unreleased)
* Change document
* 1. Adopt the latest bytebudy changes(snapshot only), commit b609711564.
2. Remove disruptor by ArrayBlockingQueue, because Disruptor can't work in both JDK 8(1) and 9-12, if we don't add `--add-modules jdk.unsupported`
3. Doc update.
* Update README.md
* improve AsyncSpan API: make #asyncFinish and #prepareForAsync can not invoke more than once
make the API more strong: make the plugin code bug fail-fast
* POC: Intercept successfully.
* Refactor codes
* Build the new core
* Setup the new core.
* Push the javassist version to 3.23.2-GA, as it is the last version supports JDK 1.6 compile, according to https://github.com/jboss-javassist/javassist/blob/rel_3_23_2_ga/pom.xml#L149-L160
* Finish the all codes.
* Document updated for bootstrap instrumentation.
* Add a notice to document.
* Remove unexpected file.
* Set javassist version right. Add judge in core interceptors
* Fixe no log bridge implementation
* servlet 2.5
* method exist
* update MethodUtil
* Update MethodUtil.java
Add a comment to the new core util method. @candyleer I am concerning this method will be used widely even unnecessary.
* Change OAL generator tool to runtime.
Step 1. change project structure. API links and maven pom.
* Part of metrics class generation
* Metrcis class generated.
* Set up the basic structure of new OAL engine.
* Finish metrics generation.
* Support dispatcher generation.
* Format codes.
* Generate dispatcher all methods.
* Implement disable in hardcode.
* Clear up
* Fix compile startup.
* Update license and document of new OAL engine.
* Fix rat.
* Disable class output in default
* Copy from @kezhenxu94 's test PR, https://github.com/apache/skywalking/pull/3110
* Wait for the mount command to finish
* improve ContextManager.stopSpan and awaitFinishAsync performance: call ThreadLocal only once
For the [JMH benchmark test](https://gitlab.com/qxo1/Common-JMH-benchmark/-/jobs/251025992) :
On gitlab CI(java 8): call ThreadLocal once vs twice fast over 10%
My T480 java 8 : fast over 40%; java 11: fast over 50%;
[The JMH benchmark code ](https://github.com/qxo/Common-JMH-benchmark/blob/master/src/main/java/test/ThreadLocalGetXTimeBenchmark.java)
* Update apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextManager.java
Co-Authored-By: kezhenxu94 <kezhenxu94@163.com>
* Update apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextManager.java
Co-Authored-By: kezhenxu94 <kezhenxu94@163.com>
* Update apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextManager.java
Co-Authored-By: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
* Set up 10 seconds deadline after gRPC client sending
* The duration of deadline contains three segments: connecting,
request and response
For blocking stub, I just set deadline before invoke service. For
bi-streaming stub, I found all of them are used as a blocking style,
that after getting streaming response client stub just close current
streaming. Base on above reality, I pick the same way as blocking one.
* Support bootstrap class enhance and fix OOM by empty stack of exception.
* Agent document update
* Remove a word.
* Fix wrong cause exception search.
* Fix the condition
* Revert bootstrap class loader enhance.
* Remove import.
* no message