Fix locking of containerStore.BigDataDigest
It requires a WRITE lock. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
parent
e2b414c6db
commit
66f06a85ac
|
|
@ -629,6 +629,7 @@ func (r *containerStore) BigDataSize(id, key string) (int64, error) {
|
|||
return -1, ErrSizeUnknown
|
||||
}
|
||||
|
||||
// Requires startWriting. Yes, really, WRITING (see SetBigData).
|
||||
func (r *containerStore) BigDataDigest(id, key string) (digest.Digest, error) {
|
||||
if key == "" {
|
||||
return "", fmt.Errorf("can't retrieve digest of container big data value with empty name: %w", ErrInvalidBigDataName)
|
||||
|
|
|
|||
16
store.go
16
store.go
|
|
@ -1968,15 +1968,13 @@ func (s *store) ContainerBigDataSize(id, key string) (int64, error) {
|
|||
}
|
||||
|
||||
func (s *store) ContainerBigDataDigest(id, key string) (digest.Digest, error) {
|
||||
rcstore, err := s.getContainerStore()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := rcstore.startReading(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer rcstore.stopReading()
|
||||
return rcstore.BigDataDigest(id, key)
|
||||
var res digest.Digest
|
||||
err := s.writeToContainerStore(func(store rwContainerStore) error { // Yes, BigDataDigest requires a write lock.
|
||||
var err error
|
||||
res, err = store.BigDataDigest(id, key)
|
||||
return err
|
||||
})
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (s *store) ContainerBigData(id, key string) ([]byte, error) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue