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

valkyrjaio / valkyrja-java / 30593220200
100%

Build:
DEFAULT BRANCH: 26.x
Ran 31 Jul 2026 12:21AM UTC
Jobs 1
Files 670
Run time 2min
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

31 Jul 2026 12:19AM UTC coverage: 100.0%. Remained the same
30593220200

push

github

web-flow
[Grpc] feat!: Align the gRPC module's throwables with the cross-language convention (#83)

# Description

The gRPC module added by #37 deviates from the throwable convention in

[`architecture/AGENTS.md`](https://github.com/valkyrjaio/architecture/blob/master/AGENTS.md)
§4 and

[`THROWABLES.md`](https://github.com/valkyrjaio/architecture/blob/master/THROWABLES.md)
in three
ways. This brings it in line, and adds the two ArchUnit rules that would
have caught the drift.

**1. Missing categoricals.** Every component always ships both
`ComponentRuntimeException` and
`ComponentInvalidArgumentException`, used or not, so a first-party or
third-party subclass can be
added later without restructuring the hierarchy. gRPC shipped only the
runtime half, at both levels
— `grpc.throwable` and `grpc.routing.throwable`. http and cli ship both
at every level.

**2. Missing throwable packages.** `grpc.middleware` had no `throwable`
package at all, unlike
`http.middleware` and `cli.middleware`. Auditing for the ArchUnit rule
surfaced a fourth instance of
the same omission that was not in the original report: `grpc.server` was
also missing one, while
`http.server` and `cli.server` both ship it. It is fixed here too,
because the new rule cannot be
added while it is outstanding.

**3. Raw JDK exceptions at three throw sites.** `StatusCode.fromValue`
threw
`IllegalArgumentException`; `ServiceCall.send` threw
`IllegalStateException` twice. Each now gets a
concrete named exception in the module hierarchy. The names are taken
from the TypeScript port so
the two stay legible side by side.

## Why this is a breaking change

The two `send` sites are the break: `GrpcNonStreamingSendException` and
`GrpcConcurrentSendException` extend `GrpcRuntimeException`, which does
not descend from
`IllegalStateException`, so a caller catching `IllegalStateException`
around `send` no longer
catches it. Hence `!` and the `breaking/` prefix.

`StatusCode.fromValue` is **not** breaking despite also ... (continued)

1913 of 1913 branches covered (100.0%)

Branch coverage included in aggregate %.

33 of 33 new or added lines in 11 files covered. (100.0%)

7008 of 7008 relevant lines covered (100.0%)

4.33 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30593220200.1 31 Jul 2026 12:21AM UTC 670
100.0
GitHub Action Run
Source Files on build 30593220200
  • Tree
  • List 670
  • Changed 3
  • Source Changed 3
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30593220200
  • ffef4960 on github
  • Prev Build on 26.x (#30517331372)
  • Next Build on 26.x (#30593351493)
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