You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MicrosoftAzure::list_with_offset returns empty on OneLake since 0.13.0 (regression from #623)
Describe the bug
Against Microsoft Fabric OneLake (*.dfs.fabric.microsoft.com), ObjectStore::list_with_offset(prefix, offset) returns zero entries even when the prefix contains files strictly greater than offset. The equivalent list(prefix) on the same store returns the correct files, so the data is reachable — only the offset-based listing is broken.
This regressed in object_store 0.13.0 via #623, which replaced the default fallback with an Azure-specific implementation that uses the ADLS Gen2 startFrom URI parameter. OneLake's REST surface does not handle startFrom the same way the standard ADLS Gen2 endpoint does.
Impact
Every downstream that uses list_with_offset against OneLake is broken on object_store >= 0.13.0:
delta-kernel-rs (used by DuckDB's delta extension, delta-rs): loading a Delta table with a _last_checkpoint hint fails with Invalid Checkpoint: Had a _last_checkpoint hint but didn't find any checkpoints. See delta-io/delta-kernel-rs#2433 and the (now-closed) workaround attempt #2437.
lakehq/sail (does NOT use delta-kernel-rs; independently hits the same bug): lakehq/sail#1730.
To Reproduce
Minimal, no-delta-kernel reproducer below. The only thing swapped between the two runs is the object_store pin.
Cargo.toml:
[package]
name = "onelake-repro"version = "0.0.1"edition = "2021"
[dependencies]
# Swap between "=0.12.5" (works) and "=0.13.2" (broken)object_store = { version = "=0.13.2", features = ["azure"] }
futures = "0.3"tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
url = "2"anyhow = "1"
A) list(prefix): 11 entries <-- identical to above
...
B) list_with_offset(prefix, _delta_log/00000000000000000010): 0 entries
(Only list_with_offset differs between the two runs.)
Suspected cause
#623 added a direct list_with_offset implementation for Azure that sends startFrom=<offset> per the ADLS Gen2 list-blobs API. OneLake's endpoint apparently does not implement startFrom compatibly — it returns an empty list regardless of the offset value.
MicrosoftAzure::list_with_offsetreturns empty on OneLake since 0.13.0 (regression from #623)Describe the bug
Against Microsoft Fabric OneLake (
*.dfs.fabric.microsoft.com),ObjectStore::list_with_offset(prefix, offset)returns zero entries even when the prefix contains files strictly greater thanoffset. The equivalentlist(prefix)on the same store returns the correct files, so the data is reachable — only the offset-based listing is broken.This regressed in
object_store0.13.0 via #623, which replaced the default fallback with an Azure-specific implementation that uses the ADLS Gen2startFromURI parameter. OneLake's REST surface does not handlestartFromthe same way the standard ADLS Gen2 endpoint does.Impact
Every downstream that uses
list_with_offsetagainst OneLake is broken onobject_store >= 0.13.0:delta-kernel-rs(used by DuckDB's delta extension, delta-rs): loading a Delta table with a_last_checkpointhint fails withInvalid Checkpoint: Had a _last_checkpoint hint but didn't find any checkpoints. See delta-io/delta-kernel-rs#2433 and the (now-closed) workaround attempt #2437.lakehq/sail(does NOT use delta-kernel-rs; independently hits the same bug): lakehq/sail#1730.To Reproduce
Minimal, no-delta-kernel reproducer below. The only thing swapped between the two runs is the
object_storepin.Cargo.toml:src/main.rs:Run:
Expected behavior
list_with_offset(prefix, offset)should return exactly the files inlist(prefix)whose location is lexicographically greater thanoffset.Actual behavior
Against the same OneLake table (a Delta table with
_last_checkpointat v10):With
object_store = "=0.12.5"(works):With
object_store = "=0.13.2"(broken):(Only
list_with_offsetdiffers between the two runs.)Suspected cause
#623 added a direct
list_with_offsetimplementation for Azure that sendsstartFrom=<offset>per the ADLS Gen2 list-blobs API. OneLake's endpoint apparently does not implementstartFromcompatibly — it returns an empty list regardless of the offset value.This matches
lonless9's analysis on lakehq/sail#1730 and the related Azurite#2619.Environment
object_store0.13.2 (and 0.13.0, 0.13.1 — all contain Azure ADLS list_with_offset support #623)onelake.dfs.fabric.microsoft.comRepro and report co-drafted with Claude Code (Claude Opus 4.7).