Move warning timing logic into handleSQLiteBusy.

This commit is contained in:
Ben Radford 2023-04-11 16:03:37 +01:00
parent da322ebda6
commit de3df3009b
No known key found for this signature in database
GPG key ID: 9DF5D4640AB888D5
2 changed files with 6 additions and 13 deletions

View file

@ -239,9 +239,11 @@ SQLiteTxn::~SQLiteTxn()
} }
} }
void handleSQLiteBusy(const SQLiteBusy & e, bool shouldWarn) void handleSQLiteBusy(const SQLiteBusy & e, time_t & nextWarning)
{ {
if (shouldWarn) { time_t now = time(0);
if (now > nextWarning) {
nextWarning = now + 10;
logWarning({ logWarning({
.msg = hintfmt(e.what()) .msg = hintfmt(e.what())
}); });

View file

@ -139,7 +139,7 @@ protected:
MakeError(SQLiteBusy, SQLiteError); MakeError(SQLiteBusy, SQLiteError);
void handleSQLiteBusy(const SQLiteBusy & e, bool shouldWarn); void handleSQLiteBusy(const SQLiteBusy & e, time_t & nextWarning);
/** /**
* Convenience function for retrying a SQLite transaction when the * Convenience function for retrying a SQLite transaction when the
@ -153,17 +153,8 @@ T retrySQLite(F && fun)
while (true) { while (true) {
try { try {
return fun(); return fun();
} catch (SQLiteBusy & e) { } catch (SQLiteBusy & e) {
time_t now = time(0); handleSQLiteBusy(e, nextWarning);
bool shouldWarn = false;
if (now > nextWarning) {
nextWarning = now + 10;
shouldWarn = true;
}
handleSQLiteBusy(e, shouldWarn);
} }
} }
} }