]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
bluestore: set upper and lower bounds on rocksdb omap iterators
authorCory Snyder <csnyder@iland.com>
Fri, 15 Apr 2022 00:54:15 +0000 (20:54 -0400)
committerCory Snyder <csnyder@iland.com>
Tue, 19 Apr 2022 18:19:52 +0000 (14:19 -0400)
commitd0b03f227ca7338ec9825b5ce9e549336ef82e9f
treea2c3049e2c9ffaa4b3d054e30bb86344f4545a97
parent0315ce47c755cef21ce0406db5a7505660101041
bluestore: set upper and lower bounds on rocksdb omap iterators

Limits RocksDB omap Seek operations to the relevant key range of the object's omap.
This prevents RocksDB from unnecessarily iterating over delete range tombstones in
irrelevant omap CF shards. Avoids extreme performance degradation commonly caused
by tombstones generated from RGW bucket resharding cleanup. Also prefer CFIteratorImpl
over ShardMergeIteratorImpl when we can determine that all keys within specified
IteratorBounds must be in a single CF.

Fixes: https://tracker.ceph.com/issues/55324
Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit 850c16c2468c3200a340493c12930543f326b0e1)
src/kv/KeyValueDB.h
src/kv/LevelDBStore.h
src/kv/MemDB.h
src/kv/RocksDBStore.cc
src/kv/RocksDBStore.h
src/os/bluestore/BlueStore.cc
src/test/ObjectMap/KeyValueDBMemory.cc
src/test/ObjectMap/KeyValueDBMemory.h