From 1d7b48c5ee6f8ec27c3285def7b835bacda2b891 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Tue, 15 Nov 2022 22:25:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=99=E5=85=A5=E7=BC=93=E5=AD=98=E6=97=B6?= =?UTF-8?q?=E5=87=8F=E5=B0=91=E5=AF=B9=E7=BC=93=E5=AD=98=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E6=A3=80=E6=9F=A5=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/caches/storage_file.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/internal/caches/storage_file.go b/internal/caches/storage_file.go index d691418..e1db536 100644 --- a/internal/caches/storage_file.go +++ b/internal/caches/storage_file.go @@ -501,18 +501,6 @@ func (this *FileStorage) openWriter(key string, expiredAt int64, status int, siz return nil, NewCapacityError("the disk is full") } - // TODO 可以只stat一次 - _, err = os.Stat(dir) - if err != nil { - if !os.IsNotExist(err) { - return nil, err - } - err = os.MkdirAll(dir, 0777) - if err != nil { - return nil, err - } - } - // 检查缓存是否已经生成 var cachePathName = dir + "/" + hash var cachePath = cachePathName + ".cache" @@ -579,7 +567,15 @@ func (this *FileStorage) openWriter(key string, expiredAt int64, status int, siz var before = time.Now() writer, err := os.OpenFile(tmpPath, flags, 0666) if err != nil { - return nil, err + if os.IsNotExist(err) { + _ = os.MkdirAll(dir, 0777) + + // open file again + writer, err = os.OpenFile(tmpPath, flags, 0666) + } + if err != nil { + return nil, err + } } if !isFlushing { if time.Since(before) >= maxOpenFilesSlowCost {