Skip to content

cmd: add otter subcommand wiring AF2 posix backend with multi-channel router#6

Open
riaarora-boop wants to merge 1 commit into
feat/router-multi-channelfrom
feat/cmd-otter
Open

cmd: add otter subcommand wiring AF2 posix backend with multi-channel router#6
riaarora-boop wants to merge 1 commit into
feat/router-multi-channelfrom
feat/cmd-otter

Conversation

@riaarora-boop

Copy link
Copy Markdown

Summary:

Adds the versitygw otter subcommand that wires together the full Otter stack:

  • Local posix backend with Af2Desc metadata storer + Af2MPUHandler (write-at-offset) + --same-dir-tmp
  • Router distributing objects across N AF2 channels by stable key hash
  • One s3proxy forwarder per non-self peer slot (re-signed SigV4, UNSIGNED-PAYLOAD streaming, plaintext intra-cluster for v1)

Flags: --owner-map (shared JSON slot config), --self-idx (this node's slot index), --forward-timeout (deadline for forwarded byte-writes). AF2-specific posix flags (--af2-desc, --same-dir-tmp, --disableotmp) also exposed.

Note — will be updated with JFL control plane (§14 of design doc): the --owner-map static file flag will be replaced with the OtterControl Thrift server (port 9200, mTLS), CRDB client for grant read-back and startup warmup, in-memory grant cache, and 503/403 split in the S3 auth layer. Forward credentials will be moved to Vault rather than environment variables.

Test Plan:

  • go build ./cmd/... passes
  • Validated end-to-end on a 3-node Potassium cluster: Postgres WAL archive through the otter subcommand into AF2 partitions, objects fanned out evenly across channels, read back byte-clean

JIRA Issues:

CDM-557247 (subtask of CDM-557238)

Revert Plan:

Revert this PR. Removes the otter subcommand from the binary; all other subcommands (posix, s3, etc.) are unaffected.

… router

Adds the otter CLI subcommand which wires together:
- local posix backend with Af2Desc metadata storer + Af2MPUHandler
  (write-at-offset) + same-dir-tmp atomic rename
- Router distributing objects across N AF2 channels by stable key hash
- one s3proxy forwarder per non-self slot (re-signed, UNSIGNED-PAYLOAD,
  plaintext intra-cluster for v1)

Flags: --owner-map (shared JSON slot config), --self-idx (this node's slot),
--forward-timeout (deadline for forwarded byte-writes). AF2-specific posix
flags (--af2-desc, --same-dir-tmp, --disableotmp) also exposed.

Jira: CDM-557247
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant