4.43

zeroclaw-labs/zeroclaw4.43Aug 21, 2026by chrislusf

AI Summary

This release introduces a Rust plugin worker for the Lance catalog and upgrades the project to Go 1.26. It also includes significant S3 API fixes for bucket subresources and multipart uploads, along with improved volume server recovery and mount path handling.

Key Highlights

  • Introduction of a Rust plugin worker for Lance catalog maintenance
  • Upgrade to Go 1.26
  • S3 fixes for unrouted bucket subresources and multipart placement
  • Enhanced mount path recovery and Filer metadata subscription handling

New Features

  • Rust plugin worker
  • Go 1.26 upgrade
  • S3 subresource handling improvements
  • Mount recovery enhancements

Full Release Notes

## What's Changed

## S3

* s3: stop unrouted bucket subresources from being answered with a listing by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10814
* S3: stamp the gateway's own uid/gid on PutObject and copy entries by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10844
* s3: place multipart part chunks by the destination object's storage rule by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10845
* s3: allow-unordered is a listing parameter, not an unimplemented subresource by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10846

## Filer

* filer: use bind variables for request-controlled values in the arangodb store by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10795
* filer: close the empty-folder race by checking after each mutation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10799
* filer: stop remote.unmount from deleting the remote objects by @Koalk in https://github.com/seaweedfs/seaweedfs/pull/10811
* fix(filer): bound aggregated metadata reads by peer watermarks by @kisow in https://github.com/seaweedfs/seaweedfs/pull/10803

## Mount

* Recover from a dead volume server on the mount read path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10798
* mount: drop consumed entries when reading a directory through by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10802
* mount: reuse the listed entry's path instead of rebuilding it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10817
* mount: fold an inode's single link into its entry by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10818
* mount: move the inode table when a rename arrives from the cluster by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10822
* mount: index directory state by path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10827
* mount: discard a path-cache insert that raced a purge by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10842

## Read path

* Re-look-up a chunk's locations as soon as they all fail by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10800
* Give the WebDav chunk reader a bounded, invalidatable location cache by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10801

## Volume server and topology

* Guard the gcs credential path in FetchAndWriteNeedle like the other backends by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10796
* volume: forward fsync=true to replicas in ReplicatedWrite by @sunchao6106 in https://github.com/seaweedfs/seaweedfs/pull/10805
* topology: refresh oversized mark on every heartbeat by @sunchao6106 in https://github.com/seaweedfs/seaweedfs/pull/10829

## Rust volume server

* rust: honor fsync on the volume server write path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10816
* rust: stop writing when a durable write's index flush fails by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10825

## Lance catalog and plugin workers

* Lance catalog, and a Rust plugin worker to maintain it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10841
* seaweed-worker: serve health, readiness and metrics by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10848
* metrics: graph the plugin workers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10849
* mini: state the format of a -tableBucket, do not infer it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10851

## gRPC

* Give the local Unix socket gRPC transport room to breathe by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10824

## Kubernetes

* Add monitoring label to filer servicemonitor by @slimes28 in https://github.com/seaweedfs/seaweedfs/pull/10835

## Go 1.26

* Fix what the Go 1.26 language bump breaks by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10794
* go 1.26 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10797

## Tests

* fix(test/s3/versioning): dropped test error by @alrs in https://github.com/seaweedfs/seaweedfs/pull/10813
* test(s3/versioning): read the whole version body instead of one Read by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10815
* test: drive the Lance namespace with LanceDB by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10850

## CI

* ci: fall through to another Ubuntu mirror when one is unreachable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10828
* ci: install the runner's own packages through the mirror fallback too by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10831
* ci: build protoc into the crate instead of installing it per job by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10830
* ci: call the apt helper from the workflow's working directory by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10832
* ci: stop installing FUSE headers nothing links against by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10840

## Documentation

* readme: fold RustFS into the MinIO comparison by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10788

## Dependencies

* build(deps): bump golang.org/x/crypto from 0.54.0 to 0.55.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10786
* build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.43.4 to 1.43.5 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10787
* build(deps): bump google.golang.org/api from 0.289.0 to 0.293.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10792
* build(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10790
* build(deps): bump github.com/rabbitmq/amqp091-go from 1.11.0 to 1.13.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10791
* build(deps): bump go.etcd.io/etcd/client/v3 from 3.6.12 to 3.7.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10789

## New Contributors
* @Koalk made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10811
* @sunchao6106 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10805
* @slimes28 made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10835

**Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.42...4.43