Skip to content

Add versionless gRPC channel resolution override - #696

Merged
ricardozanini merged 1 commit into
quarkiverse:mainfrom
mcruzdev:issue-691
Jun 29, 2026
Merged

Add versionless gRPC channel resolution override#696
ricardozanini merged 1 commit into
quarkiverse:mainfrom
mcruzdev:issue-691

Conversation

@mcruzdev

Copy link
Copy Markdown
Member

Description

This pull request aims to add a versionless gRPC channel resolution override: It allows to define a gRPC channel to be used by all version of a workflow.

Fixes #691

Changes

  • Introduce a new entry in the gRPC channel resolution priority order so a single override can target all versions of a workflow.
  • Align the gRPC README.md example with the code
  • Change ClientOverride to ClientOverrideConfig to follow the current codebase standard
  • Add tests to be sure about the resolution priority order

Testing

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated (if applicable)
  • Tested manually (describe below if applicable)

Manual Testing

Checklist

Before submitting this PR, please ensure:

  • I ran the full build with integration tests locally: ./mvnw clean install -DskipITs=false
  • Code follows the project's code conventions
  • Tests have been added/updated to cover the changes
  • Documentation has been updated (if user-facing changes)
  • Commit messages are clear and follow conventional commits style
  • I have read and followed the Contributing Guide
  • I have read and comply with the LLM Usage Policy (if applicable)

Additional Notes

@mcruzdev
mcruzdev requested a review from a team as a code owner June 26, 2026 21:09
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown

🙈 The PR is closed and the preview is expired.

@mcruzdev

Copy link
Copy Markdown
Member Author

@matheusandre1 could you take a look and let me know if this makes sense to you?
While working on this, I noticed a discrepancy between the documentation and the code regarding the channel resolution priority order:
The docs stated that the default channel takes precedence over a Workflow ID used as the default channel, while the code did the opposite.
I kept the code's behavior, since a client named after a specific Workflow ID is more specific than the catch-all default channel, so it should win.

Introduce a new entry in the gRPC channel resolution priority order so a
single override can target all versions of a workflow:

1. namespace:name:version:taskName  - task-level override
2. namespace:name:version           - workflow-level override
3. namespace:name                   - versionless override (NEW)
4. workflow ID as client name
5. default channel
6. SDK fallback

Refactor resolveClientName into a pure, testable static method (the
channel-existence check is injected as a Predicate) and add unit tests
covering the full priority order.

Signed-off-by: Matheus Cruz <matheuscruz.dev@gmail.com>
@matheusandre1

Copy link
Copy Markdown
Contributor

great, take a look too: here

@matheusandre1

Copy link
Copy Markdown
Contributor

@mcruzdev Please guide me on how to make the change too.

@mcruzdev

mcruzdev commented Jun 27, 2026

Copy link
Copy Markdown
Member Author

@mcruzdev Please guide me on how to make the change too.

Of course, let me check...
I will write a detailed guide tomorrow, I am using phone now

@ricardozanini
ricardozanini merged commit a4766ad into quarkiverse:main Jun 29, 2026
14 checks passed
@github-actions

Copy link
Copy Markdown

📊 Quarkus Flow Coverage Report

There is no coverage information present for the Files changed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Allow a global gRPC configuration per namespace:name

4 participants