[Midnightbsd-cvs] src [12205] trunk/lib/libmport/db.c: add retry algorithm
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Mon May 27 10:30:31 EDT 2019
Revision: 12205
http://svnweb.midnightbsd.org/src/?rev=12205
Author: laffer1
Date: 2019-05-27 10:30:30 -0400 (Mon, 27 May 2019)
Log Message:
-----------
add retry algorithm
Modified Paths:
--------------
trunk/lib/libmport/db.c
Modified: trunk/lib/libmport/db.c
===================================================================
--- trunk/lib/libmport/db.c 2019-05-26 17:22:01 UTC (rev 12204)
+++ trunk/lib/libmport/db.c 2019-05-27 14:30:30 UTC (rev 12205)
@@ -110,14 +110,19 @@
RETURN_ERROR(MPORT_ERR_FATAL, "Couldn't allocate memory for sql statement");
dispatch_sync(mportSQLSerial, ^{
+ int tries = 0;
int sqlcode = sqlite3_prepare_v2(db, sql, -1, stmt, NULL);
- if (sqlcode == SQLITE_BUSY || sqlcode == SQLITE_LOCKED) {
- sleep(1);
- if (sqlite3_prepare_v2(db, sql, -1, stmt, NULL) != SQLITE_OK) {
+
+ while(sqlcode == SQLITE_BUSY || sqlcode == SQLITE_LOCKED) {
+ usleep(200000); // 0.2 second
+ sqlcode = sqlite3_prepare_v2(db, sql, -1, stmt, NULL);
+ if (tries > 10) {
err = (char *) sqlite3_errmsg(db);
result = MPORT_ERR_FATAL;
}
- } else if (sqlcode != SQLITE_OK) {
+ }
+
+ if (sqlcode != SQLITE_OK) {
err = (char *) sqlite3_errmsg(db);
result = MPORT_ERR_FATAL;
}
More information about the Midnightbsd-cvs
mailing list