What's Changed
One large change is the maintenance scripts is migrated to "Admin Script" worker.
If there are no custom scripts configured in master.toml, it should be a Noop.
Otherwise, please follow this migration guide https://github.com/seaweedfs/seaweedfs/wiki/Migrate-Maintenance-Scripts-to-Admin-Script-Plugin
Internally there is a major refactoring. The admin server now has a new plugin system for workers, allowing future possibilities of adding non-Go workers.
-
Admin UI and Worker
- Add Admin UI to Docker Compose files by @github-pawo in #8364
- Refactor plugin system and migrate worker runtime by @chrislusf in #8369
- Worker maintenance tasks now use non-default grpcPort if configured by @chrislusf in #8407
- Admin UI: replace gin with mux by @chrislusf in #8420
- Use master shard sizes for EC volumes by @chrislusf in #8423
- fix(admin): release mutex before disk I/O in maintenance queue; remove per-request LoadAllTaskStates by @basic-system in #8433
- fix(plugin/worker): make VacuumHandler report MaxExecutionConcurrency from worker startup flag by @basic-system in #8435
- Make EC detection context aware by @chrislusf in #8449
- Add plugin worker integration tests for erasure coding by @chrislusf in #8450
- Add customizable plugin display names and weights by @chrislusf in #8459
- Worker set its working directory by @chrislusf in #8461
- Prevent overlapping maintenance tasks per volume by @chrislusf in #8463
- refactor ec shard distribution by @chrislusf in #8465
- Respect -minFreeSpace during ec.decode by @chrislusf in #8467
- Add volume dir tags and EC placement priority by @chrislusf in #8472
- Expire stuck plugin jobs by @chrislusf in #8492
- add admin script worker by @chrislusf in #8491
- Plugin scheduler: sequential iterations with max runtime by @chrislusf in #8496
- Disable master maintenance scripts when admin server runs by @chrislusf in #8499
- style: Reseted padding to container-fluid div in layout template by @FabioHAraujo in #8505
- fix: resolve ServerAddress to NodeId in maintenance task sync by @chrislusf in #8508
-
S3 API
- Add md5 checksum validation support on PutObject and UploadPart by @michalszynkiewicz in #8367
- fix: cancel volume server requests on client disconnect during S3 downloads by @chrislusf in #8373
- Fix IAM defaults and S3Tables IAM regression by @chrislusf in #8374
- s3api: add AttachUserPolicy/DetachUserPolicy/ListAttachedUserPolicies by @chrislusf in #8379
- s3: fix signature mismatch with non-standard ports and capitalized host by @chrislusf in #8386
- Implement managed policy storage by @chrislusf in #8385
- Enforce IAM for S3 Tables bucket creation by @chrislusf in #8388
- Fix error on deleting non-empty bucket by @michalszynkiewicz in #8376
- Allow user to define access and secret key via values by @rchenzheng in #8389
- S3 IAM: Added ListPolicyVersions and GetPolicyVersion support by @chrislusf in #8395
- S3: Truncate timestamps to milliseconds for CopyObjectResult and CopyPartResult by @chrislusf in #8398
- Embed role policies in AssumeRole STS tokens by @chrislusf in #8421
- fix(s3api): make ListObjectsV1 namespaced and prevent marker-echo pagination loops by @pntone in #8409
- s3api: preserve Host header port in signature verification by @chrislusf in #8434
- Fix inline user policy retrieval by @chrislusf in #8437
- Refresh IAM config after policy attachments by @chrislusf in #8439
- Allow multipart upload operations when s3:PutObject is authorized by @chrislusf in #8445
- Fix S3 signature verification behind reverse proxies by @blitt001 in #8444
- fix(s3api): correctly extract host header port in extractHostHeader by @chrislusf in #8464
- s3api: add GetObjectAttributes API support by @chrislusf in #8504
- Implement IAM managed policy operations by @chrislusf in #8507
-
S3 Table Bucket
- weed/s3api/s3tables: fix dropped errors by @alrs in #8456
- fix: table location mappings to /etc/s3tables by @chrislusf in #8457
- feat: drop table location mapping support by @chrislusf in #8458
- Add lakekeeper table bucket integration test by @chrislusf in #8470
- Add Apache Polaris integration tests by @chrislusf in #8478
- test: add Polaris S3 tables integration tests by @chrislusf in #8489
-
Shell
- [shell]: volume balance capacity by min volume density by @kmlebedev in #8026
- Fix volume.fsck crashing on EC volumes and add multi-volume vacuum support by @chrislusf in #8406
- Adds volume.merge command with deduplication and disk-based backend by @chrislusf in #8441
-
Helm Chart
- fix: allow overriding Enterprise image name using Helm #8361 by @chrislusf in #8363
- docker: fix entrypoint chown guard; helm: add openshift-values.yaml by @chrislusf in #8390
- helm: refine openshift-values.yaml for assigned UID ranges by @chrislusf in #8396
- fix(helm): add missing app.kubernetes.io/instance label to volume service by @sheyabernstein in #8403
- feat(helm): annotations for service account by @petedodd-pd in #8429
- Chart createBuckets config #8368: Add TTL, Object Lock, and Versioning support by @chrislusf in #8375
- helm: add optional parameters to COSI BucketClass by @sircthulhu in #8453
- helm: avoid duplicate env var keys in workload env lists by @chrislusf in #8488
- Feat: update openshift helm value to support seaweed s3 by @Surote in #8494
- Helm: set serviceAccountName independent of cluster role by @chrislusf in #8495
-
Misc
- Remove trailing spaces (line 53) in seaweedfs-dev-compose.yml by @github-pawo in #8365
- Add support for TLS in gRPC communication between worker and volume server by @medva1997 in #8370
- fix: resolve gRPC DNS resolution issues in Kubernetes #8384 by @chrislusf in #8387
- fix: generate topology uuid uniformly in single-master mode by @chrislusf in #8405
- Move SQL engine and PostgreSQL server to their own binaries by @chrislusf in #8417
- fix: plural
clientTypeonListExistingPeerUpdatesby @jrcichra in #8422 - Remove volumePreallocate option from docker containers by @chrislusf in #8451
- fix: port in SNI address when using domainName instead of IP for master by @DaRacci in #8500
-
Volume Server
- fix: unload leveldb not take effect by @xiaoweihong in #8431
- Fix live volume move tail timestamp by @chrislusf in #8440
- feat: add statfile remote storage by @petedodd-pd in #8443
-
SFTP
- Fix SFTP file upload failures with JWT filer tokens by @chrislusf in #8448
-
Filer
- feat(filer): lazy metadata pulling by @petedodd-pd in #8454
New Contributors
- @github-pawo made their first contribution in #8364
- @medva1997 made their first contribution in #8370
- @michalszynkiewicz made their first contribution in #8367
- @rchenzheng made their first contribution in #8389
- @jrcichra made their first contribution in #8422
- @pntone made their first contribution in #8409
- @basic-system made their first contribution in #8433
- @sircthulhu made their first contribution in #8453
- @blitt001 made their first contribution in #8444
- @Surote made their first contribution in #8494
- @DaRacci made their first contribution in #8500
- @FabioHAraujo made their first contribution in #8505
Full Changelog: 4.13...4.14