} // list = append(cachelist, ...belist but entries already in cachelist) list := cachelist for _, blobpath := range belist { if _, ok := cachelistset[blobpath]; ok { // already in cachelist continue } list = append(list, blobpath) } return list, nil } var _ = blobstore.BlobRemover(&CachedBlobStore{}) func (cbs *CachedBlobStore) RemoveBlob(blobpath string) error { backendrm, ok := cbs.backendbs.(blobstore.BlobRemover) if !ok { return fmt.Errorf("Backendbs \"%v\" doesn't support removing blobs.", util.TryGetImplName(cbs.backendbs)) } cacherm, ok := cbs.cachebs.(blobstore.BlobRemover) if !ok { return fmt.Errorf("Cachebs \"%v\" doesn't support removing blobs.", util.TryGetImplName(cbs.cachebs)) } if err := cbs.entriesmgr.RemoveBlob(blobpath); err != nil { return err } cbs.bever.Delete(blobpath)
bs.stats.NumBlobSize++ ctx := bs.newAuthedContext(context.TODO()) obj, err := storage.StatObject(ctx, bs.bucketName, blobpath) if err != nil { if err == storage.ErrObjectNotExist { return -1, blobstore.ENOENT } return -1, err } return obj.Size, nil } var _ = blobstore.BlobRemover(&GCSBlobStore{}) func (bs *GCSBlobStore) RemoveBlob(blobpath string) error { bs.stats.NumRemoveBlob++ ctx := bs.newAuthedContext(context.TODO()) if err := storage.DeleteObject(ctx, bs.bucketName, blobpath); err != nil { return err } return nil } func (*GCSBlobStore) ImplName() string { return "GCSBlobStore" } func (bs *GCSBlobStore) GetStats() GCSBlobStoreStats { return bs.stats }