Fix a block pinning regression introduced in b555ed30a4a93b80a3ac4781c6721ab988e03b5b
Summary: b555ed30a4a93b80a3ac4781c6721ab988e03b5b introduces a regression, which causes blocks always to be pinned in block based iterators. Fix it. Closes https://github.com/facebook/rocksdb/pull/3582 Differential Revision: D7189534 Pulled By: siying fbshipit-source-id: 117dc7a03d0a0e360424db02efb366e12da2be03
This commit is contained in:
parent
e69f6e8629
commit
b560fc9f62
@ -545,9 +545,10 @@ class BlockBasedTableIterator : public InternalIterator {
|
|||||||
}
|
}
|
||||||
bool IsKeyPinned() const override {
|
bool IsKeyPinned() const override {
|
||||||
return pinned_iters_mgr_ && pinned_iters_mgr_->PinningEnabled() &&
|
return pinned_iters_mgr_ && pinned_iters_mgr_->PinningEnabled() &&
|
||||||
block_iter_points_to_real_block_;
|
block_iter_points_to_real_block_ && data_block_iter_.IsKeyPinned();
|
||||||
}
|
}
|
||||||
bool IsValuePinned() const override {
|
bool IsValuePinned() const override {
|
||||||
|
// BlockIter::IsValuePinned() is always true. No need to check
|
||||||
return pinned_iters_mgr_ && pinned_iters_mgr_->PinningEnabled() &&
|
return pinned_iters_mgr_ && pinned_iters_mgr_->PinningEnabled() &&
|
||||||
block_iter_points_to_real_block_;
|
block_iter_points_to_real_block_;
|
||||||
}
|
}
|
||||||
@ -566,7 +567,7 @@ class BlockBasedTableIterator : public InternalIterator {
|
|||||||
|
|
||||||
void ResetDataIter() {
|
void ResetDataIter() {
|
||||||
if (block_iter_points_to_real_block_) {
|
if (block_iter_points_to_real_block_) {
|
||||||
if (pinned_iters_mgr_ != nullptr) {
|
if (pinned_iters_mgr_ != nullptr && pinned_iters_mgr_->PinningEnabled()) {
|
||||||
data_block_iter_.DelegateCleanupsTo(pinned_iters_mgr_);
|
data_block_iter_.DelegateCleanupsTo(pinned_iters_mgr_);
|
||||||
}
|
}
|
||||||
data_block_iter_.~BlockIter();
|
data_block_iter_.~BlockIter();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user