diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-12-11T10·49+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-12-11T10·49+0100 |
commit | 772778c0eced8f8d63bfe6b1e9801ad6aada65bf (patch) | |
tree | b93190ac1e556060923024d05cf79cfbf33a97f8 /src/libmain/shared.cc | |
parent | e087bfef5f36f309b1c8d01bfe297e4cf4decb34 (diff) |
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.
Diffstat (limited to 'src/libmain/shared.cc')
-rw-r--r-- | src/libmain/shared.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index ead3fc017ae2..e869ef0379ad 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -10,6 +10,7 @@ #include <cctype> #include <exception> +#include <sys/time.h> #include <sys/stat.h> #include <unistd.h> @@ -135,6 +136,11 @@ static void initAndRun(int argc, char * * argv) everybody. */ umask(0022); + /* Initialise the PRNG. */ + struct timeval tv; + gettimeofday(&tv, 0); + srandom(tv.tv_usec); + /* Process the NIX_LOG_TYPE environment variable. */ string lt = getEnv("NIX_LOG_TYPE"); if (lt != "") setLogType(lt); |