Files
zooqueen dd74d3e6d6 Replace AGPL MinIO fork with Apache-2.0 SeaweedFS fork; rebrand CLI weed->s3
hanzoai/s3 was an AGPL-3.0 MinIO fork whose network-copyleft blocks embedding
and reselling as a managed service. Replace it wholesale with a fork of
SeaweedFS (github.com/seaweedfs/seaweedfs, Apache-2.0, Go) which ships a
built-in S3 gateway + Filer.

- License: AGPL-3.0 -> Apache-2.0 (upstream LICENSE kept verbatim, incl.
  "Copyright 2025 Chris Lu"); NOTICE added crediting SeaweedFS. No AGPL/BUSL/
  SSPL/GPL or enterprise ("ee") files remain.
- Module: go.mod path set to github.com/hanzoai/s3 with a self-replace
  (replace github.com/seaweedfs/seaweedfs => ./) so the ~1800 internal Go files
  keep their upstream import paths with zero churn. Internal identifiers and
  import paths are intentionally NOT renamed.
- CLI rebrand: the binary is built as `s3` (was `weed`); root usage, per-command
  help/usage/flag strings, shell autocomplete program name, and the product name
  in CLI output now read "Hanzo S3" / `s3`. Users never see `weed`.
  (e.g. `s3 server`, `s3 filer`, `s3 master`, `s3 volume`, `s3 s3`, `s3 mount`.)
- Build: `make` (or `go build -o s3 ./weed`) builds the `s3` binary green;
  `cmd/weed-db` and `cmd/weed-sql` also build; `go vet ./weed/command/` clean.
- README/LLM.md rewritten for Hanzo S3; AGENTS.md/CLAUDE.md symlinks preserved.
- Dropped a 33MB prebuilt Mach-O `stress` binary upstream had committed; `.gitignore`
  updated to ignore the `s3` build output.
2026-06-18 23:41:25 -07:00
..

Metadata Subscribe Integration Tests

This directory contains integration tests for the SeaweedFS metadata subscription functionality.

Tests

TestMetadataSubscribeBasic

Tests basic metadata subscription functionality:

  • Start a SeaweedFS cluster (master, volume, filer)
  • Subscribe to metadata changes
  • Upload files and verify events are received

TestMetadataSubscribeSingleFilerNoStall

Regression test for issue #4977:

  • Tests that metadata subscription doesn't stall in single-filer setups
  • Simulates high-load file uploads while a subscriber tries to keep up
  • Verifies that events are received without significant stalling

The bug was that in single-filer setups, SubscribeMetadata would block indefinitely on MetaAggregator.MetaLogBuffer which remains empty (no peers to aggregate from). The fix ensures that when the buffer is empty, the subscription returns to read from persisted logs on disk.

TestMetadataSubscribeResumeFromDisk

Tests that subscription can resume from disk:

  • Upload files before starting subscription
  • Wait for logs to be flushed to disk
  • Start subscription from the beginning
  • Verify pre-uploaded files are received from disk

Running Tests

# Run all tests (requires weed binary in PATH or built)
go test -v ./test/metadata_subscribe/...

# Skip integration tests
go test -short ./test/metadata_subscribe/...

# Run with increased timeout for slow systems
go test -v -timeout 5m ./test/metadata_subscribe/...

Requirements

  • weed binary must be available in PATH or in the parent directories
  • Tests create temporary directories that are cleaned up after completion
  • Tests use ports 9333 (master), 8080 (volume), 8888 (filer)