You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "Chu Cheng Li (Jira)" <ji...@apache.org> on 2025/06/30 07:15:00 UTC
[jira] [Created] (HDDS-13352) Shared RocksDB Iterator Cache for Paginated List Requests
Chu Cheng Li created HDDS-13352:
-----------------------------------
Summary: Shared RocksDB Iterator Cache for Paginated List Requests
Key: HDDS-13352
URL: https://issues.apache.org/jira/browse/HDDS-13352
Project: Apache Ozone
Issue Type: Improvement
Reporter: Chu Cheng Li
*Background*
The Ozone Manager (OM) creates a new RocksDB iterator for every page of a list request (keys, buckets, volumes). For large listings, this repeats iterator initialization and {{seek()}} overhead on every page.
*Proposal*
Introduce an iterator-cache layer inside OM:
# *Iterator Pool* – Maintain an LRU-K map of active RocksDB iterators keyed by a generated iterator ID included in the continuation token.
# *Single Ownership* – When a page request pulls an iterator from the pool, mark it “in-use” to prevent concurrent access; return it to the pool after the page is produced.
# *Eviction Controls* –
** {*}TTL{*}: close and discard iterators idle longer than _N_ seconds.
** {*}Size Limit{*}: cap the pool to _K_ iterators; evict the least-recently-used beyond the limit.
# *Fallback* – If the iterator is missing or expired, create a fresh iterator and continue from the provided marker (current behavior).
# *Snapshot Consistency* – Each cached iterator is tied to the snapshot created for the first page, ensuring all pages in the same listing see a consistent view.
*Benefits*
* Cuts per-page latency and CPU usage by avoiding repeated iterator construction.
* Reduces RocksDB index/data block loads for long listings.
* Preserves “read-your-own-listing” consistency across pages.
*Prior Art / Inspiration*
* HBase server-side scanners with lease timeout.
* MongoDB cursors (10-minute idle timeout).
* MinIO list-objects metadata cache.
*Acceptance Criteria*
* Config flags {{{}om.iterator.cache.enabled{}}}, {{{}om.iterator.cache.size{}}}, {{{}om.iterator.cache.ttl{}}}.
* Stress tests show measurable speed-up (e.g., ≥ 30 % latency reduction for 1 M-key listings over 10 pages).
* No concurrency violations (iterator reused by multiple threads).
* Snapshot pinning does not block compaction beyond configured TTL.
*Out of Scope*
* Per-client isolation or quota management.
* API changes on the client side (token format remains opaque).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org