CleanAll 清除所有的缓存
()
| 783 | |
| 784 | // CleanAll 清除所有的缓存 |
| 785 | func (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 | } |
nothing calls this directly
no test coverage detected