v3.7.0
Please check out CHANGELOG for a full list of changes. And make sure to read upgrade guide before upgrading etcd (there may be breaking changes).
For installation guides, please check out operating etcd. Latest support status for common architectures and operating systems can be found at supported platforms.
ETCD_VER=v3.7.0
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1 --no-same-owner
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
# start a local etcd server
/tmp/etcd-download-test/etcd
# write,read to etcd
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
/tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo
ETCD_VER=v3.7.0
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-darwin-amd64.zip -o /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
unzip /tmp/etcd-${ETCD_VER}-darwin-amd64.zip -d /tmp && rm -f /tmp/etcd-${ETCD_VER}-darwin-amd64.zip
mv /tmp/etcd-${ETCD_VER}-darwin-amd64/* /tmp/etcd-download-test && rm -rf mv /tmp/etcd-${ETCD_VER}-darwin-amd64
/tmp/etcd-download-test/etcd --version
/tmp/etcd-download-test/etcdctl version
/tmp/etcd-download-test/etcdutl version
etcd uses gcr.io/etcd-development/etcd as a primary container registry, and quay.io/coreos/etcd as secondary.
ETCD_VER=v3.7.0
rm -rf /tmp/etcd-data.tmp && mkdir -p /tmp/etcd-data.tmp && \
docker rmi gcr.io/etcd-development/etcd:${ETCD_VER} || true && \
docker run \
-p 2379:2379 \
-p 2380:2380 \
--mount type=bind,source=/tmp/etcd-data.tmp,destination=/etcd-data \
--name etcd-gcr-${ETCD_VER} \
gcr.io/etcd-development/etcd:${ETCD_VER} \
/usr/local/bin/etcd \
--name s1 \
--data-dir /etcd-data \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://0.0.0.0:2380 \
--initial-cluster s1=http://0.0.0.0:2380 \
--initial-cluster-token tkn \
--initial-cluster-state new \
--log-level info \
--logger zap \
--log-outputs stderr
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcd --version
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl version
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdutl version
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl endpoint health
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl put foo bar
docker exec etcd-gcr-${ETCD_VER} /usr/local/bin/etcdctl get foo
2026-07-08, Version 26.5.0 (Current), @richardlau
Welcome to our newest releaser, Stewart X Addison. Future Node.js releases may be signed with his release key, 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD.
- [
55f48446c7] - (SEMVER-MINOR) buffer: implement blob.textStream() (Matthew Aitken) #64036 - [
b373202efc] - (SEMVER-MINOR) esm: add--experimental-import-textflag (Efe) #62300 - [
39e0c14455] - (SEMVER-MINOR) perf_hooks: sample delay per event loop iteration (Pablo Erhard) #62935 - [
999a83c937] - (SEMVER-MINOR) stream: expose ReadableStreamTee (Matteo Collina) #64195 - [
4e0236dc3d] - (SEMVER-MINOR) tls: report negotiated TLS groups (Filip Skokan) #64119
- [
87648c0a6c] - benchmark: trim down the argon2 sets (Filip Skokan) #64218 - [
a483bfd3f0] - buffer: remove unreachable overflow check in atob (haramjeong) #60161 - [
6d14279688] - buffer: add fast api for isUtf8 and isAscii (Gürgün Dayıoğlu) #64169 - [
55f48446c7] - (SEMVER-MINOR) buffer: implement blob.textStream() (Matthew Aitken) #64036 - [
a67d9a7a44] - build: allow linting node.1 (Aviv Keller) #64157 - [
06c1fbc25b] - build: enable Maglev for riscv64 (Jamie Magee) #62605 - [
518309c363] - build: suppress clang errors building libffi on Windows (René) #64222 - [
6a80ab485c] - build: add manually-dispatched stress-test workflow (Joyee Cheung) #64118 - [
f4e7bf1f1c] - build: pin envinfo versions in github actions (Joyee Cheung) #64117 - [
66f6ac0d86] - build: support setting an emulator from configure script (Ivan Trubach) #53899 - [
7f26c54aa6] - child_process: fix permission model propagation via NODE_OPTIONS (Matteo Collina) #63972 - [
32bb554f5b] - crypto: fix large DH generator validation (Tobias Nießen) #64092 - [
0908d76ef6] - crypto: reject small-order EdDSA points during verify (Filip Skokan) #64026 - [
7f7e5863c2] - deps: update undici to 8.7.0 (Node.js GitHub Bot) #64282 - [
af91029801] - deps: update nghttp3 to 1.17.0 (Node.js GitHub Bot) #64182 - [
2e500ba7b0] - deps: update googletest to 8b53336594cc52213c6c2c7a0b29194fa896d039 (Node.js GitHub Bot) #64181 - [
74e3aa24ba] - deps: update sqlite to 3.53.3 (Node.js GitHub Bot) #64180 - [
c7e57f55a7] - deps: c-ares: cherry-pick 8ba37af8e3fb (René) #64110 - [
879fdc4daf] - deps: V8: backport da20a197a7f9 (Kevin Gibbons) #64101 - [
a640543a7c] - deps: V8: cherry-pick 0cc9eb22c0b0 (Kevin Gibbons) #64101 - [
feefd179e5] - deps: V8: cherry-pick 1a391f98cc7a (Kevin Gibbons) #64101 - [
8ef643d4b0] - deps: update googletest to 0b1e895ba4226c2fda5ee0178c9b5b1195a741aa (Node.js GitHub Bot) #64039 - [
9e50bb0655] - dgram: skip dns.lookup() for literal IP addresses (Ruben Bridgewater) #64133 - [
dc052c095c] - diagnostics_channel: return original thenable (Stephen Belanger) #62407 - [
a22a840293] - doc: clarify QUIC stream state wording (EduardF1) #63660 - [
8d4bec2d71] - doc: update Http2SecureServer.on("timeout") default value (YuSheng Chen) #64187 - [
da88f70afa] - doc: add note on visibility of CI failures to new contributor guide (Stewart X Addison) #64256 - [
20ce359ccb] - doc: clarify HTTP/1.1 response ordering (Matteo Collina) #64213 - [
05eae2835c] - doc: recommend node-stress-single-test for flaky tests (Trivikram Kamat) #64223 - [
3966eb67e7] - doc: fix typo in examples (Vas Sudanagunta) #64184 - [
12a2b9daa3] - doc: fix typo in node-config-schema.json (Hamid Reza Ghavami) #64188 - [
0854482671] - doc: clarify defense-in-depth issues (Matteo Collina) #64215 - [
ef4915fc3a] - doc: fix Fast FFI argument count in ffi.md (Daijiro Wachi) #63960 - [
bb2eed863c] - doc: add sxa GPG key (ed25519) (Stewart X Addison) #64193 - [
b7bf6e3a06] - doc: add guide and answers to FAQs for first-time contributors (Joyee Cheung) #63685 - [
ff537ba858] - doc: updateHttp2Server.close&Http2SecureServer.close(YuSheng Chen) #63298 - [
f3db304588] - doc: update list of people inSECURITY.md(Richard Lau) #64152 - [
2a126647b0] - doc: clarify vfs is not a sandbox (Matteo Collina) #64143 - [
85fc79dd9b] - doc: fix broken links and duplicate stability label (Antoine du Hamel) #64130 - [
189e830eb3] - doc: add missing option to man page (Richard Lau) #64156 - [
7a16ccccd0] - doc: announce upcoming end of tier 2 support for macOS x64 (Antoine du Hamel) #63931 - [
d5f826045f] - doc: update toolchain for official AIX releases (Richard Lau) #64068 - [
60abc4400f] - doc: fix callback example import in fs docs (Kamal Rawal) #63912 - [
e470c74a6c] - doc: fix keepAliveTimeout default in http.createServer options (Jahanzaib iqbal) #63974 - [
851b460583] - esm: improve ERR_REQUIRE_ASYNC_MODULE (Joyee Cheung) #64260 - [
0cd443df39] - esm: print required top-level await locations without evaluating (Joyee Cheung) #64154 - [
b373202efc] - (SEMVER-MINOR) esm: add--experimental-import-textflag (Efe) #62300 - [
eacfbd0ca5] - http: add CONNECT method handling for default Host header with proxy (Archkon) #64114 - [
aeb539a383] - http: fix drain event with cork/uncork (David Evans) #64038 - [
8e8874b216] - http: document and validate options.path when it's in absolute-form (Joyee Cheung) #64108 - [
eb2e96bc28] - inspector: fix crash when writing to closed inspector socket (ympark2011) #64209 - [
243b0e4e57] - lib: reject string "0" in validatePort when allowZero is false (Daijiro Wachi) #64174 - [
34a537c0ed] - lib: use__proto__: nullwhen callingObjectDefineProperty(Antoine du Hamel) #64239 - [
1f72393f19] - lib: lazily initialize kEvents and kHandlers maps (Guilherme Araújo) #63702 - [
92a3dc3191] - lib,permission: fix addon permission drop (Martin Wagner) #64007 - [
87b8f2a296] - meta: fix linter warning instale.yml(Antoine du Hamel) #64281 - [
829c4a5913] - meta: bump actions/cache from 5.0.5 to 6.1.0 (dependabot[bot]) #64248 - [
0808dcd31c] - meta: bump github/codeql-action/autobuild from 4.36.1 to 4.36.2 (dependabot[bot]) #64247 - [
64aa17058f] - meta: bump github/codeql-action/analyze from 4.36.1 to 4.36.2 (dependabot[bot]) #64246 - [
873d1e0412] - meta: bump actions/checkout from 6.0.2 to 7.0.0 (dependabot[bot]) #64245 - [
fe460ccf0b] - meta: bump codecov/codecov-action from 6.0.1 to 7.0.0 (dependabot[bot]) #64244 - [
845c63ed50] - meta: bump rtCamp/action-slack-notify from 2.3.3 to 2.4.0 (dependabot[bot]) #64243 - [
2cad2d6de5] - meta: bump github/codeql-action/init from 4.36.1 to 4.36.2 (dependabot[bot]) #64242 - [
0ddde950c7] - meta: bump actions/setup-python from 6.2.0 to 6.3.0 (dependabot[bot]) #64241 - [
c0a8760d2f] - meta: bump github/codeql-action/upload-sarif from 4.36.1 to 4.36.2 (dependabot[bot]) #64240 - [
f49704b9d0] - meta: clarify V8 flags are outside threat model (Matteo Collina) #64224 - [
6b8dc58e6e] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #64057 - [
fe5260cca7] - meta: update status of past strategic initiatives (Joyee Cheung) #63480 - [
7b01040008] - meta: speed up stale bot (Aviv Keller) #64075 - [
874c46c24f] - meta: update sccache version in test-linux-quic (René) #64043 - [
48c5c86363] - module: enable import support for addons by default (Chengzhong Wu) #64221 - [
39e0c14455] - (SEMVER-MINOR) perf_hooks: sample delay per event loop iteration (Pablo Erhard) #62935 - [
f90f1bd032] - perf_hooks: add NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP constant (Attila Szegedi) #63877 - [
bdf32628c7] - process: fix finalization cleanup ref tracking (Trivikram Kamat) #64087 - [
9a65b7fff4] - quic: drop version negotiation packets with oversized CIDs (Mohamed Sayed) #64228 - [
2699fe4706] - quic: fixes undefined handle in QuicStream kInspect (Marten Richter) #64170 - [
00dea28bb3] - repl: lazy-load acorn and defer vm context creation (Daijiro Wachi) #63879 - [
ce659a1cf9] - src: fix escaping of single quotes in task runner (Antoine du Hamel) #64089 - [
dbb3126e5c] - src: abstract tracing agent for both legacy and perfetto (Chengzhong Wu) #64053 - [
12edf1d68d] - src: avoid redundant call tostd::get_if<>()(Tobias Nießen) #64094 - [
eda91b6d01] - src: avoid copying source string in TextEncoder.encode (Yagiz Nizipli) #63897 - [
efbbb9a03c] - stream: preserve half-open duplexes in async iteration (Efe) #64275 - [
999a83c937] - (SEMVER-MINOR) stream: expose ReadableStreamTee (Matteo Collina) #64195 - [
ab5ed72903] - stream: reject iter consumers on abort (Trivikram Kamat) #64066 - [
d3fa77c5e2] - stream: fix merge abort for pending sources (Trivikram Kamat) #64013 - [
38b99140ed] - stream: refactor unnecessary optional chaining away (Antoine du Hamel) #64253 - [
c81f894ebe] - stream: cut per-chunk overhead in WHATWG streams (Matteo Collina) #64252 - [
f162234f24] - stream: normalize Broadcast.from() byte inputs (Trivikram Kamat) #64082 - [
1182ad8f3b] - stream: proxy first own method in Readable.wrap() (Daijiro Wachi) #64048 - [
d0b830b382] - stream: observe abort while awaiting pipeTo source (Trivikram Kamat) #64015 - [
f7adcd8359] - stream: respect iter consumer abort signals (Trivikram Kamat) #63997 - [
b09e624c6f] - test: make blob desiredSize assertion robust (Trivikram Kamat) #64106 - [
d0d8f0c774] - test: update WPT for urlpattern to 11a459a2b1 (Node.js GitHub Bot) #64037 - [
ff9122c20c] - test: improve lcov reporter snapshot diagnostics (Trivikram Kamat) #64049 - [
570952d4f3] - test: keep finalization close fixture ref alive (Trivikram Kamat) #64085 - [
1b4f213380] - test: fix typo from overriden to overridden (parkhojeong) #63403 - [
4c91090b8b] - test: fix typo from funciton to function (parkhojeong) #63403 - [
bf080c7917] - test: mark hr-time WPT flaky on macos15-x64 (Trivikram Kamat) #64054 - [
24e32098c5] - test: use one-off agent in http consumed timeout test (Trivikram Kamat) #64052 - [
3229886de2] - test: fix flaky test-runner coverage threshold test (Trivikram Kamat) #64051 - [
83b91ea6ec] - test_runner: filter execArgv fallback for child tests (Trivikram Kamat) #64056 - [
269b609a3d] - test_runner: improve coverage failure diagnostics (Trivikram Kamat) #64050 - [
0342744c34] - test_runner: add timestamp to JUnit reporter testsuites (sangwook) #64029 - [
086741d121] - timers: reuse Timeout objects in setStreamTimeout (Matteo Collina) #64254 - [
4e0236dc3d] - (SEMVER-MINOR) tls: report negotiated TLS groups (Filip Skokan) #64119 - [
3bdd7e20be] - tls: handle large RSA exponents in X.509 cert (Tobias Nießen) #64093 - [
c96c838977] - tools: update RUSTC_VERSION for remaining GHA workflows (René) #64325 - [
ee873b7aaf] - tools: bumptemporal_rsversion (Antoine du Hamel) #63281 - [
ea3b870155] - tools: removeenvinfofrom our workflows (Antoine du Hamel) #64259 - [
d940f02e8b] - tools: bump the eslint group in /tools/eslint with 8 updates (dependabot[bot]) #64249 - [
fe0ea2bb5d] - tools: bump @node-core/doc-kit (dependabot[bot]) #64010 - [
4dceefde1e] - tools: bump undici from 6.24.1 to 6.27.0 in /tools/doc (dependabot[bot]) #64031 - [
6e187db7d7] - tools: update c-ares updater script (Antoine du Hamel) #64194 - [
657a35f5a2] - tools: validate version number in release proposal commit message lint (Antoine du Hamel) #64070 - [
17228a861c] - tools: add GHA benchmark runner (Antoine du Hamel) #60293 - [
6d11a71d91] - tools: updatebuild-shared/action.ymlto a reusable workflow (Antoine du Hamel) #64059 - [
7a17c50b7f] - tools: update libffi updater script (Antoine du Hamel) #64046 - [
28047a3e71] - tools: excludelibffichanges fromtest-sharedGHA CI (Antoine du Hamel) #64047 - [
58d9685acc] - typings: add typing for crypto (Filip Skokan) #64122 - [
7a9dcad44d] - util: fix OOM in inspect color stack formatting (Ijtihed Kilani) #64022 - [
d5f01bbbde] - vfs: reject rename into descendant directory (Trivikram Kamat) #64285 - [
0b6af91081] - vfs: handle current-position sentinel in memory files (Trivikram Kamat) #64163 - [
322230d641] - vfs: support writeFileSync with virtual fds (Trivikram Kamat) #64165 - [
9395d209c7] - vfs: avoid recursive readdir symlink cycles (Matteo Collina) #64168 - [
bbdd7643b6] - vfs: read RealFSProvider files from open fd (Trivikram Kamat) #64104 - [
92859b8097] - vm: fix copying PropertyDescriptor (Chengzhong Wu) #64073 - [
9046035475] - zlib: validate flush king for all streams (Ic3b3rg) #63746 - [
98be4304a3] - zlib: validate flush kind for brotli streams (Ic3b3rg) #63746 - [
90007a59a9] - zlib: expose rejectGarbageAfterEnd option (Filip Skokan) #64023 - [
5933516066] - zlib: reject trailing gzip members in web streams (Filip Skokan) #64023
v2.7.1
- Fix nondeterminsitic tests caused by JSON order issues by @yonghanlin in https://github.com/apache/shenyu/pull/6232
- Fixed non deterministic test caused by Json Ordering by @annhchen89 in https://github.com/apache/shenyu/pull/6229
- Fix mcp server real url error by @478320 in https://github.com/apache/shenyu/pull/6228
- Fix nondeterminism of the order of query parameters in HttpUtilsTest by @yonghanlin in https://github.com/apache/shenyu/pull/6230
- fix field-sqlmap.xml database reserved keywords by @2823602869 in https://github.com/apache/shenyu/pull/6233
- Release/merge 2.7.0.3 by @Aias00 in https://github.com/apache/shenyu/pull/6237
- fix get the argument position mapping error and test method by @MaMengzhen in https://github.com/apache/shenyu/pull/6236
- Fix Order Dependent Test in JsonMessageTest by @annhchen89 in https://github.com/apache/shenyu/pull/6244
- [Fix] the selector and rule pagination non-functional (#6239) by @VampireAchao in https://github.com/apache/shenyu/pull/6243
- Fix Order Dependent Test in AiPromptPluginDataHandlerTest by @annhchen89 in https://github.com/apache/shenyu/pull/6245
- Fix non deterministic test caused by HashMap by @annhchen89 in https://github.com/apache/shenyu/pull/6246
- Enhance index method to build base URL from HTTP request, supporting reverse proxy scenarios by @Aias00 in https://github.com/apache/shenyu/pull/6247
- modify loadbalancer by @yu199195 in https://github.com/apache/shenyu/pull/6251
- feat: Introduce request body size limit, enhance AI proxy plugin's ChatClient caching with config hash, and refine prompt extraction from the request body. by @Aias00 in https://github.com/apache/shenyu/pull/6248
- fix ai proxy key by @Aias00 in https://github.com/apache/shenyu/pull/6249
- Refactor EtcdClient and RedisConnectionFactory for improved readability and maintainability by @Aias00 in https://github.com/apache/shenyu/pull/6250
- feat: Enhance IpUtils with Docker support, improved IP filtering by @Aias00 in https://github.com/apache/shenyu/pull/6253
- fix mcp tool sample error by @MaMengzhen in https://github.com/apache/shenyu/pull/6259
- infra: refactor infra zk module by @yuluo-yx in https://github.com/apache/shenyu/pull/6199
- feat: Rename ai proxy enhanced module to ai proxy and update related files by @Aias00 in https://github.com/apache/shenyu/pull/6260
- fix NettyHttpClientPlugin doRequest response unique headers error by @MaMengzhen in https://github.com/apache/shenyu/pull/6258
- fix 'addCustomHeaders' header value replace bug by @MaMengzhen in https://github.com/apache/shenyu/pull/6257
- Fix order dependent test in Resilience4JPluginTest by @annhchen89 in https://github.com/apache/shenyu/pull/6261
- test(#5161): Improve test coverage for VersionUtils by @airajena in https://github.com/apache/shenyu/pull/6264
- [#6262] Fix OrderlyExecutor resource leak in shenyu-disruptor by @airajena in https://github.com/apache/shenyu/pull/6269
- Fix: Set isClosing flag in closeGracefully method as documented by @airajena in https://github.com/apache/shenyu/pull/6263
- fix add custom headers error by @MaMengzhen in https://github.com/apache/shenyu/pull/6268
- [ISSUE #6235] Set upstream check for each upstream. by @jonasHanhan in https://github.com/apache/shenyu/pull/6272
- fix mcp config shenyu context error by @MaMengzhen in https://github.com/apache/shenyu/pull/6266
- [type:fix] fix database init script by @eye-gu in https://github.com/apache/shenyu/pull/6277
- chore(deps): bump org.assertj:assertj-core from 3.22.0 to 3.27.7 in /shenyu-e2e by @dependabot[bot] in https://github.com/apache/shenyu/pull/6278
- Fix: Preserve Gateway's independent upstream health check state when receiving config updates from Admin by @guanzhenxing in https://github.com/apache/shenyu/pull/6274
- [Vulnerability Fix] Harden Docker images to run as non-root user by @RinZ27 in https://github.com/apache/shenyu/pull/6273
- feat: Add new role search criteria by @yangyx107 in https://github.com/apache/shenyu/pull/6282
- feat:sync dashboard. by @yangyx107 in https://github.com/apache/shenyu/pull/6283
- fix: handle tool not found error and update requestConfig type to JsonElement by @Aias00 in https://github.com/apache/shenyu/pull/6284
- [type:fix] set open by @eye-gu in https://github.com/apache/shenyu/pull/6280
- feat:modify instance createOrUpdate method log level by @yangyx107 in https://github.com/apache/shenyu/pull/6285
- replace stream().forEach() to forEach() by @VampireAchao in https://github.com/apache/shenyu/pull/6275
- fix: fix GsonUtils concurrent serialization exceptions (#6286) by @fanpipi in https://github.com/apache/shenyu/pull/6287
- fix: enhance logging and improve request handling in HTTP client plugins by @Aias00 in https://github.com/apache/shenyu/pull/6288
- fix mcp streamable by @Aias00 in https://github.com/apache/shenyu/pull/6289
- feat: refactor aiRequest and aiResponse models to support asynchronou… by @478320 in https://github.com/apache/shenyu/pull/6296
- feat: add CORS support with configurable allowed headers in MCP server by @Aias00 in https://github.com/apache/shenyu/pull/6295
- fix: improve upstream cache management and add recovery test for empty events by @Aias00 in https://github.com/apache/shenyu/pull/6294
- fix: improve MCP server plugin path handling and backward compatibility for argsPosition by @Aias00 in https://github.com/apache/shenyu/pull/6293
- Fix: loggion console add rule bug by @yangyx107 in https://github.com/apache/shenyu/pull/6291
- [type:fix] close java 18 ci by @moremind in https://github.com/apache/shenyu/pull/6306
- [type:refactor] remove shenyu trie cache by @moremind in https://github.com/apache/shenyu/pull/6303
- chore(deps): bump oshi from 6.7.0 to 6.10.0 by @yangpixi in https://github.com/apache/shenyu/pull/6301
- chore(deps): bump org.apache.zookeeper:zookeeper from 3.9.4 to 3.9.5 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6302
- fix: replace Collections.EMPTY_MAP with Collections.emptyMap() by @Senrian in https://github.com/apache/shenyu/pull/6299
- Fix: RuleServiceImpl#searchByPage() Selectors now populated from namespace only when condition selectors are null or empty. by @bruce121 in https://github.com/apache/shenyu/pull/6305
- [type:fix] Align PluginEnum sort values with DB schema.sql by @bwangll in https://github.com/apache/shenyu/pull/6311
- infra(ci): add CI action condition by @yuluo-yx in https://github.com/apache/shenyu/pull/6316
- feat(mcp-server): enhance SDK compatibility with reflection caching and error handling by @Aias00 in https://github.com/apache/shenyu/pull/6312
- Align SSRF URL validation with OkHttp parsing by @Aias00 in https://github.com/apache/shenyu/pull/6321
- Hide registry passwords from admin API responses by @Aias00 in https://github.com/apache/shenyu/pull/6322
- Block redirect-based SSRF bypass in Swagger imports by @Aias00 in https://github.com/apache/shenyu/pull/6320
- Fix missing RBAC on selector, rule, and data-permission endpoints by @Aias00 in https://github.com/apache/shenyu/pull/6319
- Ci update cache by @2823602869 in https://github.com/apache/shenyu/pull/6325
- chore(deps): bump org.apache.kafka:kafka-clients from 3.9.1 to 3.9.2 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6324
- Stop exposing login AES secrets to anonymous callers by @Aias00 in https://github.com/apache/shenyu/pull/6323
- chore(deps): bump org.bouncycastle:bcprov-jdk18on from 1.78 to 1.84 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6331
- test(task#5161): improve test coverage for sync. by @wy471x in https://github.com/apache/shenyu/pull/6333
- test(task#5161): improve test coverage for admin. by @wy471x in https://github.com/apache/shenyu/pull/6328
- [fix]: Fix ReactorNettyWebSocketClient builder reuse in WebSocket plugin configuration by @zhaoguhong in https://github.com/apache/shenyu/pull/6330
- chore(deps): bump com.sun.mail:jakarta.mail from 2.0.1 to 2.0.2 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6329
- Fix duplicate full-mode URI heartbeat registration after repeated refresh by @Aias00 in https://github.com/apache/shenyu/pull/6337
- [type:refactor] remove motan support by @Aias00 in https://github.com/apache/shenyu/pull/6307
- fix: correct instanceof check in addFailureUriDataRegister by @eye-gu in https://github.com/apache/shenyu/pull/6345
- fix(ai-prompt): preserve all original messages in decorateBody by @eye-gu in https://github.com/apache/shenyu/pull/6343
- fix: replace ArrayList with CopyOnWriteArrayList to avoid ConcurrentM… by @eye-gu in https://github.com/apache/shenyu/pull/6352
- fix: eliminate race condition in UpstreamCheckServiceTest.testReplace by @eye-gu in https://github.com/apache/shenyu/pull/6355
- Fix README documentation links by @SPUERSAIYAN in https://github.com/apache/shenyu/pull/6357
- Codex/fix sandbox response leak by @SPUERSAIYAN in https://github.com/apache/shenyu/pull/6359
- Stabilize k8s ingress startup healthchecks by @Aias00 in https://github.com/apache/shenyu/pull/6361
- Stabilize Sentinel integrated rate-limit assertions by @Aias00 in https://github.com/apache/shenyu/pull/6374
- Stabilize HTTP E2E compose startup readiness by @Aias00 in https://github.com/apache/shenyu/pull/6363
- Stabilize Sentinel integrated test assertions by @Aias00 in https://github.com/apache/shenyu/pull/6377
- [ISSUE 6334] : Add uri validation for regex and other operators. by @hengyuss in https://github.com/apache/shenyu/pull/6335
- [ISSUE #5856] Support configurable max-initial-line-length for HTTP request decoder by @hqbhonker in https://github.com/apache/shenyu/pull/6378
- Fix RocketMQ logging e2e bootstrap startup by @Aias00 in https://github.com/apache/shenyu/pull/6379
- fix(request): make add operations append existing values by @SouthwestAsiaFloat in https://github.com/apache/shenyu/pull/6375
- fix: skip request body for GET and HEAD requests by @zongmingzhi in https://github.com/apache/shenyu/pull/6350
- fix(ci): remove maven cache save to avoid incomplete cache pollution by @eye-gu in https://github.com/apache/shenyu/pull/6383
- [type:refactor] replace inactive wasmtime-java with chicory pure-Java WASM runtime by @eye-gu in https://github.com/apache/shenyu/pull/6356
- Prerelease/fix license by @Aias00 in https://github.com/apache/shenyu/pull/6387
- fix:fix local springmvc client cant register success by @hengyuss in https://github.com/apache/shenyu/pull/6395
- fix: DividePlugin specify-domain header to prevent cache pollution an… by @hengyuss in https://github.com/apache/shenyu/pull/6412
- fix: Enforce account enabled check on every authenticated request in … by @hengyuss in https://github.com/apache/shenyu/pull/6415
- fix(admin): limit swagger import response body size by @SouthwestAsiaFloat in https://github.com/apache/shenyu/pull/6411
- fix: Add decompression size limits to ZipUtil.unzip()[#6400] by @hengyuss in https://github.com/apache/shenyu/pull/6416
- fix: add mounts for external libraries in docker-compose to prevent startup issues (missing database connector driver) when using an external database datasource other than H2 (#6389) by @exyb in https://github.com/apache/shenyu/pull/6391
- [fix] Add missing permission annotations to /appAuth/updateSk and /sandbox/proxyGateway by @Aias00 in https://github.com/apache/shenyu/pull/6388
- Require permission for namespace plugin sync by @Aias00 in https://github.com/apache/shenyu/pull/6384
- fix: use come.google.re2j replace java.util.regex in RegexPredicateJu… by @hengyuss in https://github.com/apache/shenyu/pull/6410
- fix: Remove appSecret from sandbox-beforesign response header[#6402] by @hengyuss in https://github.com/apache/shenyu/pull/6417
- @yonghanlin made their first contribution in https://github.com/apache/shenyu/pull/6232
- @annhchen89 made their first contribution in https://github.com/apache/shenyu/pull/6229
- @2823602869 made their first contribution in https://github.com/apache/shenyu/pull/6233
- @airajena made their first contribution in https://github.com/apache/shenyu/pull/6264
- @jonasHanhan made their first contribution in https://github.com/apache/shenyu/pull/6272
- @RinZ27 made their first contribution in https://github.com/apache/shenyu/pull/6273
- @yangyx107 made their first contribution in https://github.com/apache/shenyu/pull/6282
- @fanpipi made their first contribution in https://github.com/apache/shenyu/pull/6287
- @yangpixi made their first contribution in https://github.com/apache/shenyu/pull/6301
- @Senrian made their first contribution in https://github.com/apache/shenyu/pull/6299
- @bruce121 made their first contribution in https://github.com/apache/shenyu/pull/6305
- @bwangll made their first contribution in https://github.com/apache/shenyu/pull/6311
- @wy471x made their first contribution in https://github.com/apache/shenyu/pull/6333
- @SPUERSAIYAN made their first contribution in https://github.com/apache/shenyu/pull/6357
- @hengyuss made their first contribution in https://github.com/apache/shenyu/pull/6335
- @hqbhonker made their first contribution in https://github.com/apache/shenyu/pull/6378
- @SouthwestAsiaFloat made their first contribution in https://github.com/apache/shenyu/pull/6375
- @exyb made their first contribution in https://github.com/apache/shenyu/pull/6391
Full Changelog: https://github.com/apache/shenyu/compare/v2.7.0.3...v2.7.1
v2.7.1
- Fix nondeterminsitic tests caused by JSON order issues by @yonghanlin in https://github.com/apache/shenyu/pull/6232
- Fixed non deterministic test caused by Json Ordering by @annhchen89 in https://github.com/apache/shenyu/pull/6229
- Fix mcp server real url error by @478320 in https://github.com/apache/shenyu/pull/6228
- Fix nondeterminism of the order of query parameters in HttpUtilsTest by @yonghanlin in https://github.com/apache/shenyu/pull/6230
- fix field-sqlmap.xml database reserved keywords by @2823602869 in https://github.com/apache/shenyu/pull/6233
- Release/merge 2.7.0.3 by @Aias00 in https://github.com/apache/shenyu/pull/6237
- fix get the argument position mapping error and test method by @MaMengzhen in https://github.com/apache/shenyu/pull/6236
- Fix Order Dependent Test in JsonMessageTest by @annhchen89 in https://github.com/apache/shenyu/pull/6244
- [Fix] the selector and rule pagination non-functional (#6239) by @VampireAchao in https://github.com/apache/shenyu/pull/6243
- Fix Order Dependent Test in AiPromptPluginDataHandlerTest by @annhchen89 in https://github.com/apache/shenyu/pull/6245
- Fix non deterministic test caused by HashMap by @annhchen89 in https://github.com/apache/shenyu/pull/6246
- Enhance index method to build base URL from HTTP request, supporting reverse proxy scenarios by @Aias00 in https://github.com/apache/shenyu/pull/6247
- modify loadbalancer by @yu199195 in https://github.com/apache/shenyu/pull/6251
- feat: Introduce request body size limit, enhance AI proxy plugin's ChatClient caching with config hash, and refine prompt extraction from the request body. by @Aias00 in https://github.com/apache/shenyu/pull/6248
- fix ai proxy key by @Aias00 in https://github.com/apache/shenyu/pull/6249
- Refactor EtcdClient and RedisConnectionFactory for improved readability and maintainability by @Aias00 in https://github.com/apache/shenyu/pull/6250
- feat: Enhance IpUtils with Docker support, improved IP filtering by @Aias00 in https://github.com/apache/shenyu/pull/6253
- fix mcp tool sample error by @MaMengzhen in https://github.com/apache/shenyu/pull/6259
- infra: refactor infra zk module by @yuluo-yx in https://github.com/apache/shenyu/pull/6199
- feat: Rename ai proxy enhanced module to ai proxy and update related files by @Aias00 in https://github.com/apache/shenyu/pull/6260
- fix NettyHttpClientPlugin doRequest response unique headers error by @MaMengzhen in https://github.com/apache/shenyu/pull/6258
- fix 'addCustomHeaders' header value replace bug by @MaMengzhen in https://github.com/apache/shenyu/pull/6257
- Fix order dependent test in Resilience4JPluginTest by @annhchen89 in https://github.com/apache/shenyu/pull/6261
- test(#5161): Improve test coverage for VersionUtils by @airajena in https://github.com/apache/shenyu/pull/6264
- [#6262] Fix OrderlyExecutor resource leak in shenyu-disruptor by @airajena in https://github.com/apache/shenyu/pull/6269
- Fix: Set isClosing flag in closeGracefully method as documented by @airajena in https://github.com/apache/shenyu/pull/6263
- fix add custom headers error by @MaMengzhen in https://github.com/apache/shenyu/pull/6268
- [ISSUE #6235] Set upstream check for each upstream. by @jonasHanhan in https://github.com/apache/shenyu/pull/6272
- fix mcp config shenyu context error by @MaMengzhen in https://github.com/apache/shenyu/pull/6266
- [type:fix] fix database init script by @eye-gu in https://github.com/apache/shenyu/pull/6277
- chore(deps): bump org.assertj:assertj-core from 3.22.0 to 3.27.7 in /shenyu-e2e by @dependabot[bot] in https://github.com/apache/shenyu/pull/6278
- Fix: Preserve Gateway's independent upstream health check state when receiving config updates from Admin by @guanzhenxing in https://github.com/apache/shenyu/pull/6274
- [Vulnerability Fix] Harden Docker images to run as non-root user by @RinZ27 in https://github.com/apache/shenyu/pull/6273
- feat: Add new role search criteria by @yangyx107 in https://github.com/apache/shenyu/pull/6282
- feat:sync dashboard. by @yangyx107 in https://github.com/apache/shenyu/pull/6283
- fix: handle tool not found error and update requestConfig type to JsonElement by @Aias00 in https://github.com/apache/shenyu/pull/6284
- [type:fix] set open by @eye-gu in https://github.com/apache/shenyu/pull/6280
- feat:modify instance createOrUpdate method log level by @yangyx107 in https://github.com/apache/shenyu/pull/6285
- replace stream().forEach() to forEach() by @VampireAchao in https://github.com/apache/shenyu/pull/6275
- fix: fix GsonUtils concurrent serialization exceptions (#6286) by @fanpipi in https://github.com/apache/shenyu/pull/6287
- fix: enhance logging and improve request handling in HTTP client plugins by @Aias00 in https://github.com/apache/shenyu/pull/6288
- fix mcp streamable by @Aias00 in https://github.com/apache/shenyu/pull/6289
- feat: refactor aiRequest and aiResponse models to support asynchronou… by @478320 in https://github.com/apache/shenyu/pull/6296
- feat: add CORS support with configurable allowed headers in MCP server by @Aias00 in https://github.com/apache/shenyu/pull/6295
- fix: improve upstream cache management and add recovery test for empty events by @Aias00 in https://github.com/apache/shenyu/pull/6294
- fix: improve MCP server plugin path handling and backward compatibility for argsPosition by @Aias00 in https://github.com/apache/shenyu/pull/6293
- Fix: loggion console add rule bug by @yangyx107 in https://github.com/apache/shenyu/pull/6291
- [type:fix] close java 18 ci by @moremind in https://github.com/apache/shenyu/pull/6306
- [type:refactor] remove shenyu trie cache by @moremind in https://github.com/apache/shenyu/pull/6303
- chore(deps): bump oshi from 6.7.0 to 6.10.0 by @yangpixi in https://github.com/apache/shenyu/pull/6301
- chore(deps): bump org.apache.zookeeper:zookeeper from 3.9.4 to 3.9.5 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6302
- fix: replace Collections.EMPTY_MAP with Collections.emptyMap() by @Senrian in https://github.com/apache/shenyu/pull/6299
- Fix: RuleServiceImpl#searchByPage() Selectors now populated from namespace only when condition selectors are null or empty. by @bruce121 in https://github.com/apache/shenyu/pull/6305
- [type:fix] Align PluginEnum sort values with DB schema.sql by @bwangll in https://github.com/apache/shenyu/pull/6311
- infra(ci): add CI action condition by @yuluo-yx in https://github.com/apache/shenyu/pull/6316
- feat(mcp-server): enhance SDK compatibility with reflection caching and error handling by @Aias00 in https://github.com/apache/shenyu/pull/6312
- Align SSRF URL validation with OkHttp parsing by @Aias00 in https://github.com/apache/shenyu/pull/6321
- Hide registry passwords from admin API responses by @Aias00 in https://github.com/apache/shenyu/pull/6322
- Block redirect-based SSRF bypass in Swagger imports by @Aias00 in https://github.com/apache/shenyu/pull/6320
- Fix missing RBAC on selector, rule, and data-permission endpoints by @Aias00 in https://github.com/apache/shenyu/pull/6319
- Ci update cache by @2823602869 in https://github.com/apache/shenyu/pull/6325
- chore(deps): bump org.apache.kafka:kafka-clients from 3.9.1 to 3.9.2 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6324
- Stop exposing login AES secrets to anonymous callers by @Aias00 in https://github.com/apache/shenyu/pull/6323
- chore(deps): bump org.bouncycastle:bcprov-jdk18on from 1.78 to 1.84 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6331
- test(task#5161): improve test coverage for sync. by @wy471x in https://github.com/apache/shenyu/pull/6333
- test(task#5161): improve test coverage for admin. by @wy471x in https://github.com/apache/shenyu/pull/6328
- [fix]: Fix ReactorNettyWebSocketClient builder reuse in WebSocket plugin configuration by @zhaoguhong in https://github.com/apache/shenyu/pull/6330
- chore(deps): bump com.sun.mail:jakarta.mail from 2.0.1 to 2.0.2 by @dependabot[bot] in https://github.com/apache/shenyu/pull/6329
- Fix duplicate full-mode URI heartbeat registration after repeated refresh by @Aias00 in https://github.com/apache/shenyu/pull/6337
- [type:refactor] remove motan support by @Aias00 in https://github.com/apache/shenyu/pull/6307
- fix: correct instanceof check in addFailureUriDataRegister by @eye-gu in https://github.com/apache/shenyu/pull/6345
- fix(ai-prompt): preserve all original messages in decorateBody by @eye-gu in https://github.com/apache/shenyu/pull/6343
- fix: replace ArrayList with CopyOnWriteArrayList to avoid ConcurrentM… by @eye-gu in https://github.com/apache/shenyu/pull/6352
- fix: eliminate race condition in UpstreamCheckServiceTest.testReplace by @eye-gu in https://github.com/apache/shenyu/pull/6355
- Fix README documentation links by @SPUERSAIYAN in https://github.com/apache/shenyu/pull/6357
- Codex/fix sandbox response leak by @SPUERSAIYAN in https://github.com/apache/shenyu/pull/6359
- Stabilize k8s ingress startup healthchecks by @Aias00 in https://github.com/apache/shenyu/pull/6361
- Stabilize Sentinel integrated rate-limit assertions by @Aias00 in https://github.com/apache/shenyu/pull/6374
- Stabilize HTTP E2E compose startup readiness by @Aias00 in https://github.com/apache/shenyu/pull/6363
- Stabilize Sentinel integrated test assertions by @Aias00 in https://github.com/apache/shenyu/pull/6377
- [ISSUE 6334] : Add uri validation for regex and other operators. by @hengyuss in https://github.com/apache/shenyu/pull/6335
- [ISSUE #5856] Support configurable max-initial-line-length for HTTP request decoder by @hqbhonker in https://github.com/apache/shenyu/pull/6378
- Fix RocketMQ logging e2e bootstrap startup by @Aias00 in https://github.com/apache/shenyu/pull/6379
- fix(request): make add operations append existing values by @SouthwestAsiaFloat in https://github.com/apache/shenyu/pull/6375
- fix: skip request body for GET and HEAD requests by @zongmingzhi in https://github.com/apache/shenyu/pull/6350
- fix(ci): remove maven cache save to avoid incomplete cache pollution by @eye-gu in https://github.com/apache/shenyu/pull/6383
- [type:refactor] replace inactive wasmtime-java with chicory pure-Java WASM runtime by @eye-gu in https://github.com/apache/shenyu/pull/6356
- Prerelease/fix license by @Aias00 in https://github.com/apache/shenyu/pull/6387
- fix:fix local springmvc client cant register success by @hengyuss in https://github.com/apache/shenyu/pull/6395
- fix: DividePlugin specify-domain header to prevent cache pollution an… by @hengyuss in https://github.com/apache/shenyu/pull/6412
- fix: Enforce account enabled check on every authenticated request in … by @hengyuss in https://github.com/apache/shenyu/pull/6415
- fix(admin): limit swagger import response body size by @SouthwestAsiaFloat in https://github.com/apache/shenyu/pull/6411
- fix: Add decompression size limits to ZipUtil.unzip()[#6400] by @hengyuss in https://github.com/apache/shenyu/pull/6416
- fix: add mounts for external libraries in docker-compose to prevent startup issues (missing database connector driver) when using an external database datasource other than H2 (#6389) by @exyb in https://github.com/apache/shenyu/pull/6391
- [fix] Add missing permission annotations to /appAuth/updateSk and /sandbox/proxyGateway by @Aias00 in https://github.com/apache/shenyu/pull/6388
- Require permission for namespace plugin sync by @Aias00 in https://github.com/apache/shenyu/pull/6384
- fix: use come.google.re2j replace java.util.regex in RegexPredicateJu… by @hengyuss in https://github.com/apache/shenyu/pull/6410
- fix: Remove appSecret from sandbox-beforesign response header[#6402] by @hengyuss in https://github.com/apache/shenyu/pull/6417
- @yonghanlin made their first contribution in https://github.com/apache/shenyu/pull/6232
- @annhchen89 made their first contribution in https://github.com/apache/shenyu/pull/6229
- @2823602869 made their first contribution in https://github.com/apache/shenyu/pull/6233
- @airajena made their first contribution in https://github.com/apache/shenyu/pull/6264
- @jonasHanhan made their first contribution in https://github.com/apache/shenyu/pull/6272
- @RinZ27 made their first contribution in https://github.com/apache/shenyu/pull/6273
- @yangyx107 made their first contribution in https://github.com/apache/shenyu/pull/6282
- @fanpipi made their first contribution in https://github.com/apache/shenyu/pull/6287
- @yangpixi made their first contribution in https://github.com/apache/shenyu/pull/6301
- @Senrian made their first contribution in https://github.com/apache/shenyu/pull/6299
- @bruce121 made their first contribution in https://github.com/apache/shenyu/pull/6305
- @bwangll made their first contribution in https://github.com/apache/shenyu/pull/6311
- @wy471x made their first contribution in https://github.com/apache/shenyu/pull/6333
- @SPUERSAIYAN made their first contribution in https://github.com/apache/shenyu/pull/6357
- @hengyuss made their first contribution in https://github.com/apache/shenyu/pull/6335
- @hqbhonker made their first contribution in https://github.com/apache/shenyu/pull/6378
- @SouthwestAsiaFloat made their first contribution in https://github.com/apache/shenyu/pull/6375
- @exyb made their first contribution in https://github.com/apache/shenyu/pull/6391
Full Changelog: https://github.com/apache/shenyu/compare/v2.7.0.3...v2.7.1
v4.0.0
Zuul 4.0.0 replaces the RxJava Observable based async filter execution with CompletableFuture. RxJava 1.x is long past end-of-life, and moving to CompletableFuture lets the filter runner drop its custom RxJava Scheduler and Observer for plain JDK primitives.
ZuulFilter.applyAsyncnow returnsCompletableFuture<O>instead ofObservable<O>. The Observable-based method is renamed toapplyAsyncObservableand deprecated. Both have default bridge implementations on the interface, so a filter can override either one (#2075)- The
debugRouting/debugRequestinfrastructure is removed (#2078) - Connection draining is now event-based rather than channel-attribute based (#2161). Zuul-core fires a
ConnectionCloseEventdown the pipeline instead of setting a channel attribute that every write has to check, so a graceful shutdown starts immediately on the event instead of waiting for the next response (an idle HTTP/1.1 connection can be closed right away), and OOS closes get random jitter to spread them out. The close handlers were reworked andCLOSE_AFTER_RESPONSEwas removed - see Connection draining below SessionContextno longer extendsHashMap<String, Object>; it now wraps one via composition (#2171) and is@NullMarked(#2174). The commonMapmethods are re-exposed directly, but code that relied on it being aMapneeds updating, and nullmarking turns the accessors@Nullablewhich can surface new NullAway warnings in consumers. ThegetRouteHost/setRouteHost/removeRouteHostaccessors are removed - use the genericget/setwith your ownKey<T>.
A filter overriding applyAsync to return an Observable will not compile against 4.0.0. The minimal fix is a one-line rename:
Before:
@Override
public Observable<HttpResponseMessage> applyAsync(HttpRequestMessage request) {
return service.call(request).map(this::toResponse);
}
After:
@Override
public Observable<HttpResponseMessage> applyAsyncObservable(HttpRequestMessage request) {
return service.call(request).map(this::toResponse);
}
The default applyAsync bridges applyAsyncObservable back to a CompletableFuture, so the rest of the filter keeps working unchanged. The filter should be rewritten to return a CompletableFuture directly and delete applyAsyncObservable. applyAsyncObservable will be removed entirely in a later 4.x release.
Consumers that build their own channel pipelines need small updates:
- The close and expiry handlers moved to the
com.netflix.netty.common.closepackage - HTTP/2 connection close now lives on the connection pipeline, not the stream - drop any stream-level close-handler wiring
CLOSE_AFTER_RESPONSE/ theallow_then_closerejection type is gone; throttled connections just close
Also in this release: lazy hashCode caching (#2085), Objects.requireNonNull / @NonNull over preconditions (#2090), removal of unused classes (#2153), and a switch to typed SessionContext.Key<T> keys instead of stringly-typed context keys, both in the filter runner (#2167) and across SessionContext's own internal state (#2174).
Full Changelog: https://github.com/Netflix/zuul/compare/v3.6.21...v4.0.0
v3.6.21
- build(deps): bump com.uber.nullaway:nullaway from 0.13.1 to 0.13.7 by @dependabot[bot] in https://github.com/Netflix/zuul/pull/2166
- build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in https://github.com/Netflix/zuul/pull/2150
- Upgrade Netty to v4.2.16.Final by @gavinbunney in https://github.com/Netflix/zuul/pull/2175
Full Changelog: https://github.com/Netflix/zuul/compare/v3.6.20...v3.6.21
4.38
Erasure Coding & Scrub
The largest theme — Rust volume-server scrub parity plus EC correctness.
EC scrub
- #10130 Fix scrubbing of deleted needles on EC volumes
- #10144 EC LOCAL needle walk (split from FULL)
- #10147 suppress deleted-needle size mismatch in EC LOCAL scrub
- #10149 EC FULL scrub — distributed local+remote needle walk
- #10152 correct EC FULL scrub for deleted needles, shard-location cache, parity coverage
- #10154 EC bitrot CHECKSUM scrub on the Rust volume server
- #10172 reject oversized bitrot payload before narrowing to u32
- #10176 expose force_deleted_needles_check in ScrubEcVolume RPC and shell
Volume scrub (Rust parity)
- #10141 correct backwards FULL/LOCAL mode comments in Rust
- #10142 align Rust INDEX scrub to Go's idx.CheckIndexFile
- #10143 walk the on-disk .idx in Volume::scrub
- #10148 don't flag offset-0 logical tombstones
EC storage / read paths
- #10140 honor wide EC ratios in Rust read_ec_shard_config
- #10145 search sibling disk locations when rebuilding missing EC shards + .ecx
- #10187 read chunk-manifest chunks stored on EC volumes (Rust)
- #10217 detect truncated .ecx instead of treating it as clean EOF
Rust volume server (non-scrub)
- #10128 parse master lookup when publicUrl is omitted
- #10139 test coverage for type=replicate fan-out writes
- #10189 compare live compaction_revision instead of stale last_compact_revision
- #10233 pin rustls to aws-lc-rs so TLS gRPC startup doesn't panic
Topology, balancing & placement
- #10161 keep physical disk 0 distinct in SplitByPhysicalDisk
- #10166 report empty disks (per-disk type + capacity in heartbeat)
- #10162 volume.balance: gate on real physical disk usage
- #10167 skip physically near-full disks when placing EC shards
- #10169 share replica-placement logic between shell and worker
- #10171 worker: project the moved volume when gating on disk fullness
- #10174 extract the bytes-aware density metric to a shared package
Master
- #10202 let the growth initiator wait instead of shedding itself
- #10226 repair the lookup index after a vacuum that raced a disconnect
Volume server (Go)
- #10185 drop stale volume-location cache on under-replication
- #10229 bound intra-cluster HTTP so an unresponsive peer can't hang reads/writes
S3 API
- #10156 invalidate stale reader-cache locations on chunk read failure
- #10186 return IncompleteBody instead of 500 for truncated PUT bodies
- #10192 embedded IAM inline policy honors prefix-scoped resources
- #10207 surface transient store errors during multipart resume/copy
- #10213 lazy, bounded, entry-free per-bucket caches
- #10214 paginate ListBuckets and serve from a bucket owner index
- #10224 enforce bucket quota on logical size + read-only state in Admin UI
- #10225 answer directory-path probes like AWS (Flink savepoint restore)
- #10236 FULL_OBJECT checksumming for CRC
Filer
- #10158 use DROP TABLE IF EXISTS in SQL stores
- #10190 avoid ReaderCache WaitGroup reuse race between reads and destroy
- #10196 applyStorageDefaultsToEntry before CreateEntry
- #10203 stream offloaded metadata-log entries to fix concurrent-write OOM
- #10232 default filemeta CREATE TABLE for postgres2/mysql2 when unset
- #10234 default cassandra2 timeout and ydb prefix for env-var configs
Admin UI
- #10150 remove non-functional EC repair button
- #10155 restore cluster volume page CSV export
- #10170 respect filerGroup for cluster discovery
- #10175 fix 'send on closed channel' panic in worker gRPC server
- #10227 browse Iceberg table data
Shell commands
- #10126 avoid duplicate volume.list parent headers
- #10129 collection pattern to delete empty volumes
- #10159 honor explicit fs.mergeVolumes from/to direction
- #10204 add ec.shard.unmount command
- #10219 pass collection in ec.shard.unmount --delete request
Remote storage & sync
- #10151 remote/gcs: tolerate already-deleted object in DeleteFile
- #10184 remote.meta.sync: sync directories and remove remote-deleted files
- #10228 add -delete option to remote.copy.local
- #10177 filer.sync.verify: reclassify chunk-slice-order ETag diffs as CHUNK_REORDER
Kubernetes / Helm
- #10198 add certificates.dnsNames for custom SANs in cert-manager certs
- #10205 filer HTTP + gRPC ingress for the Helm chart
- #10223 Traefik IngressRouteTCP for gRPC with TLS passthrough
KMS
- #10173 cache decrypted data keys so cache_enabled/cache_ttl take effect
Core / networking / util
- #10164 centralize genUploadUrl in UploadOption
- #10212 don't let the activity timeout clobber externally-set conn deadlines
Tests & CI
- #10208 fuse-tests: don't declare mount ready before it is mounted
- #10215 fuse-tests: pass glog flags before the mount subcommand
- #10209 keep mini-allocated ports below the ephemeral floor
- @doma17 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10155
- @ycjlin made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10228
- @cole-h made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10236
Full Changelog: https://github.com/seaweedfs/seaweedfs/compare/4.37...4.38
3.2.54
Small patch release with fixes in query engine and hardening in the binary protocol
- fix: correctly handled null position when execute order by using indexes, issue #10807
- Hardening of binary protocol, directly close connection in case of first request miss authentication
orientdb-community-3.2.54.tar.gz orientdb-community-3.2.54.zip