Skip to content

Commit 4d83df1

Browse files
committed
test
1 parent eb3df85 commit 4d83df1

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

internal/cache/data/file_info.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,15 @@ type FileInfo struct {
4848
ObjectGeneration int64
4949
Offset uint64
5050
FileSize uint64
51+
FilePtr *os.File
5152
}
5253

5354
func (fi FileInfo) Size() uint64 {
5455
return fi.FileSize
5556
}
5657

5758
type FileSpec struct {
59+
FilePtr *os.File
5860
Path string
5961
FilePerm os.FileMode
6062
DirPerm os.FileMode

internal/cache/file/cache_handler.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,19 @@ func (chr *CacheHandler) createLocalFileReadHandle(objectName string, bucketName
108108
// and deletes the file in cache.
109109
func (chr *CacheHandler) cleanUpEvictedFile(fileInfo *data.FileInfo) error {
110110
key := fileInfo.Key
111-
_, err := key.Key()
111+
keyString, err := key.Key()
112112
if err != nil {
113113
return fmt.Errorf("cleanUpEvictedFile: while creating key: %w", err)
114114
}
115115

116116
chr.jobManager.InvalidateAndRemoveJob(key.ObjectName, key.BucketName)
117+
fileInfoCacheEntry := chr.fileInfoCache.LookUpWithoutChangingOrder(keyString)
118+
if fileInfoCacheEntry != nil {
119+
err := fileInfo.FilePtr.Close()
120+
if err != nil {
121+
return fmt.Errorf("error while closing cached file: %v", err)
122+
}
123+
}
117124

118125
localFilePath := util.GetDownloadPath(chr.cacheDir, util.GetObjectPath(key.BucketName, key.ObjectName))
119126
err = util.TruncateAndRemoveFile(localFilePath)

internal/cache/file/downloader/job.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ func (job *Job) updateStatusOffset(downloadedOffset int64) (err error) {
274274

275275
updatedFileInfo := data.FileInfo{
276276
Key: fileInfoKey, ObjectGeneration: job.object.Generation,
277+
FilePtr: job.fileSpec.FilePtr,
277278
FileSize: job.object.Size, Offset: uint64(downloadedOffset),
278279
}
279280

@@ -418,13 +419,14 @@ func (job *Job) downloadObjectAsync() {
418419
job.handleError(err)
419420
return
420421
}
421-
defer func() {
422-
err = cacheFile.Close()
423-
if err != nil {
424-
err = fmt.Errorf("downloadObjectAsync: error while closing cache file: %w", err)
425-
job.handleError(err)
426-
}
427-
}()
422+
job.fileSpec.FilePtr = cacheFile
423+
//defer func() {
424+
// err = cacheFile.Close()
425+
// if err != nil {
426+
// err = fmt.Errorf("downloadObjectAsync: error while closing cache file: %w", err)
427+
// job.handleError(err)
428+
// }
429+
//}()
428430

429431
// Both parallel and non-parallel download functions support cancellation in
430432
// case of job's cancellation.

0 commit comments

Comments
 (0)