Skip to content

ref(service): Inject access time into storage operations - #630

Open
jan-auer wants to merge 1 commit into
mainfrom
ref/inject-access-time
Open

jan-auer wants to merge 1 commit into
mainfrom
ref/inject-access-time

Conversation

@jan-auer

Copy link
Copy Markdown
Member

Capture one timestamp per HTTP request and pass it through metadata creation, service calls, and backend expiry checks. Previously, backends sampled time independently. A slow request could therefore use different times for creation, expiry checks, and TTI renewal.

Use an explicit timestamp parameter to keep the interface small and dependencies visible. Endpoints extract the timestamp, and the auth wrapper forwards it like the other operation arguments. Reuse it across all batch items, tiered calls, and retries.

Background renewals and cleanup start separate operations and use fresh timestamps for liveness checks. This prevents time spent waiting in a queue from authorizing renewal of an expired object. Renewal deadlines still come from the original read, so queue delays do not extend retention.

Keep multipart modification timestamps and cleanup grace periods unchanged. They serve separate purposes from object access and expiry.

@jan-auer
jan-auer requested a review from a team as a code owner September 14, 2026 18:15
@codecov

codecov Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.41176% with 33 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.49%. Comparing base (50f276d) to head (486d015).

Files with missing lines Patch % Lines
objectstore-service/src/backend/s3_compatible.rs 7.14% 26 Missing ⚠️
objectstore-server/src/endpoints/resumable.rs 63.63% 4 Missing ⚠️
bigtable-bench/src/main.rs 0.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #630      +/-   ##
==========================================
+ Coverage   89.15%   89.49%   +0.34%     
==========================================
  Files         113      114       +1     
  Lines       20692    21564     +872     
==========================================
+ Hits        18447    19298     +851     
- Misses       2245     2266      +21     
Components Coverage Δ
Rust Backend 93.75% <97.64%> (+0.21%) ⬆️
Rust Client 72.70% <ø> (ø)
Python Client 93.56% <ø> (ø)

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lcian lcian left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we discussed, I don't foresee any cases where we would need to carry around more "request context" other than this timestamp, and I think carrying this in a task-local or similar implicit "context" would likely be error-prone. So, I'm fine with this approach.

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.

2 participants