8 releases (major breaking)

Uses new Rust 2024

new 53.0.0 Mar 25, 2026
52.0.0 Jan 13, 2026
51.0.0 Nov 20, 2025
50.0.0 Sep 16, 2025
47.0.1 Apr 24, 2025

#1875 in Database interfaces

Download history 258518/week @ 2025-12-06 204581/week @ 2025-12-13 33844/week @ 2025-12-20 20025/week @ 2025-12-27 181029/week @ 2026-01-03 276597/week @ 2026-01-10 346008/week @ 2026-01-17 292302/week @ 2026-01-24 232715/week @ 2026-01-31 202744/week @ 2026-02-07 193224/week @ 2026-02-14 223685/week @ 2026-02-21 281385/week @ 2026-02-28 210968/week @ 2026-03-07 124465/week @ 2026-03-14 1385/week @ 2026-03-21

659,285 downloads per month

Apache-2.0

22KB
302 lines

Instrumented Object Store

Instrumented Object Store

Adds tracing instrumentation to any Object Store implementation.

Features

  • Automatically captures spans for all storage operations (get, put, list, etc.)
  • Records metadata like file paths and content sizes
  • Captures error details when operations fail
  • Works with OpenTelemetry for distributed tracing

Getting Started


// Create your object store
let store = Arc::new(object_store::local::LocalFileSystem::new());

// Wrap it with instrumentation (prefix for span names)
let instrumented_store = instrument_object_store(store, "local_fs");

// Use directly for file operations
let result = instrumented_store.get(&Path::from("path/to/file")).await?;

// Or integrate with DataFusion
let ctx = SessionContext::new();
ctx.register_object_store(&Url::parse("file://").unwrap(), instrumented_store);

When combined with the datafusion-tracing crate, this provides end-to-end visibility from query execution to storage operations.

Dependencies

~12–19MB
~260K SLoC