MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / CleanAll

Method CleanAll

internal/caches/storage_file.go:785–872  ·  view source on GitHub ↗

CleanAll 清除所有的缓存

()

Source from the content-addressed store, hash-verified

783
784// CleanAll 清除所有的缓存
785func (this *FileStorage) CleanAll() error {
786 this.locker.Lock()
787 defer this.locker.Unlock()
788
789 // 先尝试内存缓存
790 this.runMemoryStorageSafety(func(memoryStorage *MemoryStorage) {
791 _ = memoryStorage.CleanAll()
792 })
793
794 err := this.list.CleanAll()
795 if err != nil {
796 return err
797 }
798
799 // 删除缓存和目录
800 // 不能直接删除子目录,比较危险
801
802 var rootDirs = []string{this.options.Dir}
803 var subDirs = this.subDirs // copy slice
804 if len(subDirs) > 0 {
805 for _, subDir := range subDirs {
806 rootDirs = append(rootDirs, subDir.Path)
807 }
808 }
809
810 var dirNameReg = regexp.MustCompile(`^[0-9a-f]{2}$`)
811 for _, rootDir := range rootDirs {
812 var dir = rootDir + "/p" + types.String(this.policy.Id)
813 err = func(dir string) error {
814 fp, err := os.Open(dir)
815 if err != nil {
816 return err
817 }
818 defer func() {
819 _ = fp.Close()
820 }()
821
822 stat, err := fp.Stat()
823 if err != nil {
824 return err
825 }
826
827 if !stat.IsDir() {
828 return nil
829 }
830
831 // 改成待删除
832 subDirs, err := fp.Readdir(-1)
833 if err != nil {
834 return err
835 }
836 for _, info := range subDirs {
837 var subDir = info.Name()
838
839 // 检查目录名
840 if !dirNameReg.MatchString(subDir) {
841 continue
842 }

Callers

nothing calls this directly

Calls 15

cleanDeletedDirsMethod · 0.95
NewFunction · 0.92
WarnFunction · 0.92
MatchStringMethod · 0.80
CleanAllMethod · 0.65
CloseMethod · 0.65
StatMethod · 0.65
NameMethod · 0.65
FormatMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected