mirror of
https://github.com/hashicorp/vault.git
synced 2026-05-04 20:06:27 +02:00
Locking updates in database backend (#3774)
This commit is contained in:
parent
95eea30d88
commit
c7b4fc314b
@ -56,7 +56,7 @@ func (b *databaseBackend) pathCredsCreateRead() framework.OperationFunc {
|
||||
|
||||
// Grab the read lock
|
||||
b.RLock()
|
||||
var unlockFunc func() = b.RUnlock
|
||||
unlockFunc := b.RUnlock
|
||||
|
||||
// Get the Database object
|
||||
db, ok := b.getDBObj(role.DBName)
|
||||
@ -83,9 +83,8 @@ func (b *databaseBackend) pathCredsCreateRead() framework.OperationFunc {
|
||||
|
||||
// Create the user
|
||||
username, password, err := db.CreateUser(ctx, role.Statements, usernameConfig, expiration)
|
||||
// Unlock
|
||||
unlockFunc()
|
||||
if err != nil {
|
||||
unlockFunc()
|
||||
b.closeIfShutdown(role.DBName, err)
|
||||
return nil, err
|
||||
}
|
||||
@ -98,6 +97,8 @@ func (b *databaseBackend) pathCredsCreateRead() framework.OperationFunc {
|
||||
"role": name,
|
||||
})
|
||||
resp.Secret.TTL = role.DefaultTTL
|
||||
|
||||
unlockFunc()
|
||||
return resp, nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ func (b *databaseBackend) secretCredsRenew() framework.OperationFunc {
|
||||
|
||||
// Grab the read lock
|
||||
b.RLock()
|
||||
var unlockFunc func() = b.RUnlock
|
||||
unlockFunc := b.RUnlock
|
||||
|
||||
// Get the Database object
|
||||
db, ok := b.getDBObj(role.DBName)
|
||||
@ -71,14 +71,14 @@ func (b *databaseBackend) secretCredsRenew() framework.OperationFunc {
|
||||
// Make sure we increase the VALID UNTIL endpoint for this user.
|
||||
if expireTime := resp.Secret.ExpirationTime(); !expireTime.IsZero() {
|
||||
err := db.RenewUser(ctx, role.Statements, username, expireTime)
|
||||
// Unlock
|
||||
unlockFunc()
|
||||
if err != nil {
|
||||
unlockFunc()
|
||||
b.closeIfShutdown(role.DBName, err)
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
unlockFunc()
|
||||
return resp, nil
|
||||
}
|
||||
}
|
||||
@ -109,7 +109,7 @@ func (b *databaseBackend) secretCredsRevoke() framework.OperationFunc {
|
||||
|
||||
// Grab the read lock
|
||||
b.RLock()
|
||||
var unlockFunc func() = b.RUnlock
|
||||
unlockFunc := b.RUnlock
|
||||
|
||||
// Get our connection
|
||||
db, ok := b.getDBObj(role.DBName)
|
||||
@ -127,14 +127,13 @@ func (b *databaseBackend) secretCredsRevoke() framework.OperationFunc {
|
||||
}
|
||||
}
|
||||
|
||||
err = db.RevokeUser(ctx, role.Statements, username)
|
||||
// Unlock
|
||||
unlockFunc()
|
||||
if err != nil {
|
||||
if err := db.RevokeUser(ctx, role.Statements, username); err != nil {
|
||||
unlockFunc()
|
||||
b.closeIfShutdown(role.DBName, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
unlockFunc()
|
||||
return resp, nil
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user