From 46ac7267001f722d208949310fe8e29bda02206b Mon Sep 17 00:00:00 2001 From: Josh Slocum Date: Thu, 9 Dec 2021 11:01:13 -0600 Subject: [PATCH] Added assert to more easily detect WFV errors --- fdbserver/BlobWorker.actor.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/fdbserver/BlobWorker.actor.cpp b/fdbserver/BlobWorker.actor.cpp index c6c918a64a..c453d3c301 100644 --- a/fdbserver/BlobWorker.actor.cpp +++ b/fdbserver/BlobWorker.actor.cpp @@ -121,6 +121,9 @@ struct GranuleMetadata : NonCopyable, ReferenceCounted { AssignBlobRangeRequest originalReq; + // TODO FOR DEBUGGING, REMOVE + Version waitForVersionReturned = invalidVersion; + void resume() { if (resumeSnapshot.canBeSet()) { resumeSnapshot.send(Void()); @@ -1329,6 +1332,18 @@ ACTOR Future blobGranuleUpdateFiles(Reference bwData, } else { ASSERT(mutations.front().version >= startState.changeFeedStartVersion); } + + // if we just got mutations, we haven't buffered them yet, so waitForVersion can't have returned + // this version yet + if (mutations.front().version <= metadata->waitForVersionReturned) { + fmt::print("ERROR: WaitForVersion returned early for granule [{0} - {1}). " + "waitForVersionReturned={2}, mutationVersion={3} !!!\n", + metadata->keyRange.begin.printable(), + metadata->keyRange.end.printable(), + metadata->waitForVersionReturned, + mutations.front().version); + } + ASSERT(mutations.front().version > metadata->waitForVersionReturned); } when(wait(inFlightFiles.empty() ? Never() : success(inFlightFiles.front().future))) { // TODO REMOVE @@ -1949,6 +1964,11 @@ ACTOR Future waitForVersion(Reference metadata, Version v fmt::print("{0}) done\n", v); } + // TODO REMOVE debugging + if (v > metadata->waitForVersionReturned) { + metadata->waitForVersionReturned = v; + } + return Void(); }