Fixed range read bug in blob manager recovery

This commit is contained in:
Josh Slocum 2022-01-19 17:49:19 -06:00
parent 07f09f1118
commit 05c3aeb93f
1 changed files with 10 additions and 4 deletions

View File

@ -1360,13 +1360,18 @@ ACTOR Future<Void> recoverBlobManager(Reference<BlobManagerData> bmData) {
if (!splitResult.more) {
break;
}
ASSERT(splitResult.readThrough.present());
splitBeginKey = splitResult.readThrough.get();
ASSERT(splitResult.readThrough.present() || splitResult.size() > 0);
splitBeginKey = splitResult.readThrough.present() ? splitResult.readThrough.get()
: keyAfter(splitResult.back().key);
loop {
try {
RangeResult r =
wait(tr->getRange(KeyRangeRef(splitBeginKey, blobGranuleSplitKeys.end), rowLimit));
ASSERT(r.size() > 0 || !r.more);
fmt::print("Split cursor got {0} rows, readThrough={1}, more={2}\n",
r.size(),
r.readThrough.present() ? r.readThrough.get().printable().c_str() : "<n/a>",
r.more ? "T" : "F");
splitResult = r;
splitResultIdx = 0;
break;
@ -1413,8 +1418,9 @@ ACTOR Future<Void> recoverBlobManager(Reference<BlobManagerData> bmData) {
if (!boundaryResult.more) {
break;
}
ASSERT(boundaryResult.readThrough.present());
boundaryBeginKey = boundaryResult.readThrough.get();
ASSERT(boundaryResult.readThrough.present() || boundaryResult.size() > 0);
boundaryBeginKey = boundaryResult.readThrough.present() ? boundaryResult.readThrough.get()
: keyAfter(boundaryResult.back().key);
loop {
try {
RangeResult r = wait(