Skip to content

Restore default Triple async service methods - #16426

Open
skt-shinyruo wants to merge 1 commit into
apache:3.3from
skt-shinyruo:fix-13735-triple-async-default-method
Open

Restore default Triple async service methods#16426
skt-shinyruo wants to merge 1 commit into
apache:3.3from
skt-shinyruo:fix-13735-triple-async-default-method

Conversation

@skt-shinyruo

Copy link
Copy Markdown
Contributor

What is the purpose of the change?

Fixes #13735.

PR #13385 removed the unary observer overload from generated Triple service interfaces to avoid ambiguous method resolution. It also made the differently named async bridge abstract, which requires sync-only providers to implement a synthetic method that is not declared in their proto service.

This change restores the default async bridge while keeping the observer overload out of the interface. Providers that explicitly implement the async method continue to override it as before.

The regression test generates a unary service interface and compiles both a sync-only provider and a provider with an explicit async override. It also verifies that the observer overload removed by #13385 remains absent.

Verification

  • ./mvnw -pl dubbo-plugin/dubbo-compiler test
  • ./mvnw -pl dubbo-plugin/dubbo-compiler -DskipTests package
  • git diff --check

Checklist

  • Make sure there is a GitHub_issue field for the change.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Write necessary unit-test to verify your logic correction. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
  • Make sure gitHub actions can pass. Why the workflow is failing and how to fix it?

Generated Triple service interfaces should not require providers to implement synthetic async methods. Restore the sync bridge while keeping the observer overload out of the interface.

Fixes apache#13735
@codecov-commenter

codecov-commenter commented Aug 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 36.90%. Comparing base (3a30432) to head (b8dfe42).

❗ There is a different number of reports uploaded between BASE (3a30432) and HEAD (b8dfe42). Click for more details.

HEAD has 5 uploads less than BASE
Flag BASE (3a30432) HEAD (b8dfe42)
unit-tests-java25 1 0
unit-tests-java8 1 0
unit-tests-java17 1 0
unit-tests-java21 1 0
unit-tests-java11 1 0
Additional details and impacted files
@@              Coverage Diff              @@
##                3.3   #16426       +/-   ##
=============================================
- Coverage     60.87%   36.90%   -23.97%     
+ Complexity    11766    11744       -22     
=============================================
  Files          1953     1952        -1     
  Lines         89273    89251       -22     
  Branches      13473    13389       -84     
=============================================
- Hits          54346    32940    -21406     
- Misses        29333    51728    +22395     
+ Partials       5594     4583     -1011     
Flag Coverage Δ
integration-tests-java21 32.08% <ø> (-0.07%) ⬇️
integration-tests-java8 32.21% <ø> (+<0.01%) ⬆️
samples-tests-java21 32.13% <ø> (-0.07%) ⬇️
samples-tests-java8 29.82% <ø> (+0.03%) ⬆️
unit-tests-java11 ?
unit-tests-java17 ?
unit-tests-java21 ?
unit-tests-java25 ?
unit-tests-java8 ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.

Dubbo 3.2.11, using the tri protocol, the interface must implement the Async method

2 participants