mirror of
https://github.com/project-zot/zot.git
synced 2024-12-16 21:56:37 -05:00
fix(parse): lock storage while reading using image store (#1719)
Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
This commit is contained in:
parent
ca2904762a
commit
94429a82df
1 changed files with 21 additions and 0 deletions
|
@ -4,6 +4,7 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
godigest "github.com/opencontainers/go-digest"
|
||||
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
|
@ -44,6 +45,11 @@ func ParseStorage(metaDB mTypes.MetaDB, storeController storage.StoreController,
|
|||
func ParseRepo(repo string, metaDB mTypes.MetaDB, storeController storage.StoreController, log log.Logger) error {
|
||||
imageStore := storeController.GetImageStore(repo)
|
||||
|
||||
var lockLatency time.Time
|
||||
|
||||
imageStore.RLock(&lockLatency)
|
||||
defer imageStore.RUnlock(&lockLatency)
|
||||
|
||||
indexBlob, err := imageStore.GetIndexContent(repo)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Str("repository", repo).Msg("load-repo: failed to read index.json for repo")
|
||||
|
@ -246,6 +252,11 @@ func getCosignSignatureLayersInfo(
|
|||
return layers, err
|
||||
}
|
||||
|
||||
var lockLatency time.Time
|
||||
|
||||
imageStore.RLock(&lockLatency)
|
||||
defer imageStore.RUnlock(&lockLatency)
|
||||
|
||||
for _, layer := range manifestContent.Layers {
|
||||
layerContent, err := imageStore.GetBlobContent(repo, layer.Digest)
|
||||
if err != nil {
|
||||
|
@ -293,6 +304,11 @@ func getNotationSignatureLayersInfo(
|
|||
|
||||
layer := manifestContent.Layers[0].Digest
|
||||
|
||||
var lockLatency time.Time
|
||||
|
||||
imageStore.RLock(&lockLatency)
|
||||
defer imageStore.RUnlock(&lockLatency)
|
||||
|
||||
layerContent, err := imageStore.GetBlobContent(repo, layer)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Str("repository", repo).Str("reference", manifestDigest).Str("layerDigest", layer.String()).Msg(
|
||||
|
@ -326,6 +342,11 @@ func NewManifestData(repoName string, manifestBlob []byte, imageStore storageTyp
|
|||
return mTypes.ManifestData{}, err
|
||||
}
|
||||
|
||||
var lockLatency time.Time
|
||||
|
||||
imageStore.RLock(&lockLatency)
|
||||
defer imageStore.RUnlock(&lockLatency)
|
||||
|
||||
configBlob, err := imageStore.GetBlobContent(repoName, manifestContent.Config.Digest)
|
||||
if err != nil {
|
||||
return mTypes.ManifestData{}, err
|
||||
|
|
Loading…
Reference in a new issue