Skip to content

Commit ad905b0

Browse files
committed
cover new epoch tick-jumping case
1 parent 637e314 commit ad905b0

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

bob.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,6 @@ int runBob(int argc, char *argv[])
164164
uint32_t endEpochTick = 0;
165165
std::string key = "end_epoch_tick:" + std::to_string(gCurrentProcessingEpoch);
166166
bool isThisEpochAlreadyEnd = db_get_u32(key, endEpochTick);
167-
bool needInitialClean = true;
168-
if (isThisEpochAlreadyEnd)
169-
{
170-
needInitialClean = false; // expecting a big jump in tick
171-
}
172167
int retryCount = 0;
173168
while ((initTick == 0 ||
174169
( (initEpoch < gCurrentProcessingEpoch && !isThisEpochAlreadyEnd) ||
@@ -235,7 +230,7 @@ int runBob(int argc, char *argv[])
235230
Logger::get()->critical("Illegal DB status: gCurrentFetchingTick < gCurrentVerifyLoggingTick");
236231
exit(2);
237232
}
238-
if (needInitialClean) initialCleanDB();
233+
initialCleanDB();
239234

240235
auto request_thread = std::thread(
241236
[&](){

database/garbageCleaner.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -228,22 +228,24 @@ void initialCleanDB() // to clean up in case crashing last time
228228
long long lastCleanTickData;
229229
long long lastCleanTransactionTick;
230230

231-
if (db_get_u32(KEY_LAST_CLEAN_TICK_DATA, loadedCleanTickData) && loadedCleanTickData > 0)
231+
db_get_u32(KEY_LAST_CLEAN_TICK_DATA, loadedCleanTickData);
232+
if (loadedCleanTickData > 0 && loadedCleanTickData > gInitialTick - 1)
232233
{
233234
lastCleanTickData = loadedCleanTickData;
234235
}
235236
else
236237
{
237-
lastCleanTickData = gInitialTick;
238+
lastCleanTickData = gInitialTick - 1;
238239
}
239240

240-
if (db_get_u32(KEY_LAST_CLEAN_TX_TICK, loadedCleanTxTick) && loadedCleanTxTick > 0)
241+
db_get_u32(KEY_LAST_CLEAN_TX_TICK, loadedCleanTxTick);
242+
if (loadedCleanTxTick > 0 && loadedCleanTxTick > gInitialTick - 1)
241243
{
242244
lastCleanTransactionTick = loadedCleanTxTick;
243245
}
244246
else
245247
{
246-
lastCleanTransactionTick = gInitialTick;
248+
lastCleanTransactionTick = gInitialTick - 1;
247249
}
248250

249251
uint32_t lastReportedTick = 0;
@@ -264,8 +266,8 @@ void garbageCleaner()
264266
uint32_t loadedCleanTxTick = 0;
265267
gLastCleanTickData = 0;
266268
gLastCleanTransactionTick = 0;
267-
268-
if (db_get_u32(KEY_LAST_CLEAN_TICK_DATA, loadedCleanTickData) && loadedCleanTickData > 0)
269+
db_get_u32(KEY_LAST_CLEAN_TICK_DATA, loadedCleanTickData);
270+
if (loadedCleanTickData > 0 && loadedCleanTickData > gInitialTick - 1)
269271
{
270272
gLastCleanTickData = loadedCleanTickData;
271273
Logger::get()->info("Loaded lastCleanTickData from DB: {}", gLastCleanTickData);
@@ -276,7 +278,8 @@ void garbageCleaner()
276278
Logger::get()->info("No persisted lastCleanTickData found, using default: {}", gLastCleanTickData);
277279
}
278280

279-
if (db_get_u32(KEY_LAST_CLEAN_TX_TICK, loadedCleanTxTick) && loadedCleanTxTick > 0)
281+
db_get_u32(KEY_LAST_CLEAN_TX_TICK, loadedCleanTxTick);
282+
if (loadedCleanTxTick > 0 && loadedCleanTxTick > gInitialTick - 1)
280283
{
281284
gLastCleanTransactionTick = loadedCleanTxTick;
282285
Logger::get()->info("Loaded gLastCleanTransactionTick from DB: {}", gLastCleanTransactionTick);

0 commit comments

Comments
 (0)