From b0af94be12a686479488c1932e0f773f6b7c4ff8 Mon Sep 17 00:00:00 2001 From: Ikhun Um Date: Mon, 12 Aug 2024 17:17:25 +0900 Subject: [PATCH] Add release notes for 1.30.0 (#5861) --- site/release-note.ts | 2 +- site/src/pages/release-notes/1.30.0.mdx | 164 ++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 site/src/pages/release-notes/1.30.0.mdx diff --git a/site/release-note.ts b/site/release-note.ts index c1ce133e59c..403a045c853 100644 --- a/site/release-note.ts +++ b/site/release-note.ts @@ -138,7 +138,7 @@ function parseResult(body: string | null): string[] { const value = chain(lines) .dropWhile((line) => !line.includes('Result:')) .drop() - .filter((line) => !line.match(/([Cc]loses?|[Ff]ix(es)?) /)) + .filter((line) => !line.match(/([Cc]loses?|[Ff]ix(es)?) #[0-9]+/)) .value(); const result: string[] = []; diff --git a/site/src/pages/release-notes/1.30.0.mdx b/site/src/pages/release-notes/1.30.0.mdx new file mode 100644 index 00000000000..ce06be42ca2 --- /dev/null +++ b/site/src/pages/release-notes/1.30.0.mdx @@ -0,0 +1,164 @@ +--- +date: 2024-08-12 +--- + +## 🌟 New features + +- **Outlier Detection for Connections**: You can now use to detect unhealthy + connections and close them gracefully. #5751 #5763 + ```java + OutlierDetectingRule rule = + OutlierDetectingRule + .builder() + .onServerError() + .onException(IOException.class) + .onException(WriteTimeoutException.class, OutlierDetectionDecision.FATAL) + .build(); + + OutlierDetection outlierDetection = + OutlierDetection + .builder(rule) + .counterSlidingWindow(Duration.ofSeconds(10)) + .counterUpdateInterval(Duration.ofSeconds(1)) + .failureRateThreshold(0.5) + .build(); + + ClientFactory + .builder() + // Apply the OutlierDetection to detect and close unhealthy connections + .connectionOutlierDetection(outlierDetection) + ``` +- **Automatic value loader**: You can now use an to (re)load a value atomically, lazily and + asynchronously. #5506 #5590 + ```java + Function> loader = cache -> { + ResponseEntity response = + client.prepare().get("/api/v1/items").asString().execute(); + return response.thenApply(res -> res.content()); + }; + + AsyncLoader asyncLoader = + AsyncLoader + .builder(loader) + .expireAfterLoad(Duration.ofSeconds(60)) + .build(); + asyncLoader.get().join(); + ``` +- **Configurable Response Timeout**: You can now use to configure when a response + timeout starts for a client. The timeout can be set when a request is started, a connection is acquired or a + request is fully sent. #4591 #5793 + ```java + ClientFactory + .builder() + .responseTimeout(Duration.ofSeconds(5)) + // A request will be timed out if the response is not fully received + // within 5 seconds. + .responseTimeoutMode(ResponseTimeoutMode.FROM_START) + .build(); + ``` +- **Fallback File Extensions**: You can now set fallback file extensions in . + This feature is useful when you want to map a RESTful URI to a static resource file. #4542 #5806 + ```java + FileService + .builder(rootDir) + // '/app/projects' path could be mapped to '/app/projects.html' + .fallbackFileExtensions("html") + ... + ``` +- **Sending Arbitrary Content in gRPC-JSON Transcoding**: You can now use [google.api.HttpBody](https://github.com/googleapis/googleapis/blob/master/google/api/httpbody.proto) + to [send arbitrary content](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_json_transcoder_filter#sending-arbitrary-content) + in gRPC-JSON transcoding. #5311 #5400 + ```protobuf + rpc ArbitraryHttp(google.api.HttpBody) returns (google.api.HttpBody) { + option (google.api.http) = { + post: "/v1/arbitrary" + }; + } + ``` +- **Zone-Aware Load Balancing**: now supports [zone-aware](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/zone_aware) + load balancing which prioritizes sending traffic to local zones. #5785 #5808 +- **WebSocketService Testing**: You can now use to test . #5538 #5765 + +## 📈 Improvements + +- Armeria client now supports the [`Expect: 100-continue`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100) header. #5646 +- now cancels the associated request immediately. #5800 +- The health checking behavior of is more aligned with Envoy. #5785 +- [Subsets](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/subsets#load-balancer-subsets) now + supports features available in the default load balancer of #5801 +- New headers from Guava have been added to . #5789 +- Armeria is now compatible with Thrift 0.19 and 0.20.0 #5243 #5822 +- Armeria client now silently ignores content instead of raising an exception when content exists for + a status that indicates empty content. #5823 + +## 🛠️ Bug fixes + +- Validation for URI's authority is relaxed to permit underscores (`_`). #5814 #5854 +- A user can send and receive an HTTP request whose `:path` contains the following characters now: #5845 + - TAB (0x09) + - FS (0x1C) + - GS (0x1D) + - RS (0x1E) + - US (0x1F) +- Fixed a potential leak when sending compressed responses. #5858 +- `ResteasyClient` now correctly releases when it is closed. #5833 +- Content decompression exceptions are now properly propagated. #5177 #5620 +- now correctly works with gRPC-Kotlin stubs #5295 #5399 +- Fixed sidebar to occupy at most 40% of the window width. #5091 #5839 +- `InputStream` created from now correctly raises + an exception if the original is closed with an exception. #5859 +- now correctly returns `true` if a DNS query, a session creation or + a write operation times out. #4935 #5156 + +## 📃 Documentation + +- Added a gRPC reverse proxy server example. #2353 #5722 + +## ☢️ Breaking changes + +- Modified the behavior of to merge the original + with the new one. #5802 + - Instead, is added to replace the entire attributes of . + +## ⛓ Dependencies + +- Curator 5.6.0 → 5.7.0 +- Dropwizard Metrics 4.2.25 → 4.2.26 +- Eureka 2.0.2 → 2.0.3 +- GraphQL Kotlin 7.1.1 → 7.1.4 +- gRPC Java 1.64.0 → 1.65.1 +- Jackson 2.17.1 → 2.17.2 +- Jetty 9.4.54 → 9.4.55, 11.0.20 → 11.0.22, 12.0.8 → 12.0.12 +- Kafka client 3.7.0 → 3.8.0 +- Kubernetes client 6.12.1 → 6.13.1 +- Micrometer 1.13.0 → 1.13.2 +- Micrometer Tracing 1.2.4 → 1.3.2 +- Netty 4.1.110 → 4.1.112 +- Prometheus 1.3.0 → 1.3.1 +- Reactor 3.6.6 → 3.6.8 +- Sangria 4.1.0 → 4.1.1 +- Scala 3.4.1 - 3.4.2 +- ScalaPB 0.11.15 → 0.11.17 +- SLF4J 2.0.12 → 2.0.13 +- Spring 6.1.8 → 6.1.11 +- Spring Boot 3.3.0 → 3.3.2 +- Tomcat 9.0.87 → 9.0.91, 10.1.20 → 10.1.26 + +## 🙇 Thank you + +