• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

valkyrjaio / valkyrja-java / 30187598453
100%

Build:
DEFAULT BRANCH: 26.x
Ran 26 Jul 2026 04:20AM UTC
Jobs 1
Files 653
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 Jul 2026 04:19AM UTC coverage: 99.977% (+0.004%) from 99.973%
30187598453

push

github

web-flow
[Grpc] Add gRPC as a first-class protocol alongside HTTP and CLI (#37)

# Description

Adds **gRPC as a first-class protocol** in the Valkyrja Java framework,
alongside HTTP and CLI, implementing the language-agnostic contract in
the `architecture/GRPC.md` design doc.

The design mirrors the existing HTTP/CLI ports: a worker-agnostic core
(`io.valkyrja.grpc.*`) of immutable value types, a **map-lookup
`Router`**, a seven-stage **middleware pipeline**, and a
**`ServiceHandler`** kernel entry point — everything resolved through
the container and wired by provider pairs. Messages stay agnostic
(`Iterable<Object>`); protobuf translation happens only at the
worker-adapter boundary, so the core stays portable across the
PHP/TS/Go/Python ports.

Cancellation follows the doc's cooperative, **pull-based** model: the
two-question check (`Cancellation.checkAndFinalize`) runs at every
orchestrator boundary and fast-exits by returning a cancellation
response; streaming output is checked at each step via
`call.cancellable(...)`, never a push write channel.

The grpc-java worker adapters live in the sibling entry repos (linked
below).

## Types of changes

- [ ] Improvement _(non-breaking change which improves code)_
- [ ] Bug fix _(non-breaking change which fixes an issue)_
- [x] New feature _(non-breaking change which adds functionality)_
- [ ] Deprecation _(breaking change which removes functionality)_
- [ ] Breaking change _(fix or feature that would cause existing
functionality to change)_
- [ ] Documentation improvement

## Changes

- **`io.valkyrja.grpc.message.*`** — immutable value types:
`ServiceCall`, `ServiceResponse`, `Status`/`StatusCode` (canonical gRPC
0–16), `Metadata` (case-insensitive, `-bin` binary union), `Deadline`,
`CancellationToken`, `Peer`/`AuthContext`.
- **`io.valkyrja.grpc.routing.*`** — `Route`, `RouteCollection` (direct
map lookup), `Router` (map lookup + two-question cancellation checks),
and `@GrpcService`/`@GrpcMethod`/`@GrpcMiddlew... (continued)

1838 of 1840 branches covered (99.89%)

Branch coverage included in aggregate %.

1048 of 1048 new or added lines in 69 files covered. (100.0%)

6747 of 6747 relevant lines covered (100.0%)

4.34 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30187598453.1 26 Jul 2026 04:20AM UTC 653
99.98
GitHub Action Run
Source Files on build 30187598453
  • Tree
  • List 653
  • Changed 22
  • Source Changed 22
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30187598453
  • 282e1db5 on github
  • Prev Build on 26.x (#30153175294)
  • Next Build on 26.x (#30187751958)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc