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"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
godigest "github.com/opencontainers/go-digest"
|
godigest "github.com/opencontainers/go-digest"
|
||||||
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
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 {
|
func ParseRepo(repo string, metaDB mTypes.MetaDB, storeController storage.StoreController, log log.Logger) error {
|
||||||
imageStore := storeController.GetImageStore(repo)
|
imageStore := storeController.GetImageStore(repo)
|
||||||
|
|
||||||
|
var lockLatency time.Time
|
||||||
|
|
||||||
|
imageStore.RLock(&lockLatency)
|
||||||
|
defer imageStore.RUnlock(&lockLatency)
|
||||||
|
|
||||||
indexBlob, err := imageStore.GetIndexContent(repo)
|
indexBlob, err := imageStore.GetIndexContent(repo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Str("repository", repo).Msg("load-repo: failed to read index.json for repo")
|
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
|
return layers, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lockLatency time.Time
|
||||||
|
|
||||||
|
imageStore.RLock(&lockLatency)
|
||||||
|
defer imageStore.RUnlock(&lockLatency)
|
||||||
|
|
||||||
for _, layer := range manifestContent.Layers {
|
for _, layer := range manifestContent.Layers {
|
||||||
layerContent, err := imageStore.GetBlobContent(repo, layer.Digest)
|
layerContent, err := imageStore.GetBlobContent(repo, layer.Digest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -293,6 +304,11 @@ func getNotationSignatureLayersInfo(
|
||||||
|
|
||||||
layer := manifestContent.Layers[0].Digest
|
layer := manifestContent.Layers[0].Digest
|
||||||
|
|
||||||
|
var lockLatency time.Time
|
||||||
|
|
||||||
|
imageStore.RLock(&lockLatency)
|
||||||
|
defer imageStore.RUnlock(&lockLatency)
|
||||||
|
|
||||||
layerContent, err := imageStore.GetBlobContent(repo, layer)
|
layerContent, err := imageStore.GetBlobContent(repo, layer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Str("repository", repo).Str("reference", manifestDigest).Str("layerDigest", layer.String()).Msg(
|
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
|
return mTypes.ManifestData{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lockLatency time.Time
|
||||||
|
|
||||||
|
imageStore.RLock(&lockLatency)
|
||||||
|
defer imageStore.RUnlock(&lockLatency)
|
||||||
|
|
||||||
configBlob, err := imageStore.GetBlobContent(repoName, manifestContent.Config.Digest)
|
configBlob, err := imageStore.GetBlobContent(repoName, manifestContent.Config.Digest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return mTypes.ManifestData{}, err
|
return mTypes.ManifestData{}, err
|
||||||
|
|
Loading…
Reference in a new issue