fix: lock expiry on zoned setups (#9084)

lock ownership is limited to endpoints on first zone,
as we do not hold locks on other zones in an expanded
setup. current code unintentionally expired active locks
when it couldn't see ownership from the secondary zone
which leads to unexpected bugs as locking fails to work
as expected.
This commit is contained in:
kannappanr 2020-03-04 16:06:17 -08:00 committed by GitHub
parent d9be8bc693
commit c7ca791c58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 36 additions and 35 deletions

View File

@ -247,8 +247,10 @@ func lockMaintenance(ctx context.Context, interval time.Duration, objAPI ObjectL
// Get list of long lived locks to check for staleness.
for lendpoint, nlrips := range getLongLivedLocks(interval) {
for _, nlrip := range nlrips {
for _, ep := range globalEndpoints {
for _, endpoint := range ep.Endpoints {
// Locks are only held on first zone, make sure that
// we only look for ownership of locks from endpoints
// on first zone.
for _, endpoint := range globalEndpoints[0].Endpoints {
if endpoint.String() == lendpoint.String() {
continue
}
@ -285,7 +287,6 @@ func lockMaintenance(ctx context.Context, interval time.Duration, objAPI ObjectL
}
}
}
}
return nil
}