cache: in writeback mode skip etag verification (#13781)

if the commit is still in pending or failed status

This PR also does some minor code cleanup
This commit is contained in:
Poorna K
2021-11-30 10:22:42 -08:00
committed by GitHub
parent 4f3290309e
commit d21466f595
3 changed files with 21 additions and 4 deletions
+10
View File
@@ -276,6 +276,10 @@ func (c *cacheObjects) GetObjectNInfo(ctx context.Context, bucket, object string
bReader.ObjInfo.CacheStatus = CacheMiss
return bReader, err
}
// serve cached content without ETag verification if writeback commit is not yet complete
if skipETagVerification(cacheReader.ObjInfo.UserDefined) {
return cacheReader, nil
}
}
objInfo, err := c.InnerGetObjectInfoFn(ctx, bucket, object, opts)
@@ -422,6 +426,10 @@ func (c *cacheObjects) GetObjectInfo(ctx context.Context, bucket, object string,
c.cacheStats.incHit()
return cachedObjInfo, nil
}
// serve cache metadata without ETag verification if writeback commit is not yet complete
if skipETagVerification(cachedObjInfo.UserDefined) {
return cachedObjInfo, nil
}
}
objInfo, err := getObjectInfoFn(ctx, bucket, object, opts)
@@ -811,6 +819,8 @@ func (c *cacheObjects) uploadObject(ctx context.Context, oi ObjectInfo) {
func (c *cacheObjects) queueWritebackRetry(oi ObjectInfo) {
select {
case <-GlobalContext.Done():
return
case c.wbRetryCh <- oi:
c.uploadObject(GlobalContext, oi)
default: