kbx,w32: Use shorter retry intervals for keybox_file_rename.
authorWerner Koch <wk@gnupg.org>
Fri, 15 Jan 2016 07:15:40 +0000 (08:15 +0100)
committerWerner Koch <wk@gnupg.org>
Fri, 15 Jan 2016 07:15:40 +0000 (08:15 +0100)
* 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 <wk@gnupg.org>
kbx/keybox-util.c

index 740ea73..13fedb3 100644 (file)
@@ -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.
            *
            * 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;
             wtime = 50;
-          else if (wtime < 800)
-            wtime *= 2;
-          else if (wtime == 800)
-            wtime = 2000;
-          else if (wtime < 8000)
+          else
             wtime *= 2;
 
           if (wtime >= 800)
             wtime *= 2;
 
           if (wtime >= 800)