diff --git a/containers.go b/containers.go index 3e0f4ddbc..7ec7e8acb 100644 --- a/containers.go +++ b/containers.go @@ -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) diff --git a/store.go b/store.go index f445957ac..0e4f9daf1 100644 --- a/store.go +++ b/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) {