key_generator: fix edge case found on windows
authorrobk-tahoe <robk-tahoe@allmydata.com>
Thu, 10 Apr 2008 21:27:35 +0000 (14:27 -0700)
committerrobk-tahoe <robk-tahoe@allmydata.com>
Thu, 10 Apr 2008 21:27:35 +0000 (14:27 -0700)
the windows (cygwin) buildslave has been failing the key generator test

it turns out that the time check on whether to refill the pool, and the
reactor, are interacting such that when the maybe_refill_pool call posted
on the reactor fires, the test on whether to fill the pool fails.

this adds a loop in the failure case to retry each 1s until it is time
to refill the pool, thus mitigating this timing accuracy problem on
windows.

src/allmydata/key_generator.py

index 61fa9b2edf0ccebf86993a27960b4900e52d0996..fd9b096fa2a10d0c0d9f61081e4f523167fd06b5 100644 (file)
@@ -55,6 +55,7 @@ class KeyGenerator(service.MultiService, foolscap.Referenceable):
                 self.keypool.append(self.gen_key(self.DEFAULT_KEY_SIZE))
         else:
             self.vlog('%s not refilling pool' % (self,))
+            reactor.callLater(1, self.maybe_refill_pool)
 
     def gen_key(self, key_size):
         self.vlog('%s generating key size %s' % (self, key_size, ))