[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