ubik: Skip sleep on first pass in urecovery loop 03/14803/2
authorAndrew Deason <adeason@sinenomine.net>
Fri, 18 Sep 2020 01:54:54 +0000 (20:54 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 14 Oct 2021 16:05:11 +0000 (12:05 -0400)
commite3a87cdcf798e0b6f1932e192e082edc4c2ceb3e
tree823afb02eed49f1de477023f96caef58a28f461b
parent6267afb52ed958b5b58034909d72b6af9068f629
ubik: Skip sleep on first pass in urecovery loop

When running a dbserver without any remote sites, we become the sync
site immediately, since there aren't any other sites so we don't need
to do any processing of votes. The ubik database can thus be accessed
immediately, except we cannot start ubik write transactions right
away, since UBIK_RECHAVEDB will not be set, causing
urecovery_AllBetter() to fail.

UBIK_RECHAVEDB is not set immediately, because urecovery_Interact
sleeps 4 seconds at the beginning of its loop, so no recovery flags
will be set for the first 4 seconds during startup. This makes it
impossible to start any ubik write transactions for the first 4
seconds, even if we're the only site. That may not be a significant
amount of time for a user (since a dbserver daemon doesn't startup too
frequently), but this can cause huge delays for automated testing of
dbservers.

To get rid of this unnecessary delay, just skip this delay the first
time we go through the urecovery_Interact loop.

Change-Id: Ie6653b7b742dcf37798a6bf340b29c283ac3bc4c
Reviewed-on: https://gerrit.openafs.org/14803
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/ubik/recovery.c