Skip to content

Commit c977d4a

Browse files
committed
server: clean storage at init if dir is empty
1 parent 5bfbc52 commit c977d4a

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

pkg/compiler/storage/local.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,49 @@ type LocalStorage struct {
4444
binDir string
4545
}
4646

47-
func NewLocalStorage(log *zap.SugaredLogger, baseDir string) (*LocalStorage, error) {
47+
func NewLocalStorage(log *zap.SugaredLogger, baseDir string) (ls *LocalStorage, err error) {
48+
logger := log.Named("storage")
49+
isDirty := false
4850
workDir := filepath.Join(baseDir, workDirName)
49-
if err := os.MkdirAll(workDir, perm); err != nil {
51+
if err = os.MkdirAll(workDir, perm); err != nil {
5052
if !os.IsExist(err) {
5153
return nil, errors.Wrap(err, "failed to create temporary build directory for WASM compiler")
5254
}
5355
}
5456

57+
isDirty, err = isDirDirty(workDir)
58+
if err != nil {
59+
logger.Errorw("failed to check if work dir is dirty", "err", err)
60+
}
61+
62+
if isDirty {
63+
logger.Info("storage directory is not empty and dirty")
64+
}
65+
5566
return &LocalStorage{
67+
log: logger,
5668
workDir: workDir,
5769
useLock: &sync.Mutex{},
58-
dirty: abool.NewBool(false),
70+
dirty: abool.NewBool(isDirty),
5971
gcRun: abool.NewBool(false),
60-
log: log.Named("storage"),
6172
binDir: filepath.Join(workDir, binDirName),
6273
srcDir: filepath.Join(workDir, srcDirName),
6374
}, nil
6475
}
6576

77+
func isDirDirty(dir string) (bool, error) {
78+
items, err := ioutil.ReadDir(dir)
79+
if os.IsNotExist(err) {
80+
return false, nil
81+
}
82+
83+
if err != nil {
84+
return false, err
85+
}
86+
87+
return len(items) > 0, nil
88+
}
89+
6690
func (s LocalStorage) getOutputLocation(id ArtifactID) string {
6791
return filepath.Join(s.binDir, id.Ext(ExtWasm))
6892
}

0 commit comments

Comments
 (0)