Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Release Notes.
* Improve 4x performance of ContextManagerExtendService.createTraceContext()
* Add a plugin that supports the Solon framework.
* Fixed issues in the MySQL component where the executeBatch method could result in empty SQL statements .
* Fix problem in the jetty-client-9.x which leading original listener reading empty content


All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/213?closed=1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<url>http://maven.apache.org</url>

<properties>
<jetty-client.version>9.1.0.v20131115</jetty-client.version>
<jetty-client.version>9.4.55.v20240627</jetty-client.version>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change this? Would this break preview compatibility?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because org.eclipse.jetty.client.api.Response.AsyncContentListener cound not be found in 9.1.x version
if the wrapper not implementing it, application will also get empty result when using jetty client 9.2.x or later,

by testing, it is compatible with preview version 9.1.0.v20131115
, 9.2.12.v20150709, 9.3.30.v20211001 and 9.4.55.v20240627

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it doesn't exist in 9.1.0.v20131115, how do we make sure of compatibility? This doesn't make sense.

</properties>

<dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,17 @@
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
import org.eclipse.jetty.client.api.Response;
import org.eclipse.jetty.client.api.Result;
import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.util.Callback;

import java.nio.ByteBuffer;

public class CompleteListenerWrapper implements
Response.BeginListener, Response.HeaderListener, Response.HeadersListener, Response.ContentListener,
Response.SuccessListener, Response.FailureListener, Response.CompleteListener, Response.AsyncContentListener {

public class CompleteListenerWrapper implements Response.CompleteListener {
private Response.CompleteListener callback;

private ContextSnapshot context;

public CompleteListenerWrapper(Response.CompleteListener callback, ContextSnapshot context) {
Expand All @@ -48,4 +56,40 @@ public void onComplete(Result result) {
}
ContextManager.stopSpan();
}

@Override
public void onContent(Response response, ByteBuffer content) {
((Response.ContentListener) callback).onContent(response, content);
}

@Override
public void onFailure(Response response, Throwable failure) {
((Response.FailureListener) callback).onFailure(response, failure);
}

@Override
public void onSuccess(Response response) {
((Response.SuccessListener) callback).onSuccess(response);
}

@Override
public void onBegin(Response response) {
((Response.BeginListener) callback).onBegin(response);
}

@Override
public boolean onHeader(Response response, HttpField field) {
return ((Response.HeaderListener) callback).onHeader(response, field);

}

@Override
public void onHeaders(Response response) {
((Response.HeadersListener) callback).onHeaders(response);
}

@Override
public void onContent(Response response, ByteBuffer content, Callback originalCallback) {
((Response.AsyncContentListener) this.callback).onContent(response, content, originalCallback);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner;
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.HttpConversation;
import org.eclipse.jetty.client.HttpRequest;
import org.eclipse.jetty.client.ResponseNotifier;
import org.eclipse.jetty.client.api.Response;
Expand Down Expand Up @@ -147,7 +148,7 @@ private void assertJettySpan() {

private class MockHttpRequest extends HttpRequest implements EnhancedInstance {
public MockHttpRequest(HttpClient httpClient, URI uri) {
super(httpClient, uri);
super(httpClient, new HttpConversation(), uri);
}

@Override
Expand All @@ -173,7 +174,7 @@ public void setSkyWalkingDynamicField(Object value) {

private class MockResponseNotifier extends ResponseNotifier implements EnhancedInstance {
public MockResponseNotifier(HttpClient client) {
super(client);
super();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.apache.skywalking.apm.agent.test.tools.SpanAssert;
import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.HttpConversation;
import org.eclipse.jetty.client.HttpRequest;
import org.junit.Assert;
import org.junit.Before;
Expand Down Expand Up @@ -124,7 +125,7 @@ public void testMethodsAroundError() throws Throwable {

private class MockHttpRequest extends HttpRequest implements EnhancedInstance {
public MockHttpRequest(HttpClient httpClient, URI uri) {
super(httpClient, uri);
super(httpClient, new HttpConversation(), uri);
}

@Override
Expand Down