mirror of
https://github.com/criyle/go-judge.git
synced 2025-11-04 14:50:02 +08:00
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
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:
parent
083207df04
commit
20598d1768
@ -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)
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user