diff options
author | Werner Koch <[email protected]> | 2016-01-15 07:15:40 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-01-15 07:15:40 +0000 |
commit | 3cccd5a83b96e4558642dcdf5d974f64ebdb9817 (patch) | |
tree | f703605ce60e5793dd3ddb889d653ebea7b6d5a0 | |
parent | w32: Fix deadlock introduced by keybox_file_rename. (diff) | |
download | gnupg-3cccd5a83b96e4558642dcdf5d974f64ebdb9817.tar.gz gnupg-3cccd5a83b96e4558642dcdf5d974f64ebdb9817.zip |
kbx,w32: Use shorter retry intervals for keybox_file_rename.
* kbx/keybox-util.c (keybox_file_rename): Restart retry intervals
after 800ms.
--
The common use case is that the process waiting for a rename does an
import while another process does a key listing with only short lock
periods. Thus it does not make sense to set the final backoff time to
8s. It would actually be okay to retry every 100ms but that would
spill the console with "waiting..." messages. This change prints the
waiting message only every 1.5s.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | kbx/keybox-util.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/kbx/keybox-util.c b/kbx/keybox-util.c index 740ea73b4..13fedb32f 100644 --- a/kbx/keybox-util.c +++ b/kbx/keybox-util.c @@ -169,16 +169,11 @@ keybox_file_rename (const char *oldname, const char *newname) * Note that we don't need this on Unix due to the inode * concept. * - * So let's wait until the rename has worked. We use the - * same retry intervals as used by dotlock.c, namely 50ms, - * 100ms, 200ms, 400ms, 800ms, 2s, 4s and 8s. */ - if (!wtime) + * So let's wait until the rename has worked. The retry + * intervals are 50, 100, 200, 400, 800, 50ms, ... */ + if (!wtime || wtime >= 800) wtime = 50; - else if (wtime < 800) - wtime *= 2; - else if (wtime == 800) - wtime = 2000; - else if (wtime < 8000) + else wtime *= 2; if (wtime >= 800) |