mirror of
https://github.com/versity/versitygw.git
synced 2026-09-22 16:04:15 +00:00
Two-phase RC transfers were invisible to the access log, metrics, and bucket notifications: every outcome record on the S3 surface is driven by the fiber request context, and the RC wire requests carry the transfer session rather than the object. Publish one record per session by tracking the operational context from PREPARE through completion. A tracker table registers each successfully prepared session with its account, region, object, and start time; whichever path confirms the final outcome first (READY completion, READY failure, or the reaper teardown callback) claims the entry and publishes exactly once. Sessions that end before PREPARE succeeds publish a request record directly. The record is emitted through a synthetic fiber context carrying the object path and the captured locals, so the existing logger, metrics manager, and event sender produce the same schema as the S3 surface without any interface change. Bucket notifications fire for completed PUTs. The gateway creates the operational services inside RunVersityGW, after the RC routes exist. Add an OnServicesReady callback to the embedded gateway config and wire it in vgwrdma to hand the services to the RC routes and install the teardown callback.