Merge "Make soong lock file sync time configurable.." am: a7a70d5ae6

am: 142327d719

Change-Id: Ia2ed62820a45de197ba542a0e31dba24b484db91
This commit is contained in:
Amin Shaikh 2019-05-24 20:07:07 -07:00 committed by android-build-merger
commit 105b33f237

View file

@ -34,6 +34,14 @@ func BecomeSingletonOrFail(ctx Context, config Config) (lock *fileLock) {
if err != nil {
ctx.Logger.Fatal(err)
}
lockfilePollDuration := time.Second
lockfileTimeout := time.Second * 10
if envTimeout := os.Getenv("SOONG_LOCK_TIMEOUT"); envTimeout != "" {
lockfileTimeout, err = time.ParseDuration(envTimeout)
if err != nil {
ctx.Logger.Fatalf("failure parsing SOONG_LOCK_TIMEOUT %q: %s", envTimeout, err)
}
}
err = lockSynchronous(*lockingInfo, newSleepWaiter(lockfilePollDuration, lockfileTimeout), ctx.Logger)
if err != nil {
ctx.Logger.Fatal(err)
@ -41,9 +49,6 @@ func BecomeSingletonOrFail(ctx Context, config Config) (lock *fileLock) {
return lockingInfo
}
var lockfileTimeout = time.Second * 10
var lockfilePollDuration = time.Second
type lockable interface {
tryLock() error
Unlock() error
@ -80,15 +85,18 @@ func lockSynchronous(lock lockable, waiter waiter, logger logger.Logger) (err er
return nil
}
waited = true
done, description := waiter.checkDeadline()
if !waited {
logger.Printf("Waiting up to %s to lock %v to ensure no other Soong process is running in the same output directory\n", description, lock.description())
}
waited = true
if done {
return fmt.Errorf("Tried to lock %s, but timed out %s . Make sure no other Soong process is using it",
lock.description(), waiter.summarize())
} else {
logger.Printf("Waiting up to %s to lock %v to ensure no other Soong process is running in the same output directory\n", description, lock.description())
waiter.wait()
}
}