MCPcopy Create free account
hub / github.com/AbelChe/evil_minio / CopyObject

Method CopyObject

cmd/disk-cache.go:470–491  ·  view source on GitHub ↗

CopyObject reverts to backend after evicting any stale cache entries

(ctx context.Context, srcBucket, srcObject, dstBucket, dstObject string, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions)

Source from the content-addressed store, hash-verified

468
469// CopyObject reverts to backend after evicting any stale cache entries
470func (c *cacheObjects) CopyObject(ctx context.Context, srcBucket, srcObject, dstBucket, dstObject string, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (objInfo ObjectInfo, err error) {
471 copyObjectFn := c.InnerCopyObjectFn
472 if c.isCacheExclude(srcBucket, srcObject) || c.skipCache() {
473 return copyObjectFn(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
474 }
475 if srcBucket != dstBucket || srcObject != dstObject {
476 return copyObjectFn(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
477 }
478 // fetch diskCache if object is currently cached or nearest available cache drive
479 dcache, err := c.getCacheToLoc(ctx, srcBucket, srcObject)
480 if err != nil {
481 return copyObjectFn(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
482 }
483 // if currently cached, evict old entry and revert to backend.
484 if cachedObjInfo, _, cerr := dcache.Stat(ctx, srcBucket, srcObject); cerr == nil {
485 cc := cacheControlOpts(cachedObjInfo)
486 if cc == nil || !cc.isStale(cachedObjInfo.ModTime) {
487 dcache.Delete(ctx, srcBucket, srcObject)
488 }
489 }
490 return copyObjectFn(ctx, srcBucket, srcObject, dstBucket, dstObject, srcInfo, srcOpts, dstOpts)
491}
492
493// StorageInfo - returns underlying storage statistics.
494func (c *cacheObjects) StorageInfo(ctx context.Context) (cInfo CacheStorageInfo) {

Callers

nothing calls this directly

Calls 7

isCacheExcludeMethod · 0.95
skipCacheMethod · 0.95
getCacheToLocMethod · 0.95
cacheControlOptsFunction · 0.85
isStaleMethod · 0.80
StatMethod · 0.65
DeleteMethod · 0.65

Tested by

no test coverage detected