diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2020-02-26 22:48:31 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2020-03-03 20:21:49 +0100 |
commit | 41425fc94b1df95d36c3254db5b67e29c257cb6b (patch) | |
tree | ea6995841582e9211e8d7f956e9cfcc534ed79e0 | |
parent | 6aba3fb3b48e8dc4919b29b6807a63007ee705eb (diff) | |
download | ccache-41425fc94b1df95d36c3254db5b67e29c257cb6b.tar.gz ccache-41425fc94b1df95d36c3254db5b67e29c257cb6b.tar.bz2 ccache-41425fc94b1df95d36c3254db5b67e29c257cb6b.zip |
Cap time to sleep to 10 ms when failing to acquire a lock
(cherry picked from commit 41ffc7ec009237da51040c6059b1bcd7903af30d)
-rw-r--r-- | src/lockfile.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lockfile.cpp b/src/lockfile.cpp index a58a4907..6905b3e3 100644 --- a/src/lockfile.cpp +++ b/src/lockfile.cpp @@ -38,8 +38,9 @@ lockfile_acquire(const char* path, unsigned staleness_limit) char* initial_content = nullptr; const char* hostname = get_hostname(); bool acquired = false; - unsigned to_sleep = 1000; // Microseconds. - unsigned slept = 0; // Microseconds. + unsigned to_sleep = 1000; // Microseconds. + unsigned max_to_sleep = 10000; // Microseconds. + unsigned slept = 0; // Microseconds. while (true) { free(my_content); @@ -171,7 +172,7 @@ lockfile_acquire(const char* path, unsigned staleness_limit) to_sleep); usleep(to_sleep); slept += to_sleep; - to_sleep *= 2; + to_sleep = std::min(max_to_sleep, 2 * to_sleep); } out: |