diff --git a/rust/volume_server/DEV_PLAN.md b/rust/volume_server/DEV_PLAN.md index 1bf07d745..de695f05c 100644 --- a/rust/volume_server/DEV_PLAN.md +++ b/rust/volume_server/DEV_PLAN.md @@ -13,6 +13,7 @@ Build a Rust implementation of SeaweedFS volume server that is behavior-compatib ### Phase 0: Bootstrap and Harness Integration - [x] Add Rust volume-server crate. - [x] Implement Rust launcher that can run as a volume-server process entrypoint. +- [x] Add launcher execution modes (`exec` and `proxy`) behind `VOLUME_SERVER_RUST_MODE`. - [x] Add integration harness switches so tests can run with: - Go master + Go volume (default) - Go master + Rust volume (`VOLUME_SERVER_IMPL=rust` or `VOLUME_SERVER_BINARY=...`) @@ -60,3 +61,12 @@ Build a Rust implementation of SeaweedFS volume server that is behavior-compatib - Change: Created Rust volume-server crate (`weed-volume-rs`) as compatibility launcher and wired harness binary selection (`VOLUME_SERVER_IMPL`/`VOLUME_SERVER_BINARY`). - Validation: local Rust-mode smoke and full-suite runs passed: - `VOLUME_SERVER_IMPL=rust go test ./test/volume_server/http ./test/volume_server/grpc` +- Commits: `7beab85c2`, `880c2e1da`, `63d08e8a9`, `d402573ea`, `3bd20e6a1`, `6ce4d7ede` + +- Date: 2026-02-15 +- Change: Added Rust proxy supervisor mode (`VOLUME_SERVER_RUST_MODE=proxy`) with front-side TCP listeners for HTTP/public/gRPC and managed Go backend process. +- Validation: + - `env VOLUME_SERVER_IMPL=rust VOLUME_SERVER_RUST_MODE=proxy go test -count=1 -timeout=200m ./test/volume_server/http` + - `env VOLUME_SERVER_IMPL=rust VOLUME_SERVER_RUST_MODE=proxy go test -count=1 -timeout=240m ./test/volume_server/grpc` + - Result: both suites pass end-to-end in proxy mode. +- Commits: `a7f50d23b`, `548b3d9a3` diff --git a/test/volume_server/DEV_PLAN.md b/test/volume_server/DEV_PLAN.md index f1d471688..d3efc97a4 100644 --- a/test/volume_server/DEV_PLAN.md +++ b/test/volume_server/DEV_PLAN.md @@ -1140,4 +1140,18 @@ Update this section during implementation: - APIs covered: full `/test/volume_server/http` and `/test/volume_server/grpc` suites executed successfully with `VOLUME_SERVER_IMPL=rust`. - Profiles covered: existing integration matrix in Rust launcher mode. - Gaps introduced/remaining: native Rust endpoint and storage/RPC implementation remains pending; current mode delegates execution to Go volume server. -- Commit: pending +- Commit: `6ce4d7ede` + +- Date: 2026-02-15 +- Change: Added Rust proxy-supervision launcher mode and validated all volume-server integration suites in proxy mode. +- APIs covered: full `/test/volume_server/http` and `/test/volume_server/grpc` suites executed successfully with `VOLUME_SERVER_IMPL=rust` and `VOLUME_SERVER_RUST_MODE=proxy`. +- Profiles covered: existing integration matrix in Rust proxy launcher mode. +- Gaps introduced/remaining: native Rust endpoint/storage/RPC logic remains pending; current proxy mode still delegates backend handlers to Go. +- Commit: `a7f50d23b` + +- Date: 2026-02-15 +- Change: Expanded GitHub CI Rust smoke job to run both launcher modes (`exec` and `proxy`). +- APIs covered: representative HTTP/gRPC smoke flows now validated in CI for both Rust launcher execution paths. +- Profiles covered: CI smoke profile for P1 representative calls. +- Gaps introduced/remaining: CI still runs Rust mode as smoke scope; full-suite Rust-mode CI remains optional due runtime cost. +- Commit: `548b3d9a3` diff --git a/test/volume_server/README.md b/test/volume_server/README.md index 89461d308..a62fadb84 100644 --- a/test/volume_server/README.md +++ b/test/volume_server/README.md @@ -17,6 +17,7 @@ If a `weed` binary is not found, the harness will build one automatically. - `WEED_BINARY`: explicit path to the `weed` executable (disables auto-build). - `VOLUME_SERVER_IMPL`: select volume-server implementation (`go` default, `rust` for Rust launcher mode). - `VOLUME_SERVER_BINARY`: explicit path to the volume-server executable (overrides `VOLUME_SERVER_IMPL`). +- `VOLUME_SERVER_RUST_MODE`: Rust launcher mode (`exec` default, `proxy` for Rust front proxy + Go backend). - `VOLUME_SERVER_RUST_REBUILD=1`: force rebuild of Rust volume-server binary in Rust mode. - `VOLUME_SERVER_IT_KEEP_LOGS=1`: keep temporary test directories and process logs.