]> 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)
committerAdam Kupczyk <akupczyk@redhat.com>
Fri, 29 Apr 2022 22:36:51 +0000 (00:36 +0200)
commitd704e218e58dea609161397efd0f7cd03e7c5ad8
tree8793e2d0db8f871efca1c56a957b14a70dcb1e72
parentf566756bcbf81a9e17ed272afd5e8555c4ded09b
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