Merge "Make soong lock file sync time configurable.."
This commit is contained in:
@@ -34,6 +34,14 @@ func BecomeSingletonOrFail(ctx Context, config Config) (lock *fileLock) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Logger.Fatal(err)
|
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)
|
err = lockSynchronous(*lockingInfo, newSleepWaiter(lockfilePollDuration, lockfileTimeout), ctx.Logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Logger.Fatal(err)
|
ctx.Logger.Fatal(err)
|
||||||
@@ -41,9 +49,6 @@ func BecomeSingletonOrFail(ctx Context, config Config) (lock *fileLock) {
|
|||||||
return lockingInfo
|
return lockingInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
var lockfileTimeout = time.Second * 10
|
|
||||||
var lockfilePollDuration = time.Second
|
|
||||||
|
|
||||||
type lockable interface {
|
type lockable interface {
|
||||||
tryLock() error
|
tryLock() error
|
||||||
Unlock() error
|
Unlock() error
|
||||||
@@ -80,15 +85,18 @@ func lockSynchronous(lock lockable, waiter waiter, logger logger.Logger) (err er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
waited = true
|
|
||||||
|
|
||||||
done, description := waiter.checkDeadline()
|
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 {
|
if done {
|
||||||
return fmt.Errorf("Tried to lock %s, but timed out %s . Make sure no other Soong process is using it",
|
return fmt.Errorf("Tried to lock %s, but timed out %s . Make sure no other Soong process is using it",
|
||||||
lock.description(), waiter.summarize())
|
lock.description(), waiter.summarize())
|
||||||
} else {
|
} 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()
|
waiter.wait()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user