Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix wrong dubbo trace caused by using rpcContext.isProviderSide() #12930

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

steverao
Copy link
Contributor

@steverao steverao commented Dec 19, 2024

Resolves #12928, I split the OpenTelemetryFilter into OpenTelemetryClientFilter and OpenTelemetryServerFilter and avoid using rpcContext.isProviderSide().

@steverao steverao requested a review from a team as a code owner December 19, 2024 15:39
Copy link

linux-foundation-easycla bot commented Dec 19, 2024

CLA Signed

The committers listed above are authorized under a signed CLA.


private final Filter delegate;

public OpenTelemetryServerFilter() {
Copy link
Contributor

Choose a reason for hiding this comment

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

server and client filter are almost identical, did you consider sharing some code between them?

Copy link
Contributor Author

@steverao steverao Dec 24, 2024

Choose a reason for hiding this comment

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

server and client filter are almost identical, did you consider sharing some code between them?

Make sense, compared with other filters in library. It added extra attribute and causes a bit redundant here. If we extract a basic filter that contains them. The structure looks a bit complex. Another solution is to extract a method and put it into other class like DubboTelemetry, but I don't have a good method naming. So I am torn about them. Or leave it as it's? Do you have any suggestion here?

@@ -35,8 +36,13 @@ public static DubboTelemetryBuilder builder(OpenTelemetry openTelemetry) {
this.clientInstrumenter = clientInstrumenter;
}

/** Returns a new Dubbo {@link Filter} that traces Dubbo RPC invocations. */
public Filter newFilter() {
Copy link
Contributor

Choose a reason for hiding this comment

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

Usually we mark the old method as deprecated, keep it around for at least one release, and then remove.

Copy link
Contributor Author

@steverao steverao Dec 24, 2024

Choose a reason for hiding this comment

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

Usually we mark the old method as deprecated, keep it around for at least one release, and then remove.

I find it often appears in some situations where a change from experimental to stable. This is a bug here, I think we shouldn't allow users to use the method again.
In addition, if it's necessary here, I found TracingFilter might need to keep the original invoke implementation again. I am not sure whether it's a bit strange.

Copy link
Member

Choose a reason for hiding this comment

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

one of the reasons we deprecate first before removing (when possible) is that we use the @deprecated Javadoc to tell users which method to use instead. you can remove the method in the following minor release

Copy link
Contributor Author

@steverao steverao Dec 25, 2024

Choose a reason for hiding this comment

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

Thanks for your reminder and explanation, I have adjusted it and please have a look after holiday. Merry Christmas!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The Dubbo plugin may have a broken trace problem
3 participants