Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
Untriaged
-
0
-
Unknown
Description
The per-item KVStore callback doesn't setStatus for the !vb case, this means that if the vbucket is removed the scan will keep pointlessly reading the data from disk - prolonging warmup.
void LoadValueCallback::callback(CacheLookup& lookup) {
|
// If not value-eviction (LoadingData), then skip attempting to check for
|
// value already resident, given we assume nothing has been loaded for this
|
// document yet.
|
if (warmupState != WarmupState::State::LoadingData) {
|
setStatus(cb::engine_errc::success);
|
return;
|
}
|
|
// Prepared SyncWrites are ignored in the normal LoadValueCallback -
|
// they are handled in an earlier warmup phase so return
|
// cb::engine_errc::key_already_exists to indicate this key should be
|
// skipped.
|
if (lookup.getKey().isPrepared()) {
|
setStatus(cb::engine_errc::key_already_exists);
|
return;
|
}
|
|
VBucketPtr vb = vbuckets.getBucket(lookup.getVBucketId());
|
if (!vb) {
|
>>>> MISSING
|
return;
|
}
|