mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-04-23 03:00:50 -04:00
Compare commits
1 Commits
v4.7.12-wi
...
coordinato
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6783b411a |
@@ -35,7 +35,7 @@ func InitController(cfg *config.ProxyConfig, db *gorm.DB, reg prometheus.Registe
|
||||
clients[cli.Name()] = cli
|
||||
}
|
||||
|
||||
proverManager := NewProverManagerWithPersistent(100, db)
|
||||
proverManager := NewProverManagerWithPersistent(100, db, reg)
|
||||
priorityManager := NewPriorityUpstreamManagerPersistent(db)
|
||||
|
||||
Auth = NewAuthController(cfg, clients, proverManager)
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/scroll-tech/go-ethereum/log"
|
||||
|
||||
ctypes "scroll-tech/common/types"
|
||||
@@ -21,23 +22,78 @@ type ProverManager struct {
|
||||
willDeprecatedData map[string]*proverSession
|
||||
sizeLimit int
|
||||
persistent *proverDataPersist
|
||||
|
||||
clientLoginTries *prometheus.CounterVec
|
||||
getTaskTries *prometheus.CounterVec
|
||||
submitTaskTries *prometheus.CounterVec
|
||||
|
||||
upstreamFail *prometheus.GaugeVec
|
||||
clientLoginFail *prometheus.CounterVec
|
||||
getTaskFail *prometheus.CounterVec
|
||||
submitTaskFail *prometheus.CounterVec
|
||||
}
|
||||
|
||||
func NewProverManager(size int) *ProverManager {
|
||||
return &ProverManager{
|
||||
func NewProverManager(size int, reg prometheus.Registerer) *ProverManager {
|
||||
m := &ProverManager{
|
||||
data: make(map[string]*proverSession),
|
||||
willDeprecatedData: make(map[string]*proverSession),
|
||||
sizeLimit: size,
|
||||
}
|
||||
m.registerCounters(reg)
|
||||
return m
|
||||
}
|
||||
|
||||
func NewProverManagerWithPersistent(size int, db *gorm.DB) *ProverManager {
|
||||
return &ProverManager{
|
||||
func NewProverManagerWithPersistent(size int, db *gorm.DB, reg prometheus.Registerer) *ProverManager {
|
||||
m := &ProverManager{
|
||||
data: make(map[string]*proverSession),
|
||||
willDeprecatedData: make(map[string]*proverSession),
|
||||
sizeLimit: size,
|
||||
persistent: NewProverDataPersist(db),
|
||||
}
|
||||
m.registerCounters(reg)
|
||||
return m
|
||||
}
|
||||
|
||||
func (m *ProverManager) registerCounters(reg prometheus.Registerer) {
|
||||
m.upstreamFail = prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
||||
Name: "upstream_error",
|
||||
Help: "Set to 1 while a upstream session can not be obtained",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.clientLoginFail = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "login_failure",
|
||||
Help: "Client login has encountered an error",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.getTaskFail = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "getTask_failure",
|
||||
Help: "GetTask request has encountered an error",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.submitTaskFail = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "submitTask_failure",
|
||||
Help: "SubmitTask request has encountered an error",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.clientLoginTries = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "prover_speed",
|
||||
Help: "Cycle against running time of prover (in mhz)",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.getTaskTries = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "prover_speed",
|
||||
Help: "Cycle against running time of prover (in mhz)",
|
||||
}, []string{"upstream"})
|
||||
|
||||
m.submitTaskTries = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "prover_speed",
|
||||
Help: "Cycle against running time of prover (in mhz)",
|
||||
}, []string{"upstream"})
|
||||
|
||||
if reg != nil {
|
||||
reg.MustRegister(m.upstreamFail)
|
||||
reg.MustRegister(m.clientLoginFail)
|
||||
}
|
||||
}
|
||||
|
||||
// get retrieves ProverSession for a given user key, returns empty if still not exists
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
|
||||
// TestProverManagerGetAndCreate validates basic creation and retrieval semantics.
|
||||
func TestProverManagerGetAndCreate(t *testing.T) {
|
||||
pm := NewProverManager(2)
|
||||
pm := NewProverManager(2, nil)
|
||||
|
||||
if got := pm.Get("user1"); got != nil {
|
||||
t.Fatalf("expected nil for non-existent key, got: %+v", got)
|
||||
@@ -26,7 +26,7 @@ func TestProverManagerGetAndCreate(t *testing.T) {
|
||||
// TestProverManagerRolloverAndPromotion verifies rollover when sizeLimit is reached
|
||||
// and that old entries are accessible and promoted back to active data map.
|
||||
func TestProverManagerRolloverAndPromotion(t *testing.T) {
|
||||
pm := NewProverManager(2)
|
||||
pm := NewProverManager(2, nil)
|
||||
|
||||
s1 := pm.GetOrCreate("u1")
|
||||
s2 := pm.GetOrCreate("u2")
|
||||
|
||||
Reference in New Issue
Block a user