Skip to content

Commit 20598d1

Browse files
committed
filestore: do not create tmp dir, restore service after restart
1 parent 083207d commit 20598d1

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

cmd/go-judge/main.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"net/http/pprof"
1313
"os"
1414
"os/signal"
15+
"path"
1516
"runtime"
1617
"runtime/debug"
1718
"strings"
@@ -457,9 +458,10 @@ func newFilsStore(conf *config.Config) (filestore.FileStore, func() error) {
457458
conf.Dir = os.TempDir()
458459
}
459460
var err error
460-
conf.Dir, err = os.MkdirTemp(conf.Dir, "go-judge")
461-
if err != nil {
462-
logger.Sugar().Fatal("failed to create file store temp dir", err)
461+
conf.Dir = path.Join(conf.Dir, "go-judge")
462+
err = os.Mkdir(conf.Dir, os.ModePerm)
463+
if err != nil && !errors.Is(err, os.ErrExist) {
464+
logger.Sugar().Fatal("failed to create file store default dir", err)
463465
}
464466
cleanUp = func() error {
465467
return os.RemoveAll(conf.Dir)

cmd/go-judge/metrics.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ const (
2020
)
2121

2222
var (
23-
// 1ms -> 10s
23+
// 1ms -> 100s
2424
timeBuckets = []float64{
25-
0.001, 0.002, 0.005, 0.008, 0.010, 0.025, 0.050, 0.075, 0.1, 0.2,
26-
0.4, 0.6, 0.8, 1.0, 1.5, 2, 5, 10,
25+
0.001, 0.002, 0.005, 0.010, 0.025, 0.050, 0.1, 0.2,
26+
0.4, 0.8, 1.0, 2, 5, 10, 20, 50, 100,
2727
}
2828

2929
// 4k (1<<12) -> 4g (1<<32)
@@ -132,10 +132,29 @@ type metricsFileStore struct {
132132
}
133133

134134
func newMetricsFileStore(fs filestore.FileStore) filestore.FileStore {
135-
return &metricsFileStore{
135+
store := &metricsFileStore{
136136
FileStore: fs,
137137
fileSize: make(map[string]int64),
138138
}
139+
fi := store.List()
140+
for id := range fi {
141+
_, file := store.Get(id)
142+
if file == nil {
143+
continue
144+
}
145+
if f, ok := file.(*envexec.FileInput); ok {
146+
info, err := os.Stat(f.Path)
147+
if err != nil {
148+
continue
149+
}
150+
store.fileSize[id] = info.Size()
151+
sf := float64(info.Size())
152+
fsSizeHist.Observe(sf)
153+
fsCurrentTotalSize.Add(sf)
154+
fsCurrentTotalCount.Inc()
155+
}
156+
}
157+
return store
139158
}
140159

141160
func (m *metricsFileStore) Add(name, path string) (string, error) {

0 commit comments

Comments
 (0)