filestore: do not create tmp dir, restore service after restart
Some checks are pending
Build / Goreleaser (push) Waiting to run
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (amd64_v3, darwin) (push) Blocked by required conditions
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (amd64_v3, linux) (push) Blocked by required conditions
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (amd64_v3, windows) (push) Blocked by required conditions
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (arm64_v8.0, darwin) (push) Blocked by required conditions
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (arm64_v8.0, linux) (push) Blocked by required conditions
Build / Upload artifacts-${{ matrix.os }}-${{ matrix.arch }} (arm64_v8.0, windows) (push) Blocked by required conditions

This commit is contained in:
criyle 2025-03-12 16:04:52 -04:00
parent 083207df04
commit 20598d1768
2 changed files with 28 additions and 7 deletions

View File

@ -12,6 +12,7 @@ import (
"net/http/pprof"
"os"
"os/signal"
"path"
"runtime"
"runtime/debug"
"strings"
@ -457,9 +458,10 @@ func newFilsStore(conf *config.Config) (filestore.FileStore, func() error) {
conf.Dir = os.TempDir()
}
var err error
conf.Dir, err = os.MkdirTemp(conf.Dir, "go-judge")
if err != nil {
logger.Sugar().Fatal("failed to create file store temp dir", err)
conf.Dir = path.Join(conf.Dir, "go-judge")
err = os.Mkdir(conf.Dir, os.ModePerm)
if err != nil && !errors.Is(err, os.ErrExist) {
logger.Sugar().Fatal("failed to create file store default dir", err)
}
cleanUp = func() error {
return os.RemoveAll(conf.Dir)

View File

@ -20,10 +20,10 @@ const (
)
var (
// 1ms -> 10s
// 1ms -> 100s
timeBuckets = []float64{
0.001, 0.002, 0.005, 0.008, 0.010, 0.025, 0.050, 0.075, 0.1, 0.2,
0.4, 0.6, 0.8, 1.0, 1.5, 2, 5, 10,
0.001, 0.002, 0.005, 0.010, 0.025, 0.050, 0.1, 0.2,
0.4, 0.8, 1.0, 2, 5, 10, 20, 50, 100,
}
// 4k (1<<12) -> 4g (1<<32)
@ -132,10 +132,29 @@ type metricsFileStore struct {
}
func newMetricsFileStore(fs filestore.FileStore) filestore.FileStore {
return &metricsFileStore{
store := &metricsFileStore{
FileStore: fs,
fileSize: make(map[string]int64),
}
fi := store.List()
for id := range fi {
_, file := store.Get(id)
if file == nil {
continue
}
if f, ok := file.(*envexec.FileInput); ok {
info, err := os.Stat(f.Path)
if err != nil {
continue
}
store.fileSize[id] = info.Size()
sf := float64(info.Size())
fsSizeHist.Observe(sf)
fsCurrentTotalSize.Add(sf)
fsCurrentTotalCount.Inc()
}
}
return store
}
func (m *metricsFileStore) Add(name, path string) (string, error) {