From 772778c0eced8f8d63bfe6b1e9801ad6aada65bf Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 11 Dec 2012 11:49:42 +0100 Subject: On SQLITE_BUSY, wait a random amount of time If all contending processes wait a fixed amount of time (100 ms), there is a good probability that they'll just collide again. --- src/libstore/local-store.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libstore') diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index b4fc64d712fa..26b4cfd8c234 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -48,7 +48,7 @@ static void throwSQLiteError(sqlite3 * db, const format & f) #if HAVE_NANOSLEEP struct timespec t; t.tv_sec = 0; - t.tv_nsec = 100 * 1000 * 1000; /* 0.1s */ + t.tv_nsec = (random() % 100) * 1000 * 1000; /* <= 0.1s */ nanosleep(&t, 0); #else sleep(1); -- cgit 1.4.1