info
You're seeing the release note of an old version. Check out the latest release note.
v1.38.0
April 7, 2026
🌟 New features
- HTTP/JSON to gRPC Proxy: You can now use
DelegatingHttpJsonTranscodingServiceto accept HTTP/JSON traffic and forward it as gRPC to anyHttpServicedelegate, without needing a local gRPC service implementation. #6669WebClient client = ...;HttpService delegate = (ctx, req) -> client.execute(req);DelegatingHttpJsonTranscodingService service =DelegatingHttpJsonTranscodingService.builder(delegate).serviceDescriptors(MyServiceGrpc.getServiceDescriptor()) // 👈👈👈.build(); - KubernetesEndpointGroup POD Mode:
KubernetesEndpointGroupnow supportsPODmode for intra-cluster communication, connecting directly topodIP:containerPortfor true client-side load balancing. #6600 #6661KubernetesEndpointGroup endpointGroup =KubernetesEndpointGroup.builder(kubernetesClient).namespace("my-namespace").serviceName("my-service").mode(KubernetesEndpointMode.POD) // 👈👈👈.build(); - Envoy gRPC HTTP/1.1 Bridge:
GrpcServicenow supports the Envoy gRPC HTTP/1.1 bridge specification viaGrpcServiceBuilder.enableEnvoyHttp1Bridge(). When enabled, unary gRPC responses over HTTP/1.1 mergegrpc-statusand trailers into response headers, improving compatibility with legacy proxy servers. This applies only to unary methods; streaming methods are unaffected. #6664 #6689GrpcService.builder().addService(myGrpcService).enableEnvoyHttp1Bridge(true) // 👈👈👈.build(); - Kubernetes Node IP Extractor:
KubernetesEndpointGroupcan now extract a Node IP from labels or annotations viaKubernetesEndpointGroupBuilder.nodeIpExtractor(), useful for CNI-managed environments like Calico. #6660 - Additional BuiltInProperty Entries:
BuiltInPropertynow includes 15 new properties for timing, content preview, and protocol information, aligning it withAccessLogComponent. #4403 #6683- Timing:
req.start_time_millis,req.duration_millis,res.duration_millis,total_duration_millis, etc. - Content preview:
req.content_preview,res.content_preview - Protocol:
serialization.format,session.protocol,host
- Timing:
- Token Preloading: You can now set
AsyncLoaderBuilder.preload()to eagerly fetch tokens at build time, reducing first-request latency.OAuth2AuthorizationGrantBuilderandAthenzClientBuilderalso support this option. #6688 - Standalone Athenz Token Client: You can now use
AthenzTokenClientto fetch Athenz tokens independently of Armeria's HTTP decorator pipeline. #6431 #6691AthenzTokenClient tokenClient =AthenzTokenClient.builder(ztsBaseClient).domainName("my-domain").roleNames("my-role").build();tokenClient.getToken().thenAccept(token -> { // 👈👈👈// Use the token with any HTTP client.}); - Athenz Metrics: You can now monitor Athenz policy load success/failure rates and token cache
hit/miss metrics via a configurable
MeterRegistryonAthenzAuthorizerandAthenzServicebuilders. #6690 - xDS SDS Integration: xDS now supports transport-socket TLS with SAN and certificate pin
verification for upstream connections, and SDS integration with
XdsPreprocessor. #6628
📈 Improvements
StreamDecoderFactorynow supports flexible content-encoding matching viaStreamDecoderFactory.matchesEncodingHeaderValue(). This fixes interoperability with frameworks like Netty that returnsnappyinstead ofx-snappy-framed. #6681 #6684- You can now bind a
VirtualHostto a random (ephemeral) port using aServerPortobject, useful for CI environments where port conflicts must be avoided. #6410 #6603ServerPort port1 = new ServerPort(0, SessionProtocol.HTTP);ServerPort port2 = new ServerPort(0, SessionProtocol.HTTP);Server server = Server.builder().port(port1).virtualHost(port1) // 👈👈👈.service("/foo", (ctx, req) -> HttpResponse.of("foo")).and().port(port2).virtualHost(port2) // 👈👈👈.service("/bar", (ctx, req) -> HttpResponse.of("bar")).and().build(); DocServicenow correctly generates JSON Schema withoneOfanddiscriminatorfields for types annotated with Jackson's@JsonTypeInfoand@JsonSubTypes. #6370
🛠️ Bug fixes
RequestContextExportingAppenderno longer throws aNullPointerExceptionduringRequestContextStorageinitialization in Logback 1.5.21 and later. #6662
⛓ Dependencies
- Athenz 1.12.35 → 1.12.37
- Brave 6.3.0 → 6.3.1
- Brotli4j 1.20.0 → 1.22.0
- Envoy control plane 1.0.49 → 1.0.52
- Eureka 2.0.5 → 2.0.6
- gRPC-Java 1.78.0 → 1.80.0
- Jackson 2.21.1 → 2.21.2
- Kubernetes client 7.5.2 → 7.6.1
- Micrometer 1.16.3 → 1.16.4
- Micrometer Tracing 1.6.3 → 1.6.4
- Netty 4.2.10.Final → 4.2.12.Final
- Prometheus 1.5.0 → 1.5.1
- Protobuf 4.34.0 → 4.34.1
- Reactor 3.8.3 → 3.8.4
- Sangria 4.2.15 → 4.2.17
- Spring Boot 4.0.3 → 4.0.5
- Spring Framework 7.0.5 → 7.0.6
- Testcontainers 2.0.3 → 2.0.4
- ZooKeeper 3.9.4 → 3.9.5
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:











