kayx23 commented on code in PR #13976:
URL: https://github.com/apache/apisix/pull/13976#discussion_r4069763967


##########
CHANGELOG.md:
##########
@@ -86,6 +87,66 @@ title: Changelog
 - [0.7.0](#070)
 - [0.6.0](#060)
 
+## 3.19.0
+
+**The changes marked with :warning: are not backward compatible.**
+
+### Change
+
+- :warning: feat(upstream): verify the upstream certificate against 
configurable CAs. `upstream.tls.verify` was only read by the `kafka` scheme and 
is now honoured for `https` and `grpcs` as well, so an upstream that already 
carried `verify: true` starts rejecting a certificate it cannot validate; 
`tls.ca_certs` picks the trust anchors per upstream 
[#13863](https://github.com/apache/apisix/pull/13863)

Review Comment:
   Confirmed. The final release tree pins `APISIX_RUNTIME=1.3.18`, and that 
Runtime provides both upstream TLS APIs. Agreed that the changelog can target 
the supported 3.19 distribution contract rather than unsupported older custom 
builds. No further changelog change needed.



##########
CHANGELOG.md:
##########
@@ -86,6 +87,66 @@ title: Changelog
 - [0.7.0](#070)
 - [0.6.0](#060)
 
+## 3.19.0
+
+**The changes marked with :warning: are not backward compatible.**
+
+### Change
+
+- :warning: feat(upstream): verify the upstream certificate against 
configurable CAs. `upstream.tls.verify` was only read by the `kafka` scheme and 
is now honoured for `https` and `grpcs` as well, so an upstream that already 
carried `verify: true` starts rejecting a certificate it cannot validate; 
`tls.ca_certs` picks the trust anchors per upstream 
[#13863](https://github.com/apache/apisix/pull/13863)
+- :warning: fix(openid-connect): validate the introspection issuer. With an 
explicit `claim_validator.issuer.valid_issuers`, a successful remote 
introspection response must now carry a string `iss` matching one of them, or 
the request is rejected with 401; omit the allowlist to keep the previous 
behavior [#13916](https://github.com/apache/apisix/pull/13916)
+- :warning: fix(batch-requests): bound aggregated response bodies. New 
`max_response_body_size` (1 MiB) and `max_response_body_size_total` (10 MiB) 
plugin metadata; a pipeline above either limit now returns 502 instead of the 
full aggregate [#13906](https://github.com/apache/apisix/pull/13906)
+- :warning: fix(basic-auth): reject an empty consumer password. `password` 
requires `minLength: 1`, so the Admin API rejects an empty value and a consumer 
already stored with one fails closed with 401 
[#13884](https://github.com/apache/apisix/pull/13884)
+- :warning: fix(ai-proxy-multi): reject instances that share a name. 
`instance.name` is the instance identity across the balancer, the health 
checker, `ai-rate-limiting` and `semantic_opts.fallback`, so a route whose 
instances share a name is now rejected on write and dropped on reload 
[#13851](https://github.com/apache/apisix/pull/13851)
+- :warning: fix(workflow): reject invalid case expressions and missing action 
conf. A `case` expression that was silently accepted and then matched every 
request is now a schema error, and `actions` is pinned to exactly one `[name, 
conf]` pair, so a rule carrying several actions (only the first ever ran) or an 
action without its conf is rejected on write and dropped on reload 
[#13862](https://github.com/apache/apisix/pull/13862)
+
+### Core
+
+- feat(stream): support TLS passthrough on the stream proxy, so a stream route 
can pick its upstream from the SNI in the prereaded ClientHello and still 
forward the session encrypted 
[#13912](https://github.com/apache/apisix/pull/13912)
+- feat(stream): match a stream route by several SNIs through the new `snis` 
field, mutually exclusive with `sni` 
[#13911](https://github.com/apache/apisix/pull/13911)
+- feat(websocket): add the `ws`/`wss` upstream scheme, which proxies frames 
through APISIX itself and exposes the `ws_handshake`, `ws_client_frame`, 
`ws_upstream_frame` and `ws_close` plugin phases plus the `core.websocket` API 
[#13939](https://github.com/apache/apisix/pull/13939)
+- feat(upstream): slow start for newly observed upstream nodes via 
`warm_up_conf` [#13941](https://github.com/apache/apisix/pull/13941)
+- feat: improve API-driven standalone update reliability: workers report a 
per-entity configuration digest, `PUT /apisix/admin/configs` accepts a `wait` 
parameter and answers 200 once every worker has loaded the configuration (202 
otherwise), and the shdict format carries the digest outside the JSON 
[#13904](https://github.com/apache/apisix/pull/13904)
+- feat(control-api): report the health checks a plugin owns, so 
`ai-proxy-multi` instance checkers show up in `/v1/healthcheck` 
[#13899](https://github.com/apache/apisix/pull/13899)
+- chore: upgrade lua-resty-dns-client to 7.1.2, fixing `finalCacheOnly` so a 
CNAME chain no longer fails with `empty record received` when the answer 
carries an EDNS(0) OPT record or is not in chain order 
[#13875](https://github.com/apache/apisix/pull/13875)
+- fix(etcd): watch from the revision the configuration was read at, so a write 
made while APISIX is starting is no longer lost 
[#13917](https://github.com/apache/apisix/pull/13917)
+- fix(etcd): check etcd availability before starting the watcher, so config 
objects do not wait on a watcher that never connected 
[#13934](https://github.com/apache/apisix/pull/13934)
+- fix(etcd): do not block writes when the deployment role cannot be read 
[#13885](https://github.com/apache/apisix/pull/13885)
+- fix(standalone): stop aborting stream connections before the first config 
arrives [#13855](https://github.com/apache/apisix/pull/13855)
+- fix(standalone): harden the declarative configuration paths: validate the 
shape of the request body instead of 500ing, log the parser error rather than 
the body (which can carry credentials and private keys), check a stream route's 
`superior_id` self reference during validation, and guard null deployment 
sections in the CLI [#13886](https://github.com/apache/apisix/pull/13886)
+- fix(control): always report healthcheck nodes as a JSON array, so `nodes` 
and the top-level list of `/v1/healthcheck` are `[]` instead of `{}` when empty 
[#13891](https://github.com/apache/apisix/pull/13891)
+- fix(plugin): align unavailable plugin handling: reject unknown plugin names 
before persistence, keep data-plane loading tolerant of them, and warn when one 
is skipped [#13928](https://github.com/apache/apisix/pull/13928)
+- fix: preserve servlet upstream URI boundaries by encoding the original path 
before proxying when servlet-style normalization is enabled 
[#13914](https://github.com/apache/apisix/pull/13914)
+- feat: label WebSocket sessions with `request_type=websocket`. A request 
answered with `101 Switching Protocols` is reported as `websocket` instead of 
`traditional_http` in `apisix_http_status`, `apisix_http_latency` and 
`apisix_bandwidth`, so a session can be kept out of latency queries 
[#13909](https://github.com/apache/apisix/pull/13909)
+- fix: write `request_type=websocket` through `ctx.var`, so a plugin that 
resolved `$request_type` before the upgrade does not leave the cached value at 
`traditional_http` [#13915](https://github.com/apache/apisix/pull/13915)
+
+### Plugins
+
+- feat: add the `openapi-to-mcp` plugin, serving an HTTP API to MCP clients 
from its OpenAPI document over Streamable HTTP and HTTP+SSE 
[#13942](https://github.com/apache/apisix/pull/13942)
+- feat(websocket): add the `websocket-proxy` plugin to customize proxy 
behaviors, starting with `client_max_payload_len` / `upstream_max_payload_len` 
for `ws`/`wss` upstreams [#13972](https://github.com/apache/apisix/pull/13972)

Review Comment:
   Confirmed against the final `apisix/init.lua`: each configured value becomes 
the receive limit on its side and the send limit on the opposite side, while 
`aggregate_fragments=true` means the relayed send path operates on the 
aggregated payload. Agreed that “frame” alone would be incomplete; the current 
plugin docs distinguish the default per-frame failure from observable message 
relay behavior. No changelog change needed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to