@@ -104,6 +104,8 @@ type Layer interface {
104104 // Done releases the reference to this layer. The resources related to this layer will be
105105 // discarded sooner or later. Queries after calling this function won't be serviced.
106106 Done ()
107+
108+ GetCacheRefKey () string
107109}
108110
109111// Info is the current status of a layer.
@@ -226,6 +228,12 @@ func newCache(root string, cacheType string, cfg config.FSConfig) (cache.BlobCac
226228 )
227229}
228230
231+ func (r * Resolver ) Evict (name string ) {
232+ r .layerCacheMu .Lock ()
233+ r .layerCache .Remove (name )
234+ r .layerCacheMu .Unlock ()
235+ }
236+
229237// Resolve resolves a layer based on the passed layer blob information.
230238func (r * Resolver ) Resolve (ctx context.Context , hosts []docker.RegistryHost , refspec reference.Spec , desc , sociDesc ocispec.Descriptor , opCounter * FuseOperationCounter , disableVerification bool , metadataOpts ... metadata.Option ) (_ Layer , retErr error ) {
231239 name := refspec .String () + "/" + desc .Digest .String ()
@@ -339,7 +347,7 @@ func (r *Resolver) Resolve(ctx context.Context, hosts []docker.RegistryHost, ref
339347 }
340348 disableXAttrs := getDisableXAttrAnnotation (sociDesc )
341349 // Combine layer information together and cache it.
342- l := newLayer (r , desc , blobR , vr , bgLayerResolver , opCounter , disableXAttrs )
350+ l := newLayer (r , desc , name , blobR , vr , bgLayerResolver , opCounter , disableXAttrs )
343351 r .layerCacheMu .Lock ()
344352 cachedL , done2 , added := r .layerCache .Add (name , l )
345353 r .layerCacheMu .Unlock ()
@@ -387,6 +395,7 @@ func (r *Resolver) resolveBlob(ctx context.Context, hosts []docker.RegistryHost,
387395func newLayer (
388396 resolver * Resolver ,
389397 desc ocispec.Descriptor ,
398+ cacheRefKey string ,
390399 blob * blobRef ,
391400 r reader.Reader ,
392401 bgResolver backgroundfetcher.Resolver ,
@@ -396,6 +405,7 @@ func newLayer(
396405 return & layer {
397406 resolver : resolver ,
398407 desc : desc ,
408+ cacheRefKey : cacheRefKey ,
399409 blob : blob ,
400410 r : r ,
401411 bgResolver : bgResolver ,
@@ -405,9 +415,10 @@ func newLayer(
405415}
406416
407417type layer struct {
408- resolver * Resolver
409- desc ocispec.Descriptor
410- blob * blobRef
418+ resolver * Resolver
419+ desc ocispec.Descriptor
420+ cacheRefKey string
421+ blob * blobRef
411422
412423 bgResolver backgroundfetcher.Resolver
413424
@@ -420,6 +431,10 @@ type layer struct {
420431 closedMu sync.Mutex
421432}
422433
434+ func (l * layer ) GetCacheRefKey () string {
435+ return l .cacheRefKey
436+ }
437+
423438func (l * layer ) Info () Info {
424439 return Info {
425440 Digest : l .desc .Digest ,
0 commit comments