Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
37be22d8
Unverified
Commit
37be22d8
authored
Sep 27, 2023
by
mergify[bot]
Committed by
GitHub
Sep 27, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into cl/fdg-specs
parents
545c2a94
a94aa1dc
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
84 additions
and
45 deletions
+84
-45
cli.go
indexer/cmd/indexer/cli.go
+3
-3
db.go
indexer/database/db.go
+9
-6
logger.go
indexer/database/logger.go
+58
-0
setup.go
indexer/e2e_tests/setup.go
+7
-2
indexer.toml
indexer/indexer.toml
+2
-7
agent.go
op-challenger/game/fault/agent.go
+1
-4
agent_test.go
op-challenger/game/fault/agent_test.go
+3
-5
player.go
op-challenger/game/fault/player.go
+1
-1
metrics.go
op-challenger/metrics/metrics.go
+0
-15
noop.go
op-challenger/metrics/noop.go
+0
-2
No files found.
indexer/cmd/indexer/cli.go
View file @
37be22d8
...
@@ -35,7 +35,7 @@ func runIndexer(ctx *cli.Context) error {
...
@@ -35,7 +35,7 @@ func runIndexer(ctx *cli.Context) error {
return
err
return
err
}
}
db
,
err
:=
database
.
NewDB
(
cfg
.
DB
)
db
,
err
:=
database
.
NewDB
(
log
,
cfg
.
DB
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
return
err
return
err
...
@@ -59,7 +59,7 @@ func runApi(ctx *cli.Context) error {
...
@@ -59,7 +59,7 @@ func runApi(ctx *cli.Context) error {
return
err
return
err
}
}
db
,
err
:=
database
.
NewDB
(
cfg
.
DB
)
db
,
err
:=
database
.
NewDB
(
log
,
cfg
.
DB
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
return
err
return
err
...
@@ -79,7 +79,7 @@ func runMigrations(ctx *cli.Context) error {
...
@@ -79,7 +79,7 @@ func runMigrations(ctx *cli.Context) error {
return
err
return
err
}
}
db
,
err
:=
database
.
NewDB
(
cfg
.
DB
)
db
,
err
:=
database
.
NewDB
(
log
,
cfg
.
DB
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
log
.
Error
(
"failed to connect to database"
,
"err"
,
err
)
return
err
return
err
...
...
indexer/database/db.go
View file @
37be22d8
...
@@ -12,9 +12,10 @@ import (
...
@@ -12,9 +12,10 @@ import (
"github.com/ethereum-optimism/optimism/op-service/retry"
"github.com/ethereum-optimism/optimism/op-service/retry"
"github.com/pkg/errors"
"github.com/pkg/errors"
"github.com/ethereum/go-ethereum/log"
"gorm.io/driver/postgres"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
)
var
(
var
(
...
@@ -35,7 +36,7 @@ type DB struct {
...
@@ -35,7 +36,7 @@ type DB struct {
BridgeTransactions
BridgeTransactionsDB
BridgeTransactions
BridgeTransactionsDB
}
}
func
NewDB
(
dbConfig
config
.
DBConfig
)
(
*
DB
,
error
)
{
func
NewDB
(
log
log
.
Logger
,
dbConfig
config
.
DBConfig
)
(
*
DB
,
error
)
{
retryStrategy
:=
&
retry
.
ExponentialStrategy
{
Min
:
1000
,
Max
:
20
_000
,
MaxJitter
:
250
}
retryStrategy
:=
&
retry
.
ExponentialStrategy
{
Min
:
1000
,
Max
:
20
_000
,
MaxJitter
:
250
}
dsn
:=
fmt
.
Sprintf
(
"host=%s dbname=%s sslmode=disable"
,
dbConfig
.
Host
,
dbConfig
.
Name
)
dsn
:=
fmt
.
Sprintf
(
"host=%s dbname=%s sslmode=disable"
,
dbConfig
.
Host
,
dbConfig
.
Name
)
...
@@ -52,21 +53,22 @@ func NewDB(dbConfig config.DBConfig) (*DB, error) {
...
@@ -52,21 +53,22 @@ func NewDB(dbConfig config.DBConfig) (*DB, error) {
gormConfig
:=
gorm
.
Config
{
gormConfig
:=
gorm
.
Config
{
// The indexer will explicitly manage the transactions
// The indexer will explicitly manage the transactions
SkipDefaultTransaction
:
true
,
SkipDefaultTransaction
:
true
,
Logger
:
logger
.
Default
.
LogMode
(
logger
.
Silent
),
Logger
:
newLogger
(
log
),
}
}
gorm
,
err
:=
retry
.
Do
[
*
gorm
.
DB
](
context
.
Background
(),
10
,
retryStrategy
,
func
()
(
*
gorm
.
DB
,
error
)
{
gorm
,
err
:=
retry
.
Do
[
*
gorm
.
DB
](
context
.
Background
(),
10
,
retryStrategy
,
func
()
(
*
gorm
.
DB
,
error
)
{
gorm
,
err
:=
gorm
.
Open
(
postgres
.
Open
(
dsn
),
&
gormConfig
)
gorm
,
err
:=
gorm
.
Open
(
postgres
.
Open
(
dsn
),
&
gormConfig
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"failed to connect to database"
)
return
nil
,
fmt
.
Errorf
(
"failed to connect to database: %w"
,
err
)
}
}
return
gorm
,
nil
return
gorm
,
nil
})
})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"failed to connect to database after multiple retries"
)
return
nil
,
fmt
.
Errorf
(
"failed to connect to database after multiple retries: %w"
,
err
)
}
}
db
:=
&
DB
{
db
:=
&
DB
{
gorm
:
gorm
,
gorm
:
gorm
,
Blocks
:
newBlocksDB
(
gorm
),
Blocks
:
newBlocksDB
(
gorm
),
...
@@ -75,6 +77,7 @@ func NewDB(dbConfig config.DBConfig) (*DB, error) {
...
@@ -75,6 +77,7 @@ func NewDB(dbConfig config.DBConfig) (*DB, error) {
BridgeMessages
:
newBridgeMessagesDB
(
gorm
),
BridgeMessages
:
newBridgeMessagesDB
(
gorm
),
BridgeTransactions
:
newBridgeTransactionsDB
(
gorm
),
BridgeTransactions
:
newBridgeTransactionsDB
(
gorm
),
}
}
return
db
,
nil
return
db
,
nil
}
}
...
...
indexer/database/logger.go
0 → 100644
View file @
37be22d8
package
database
import
(
"context"
"fmt"
"strings"
"time"
"github.com/ethereum/go-ethereum/log"
"gorm.io/gorm/logger"
)
var
(
_
logger
.
Interface
=
Logger
{}
SlowThresholdMilliseconds
=
200
)
type
Logger
struct
{
log
log
.
Logger
}
func
newLogger
(
log
log
.
Logger
)
Logger
{
return
Logger
{
log
.
New
(
"module"
,
"db"
)}
}
func
(
l
Logger
)
LogMode
(
lvl
logger
.
LogLevel
)
logger
.
Interface
{
return
l
}
func
(
l
Logger
)
Info
(
ctx
context
.
Context
,
msg
string
,
data
...
interface
{})
{
l
.
log
.
Info
(
fmt
.
Sprintf
(
msg
,
data
...
))
}
func
(
l
Logger
)
Warn
(
ctx
context
.
Context
,
msg
string
,
data
...
interface
{})
{
l
.
log
.
Warn
(
fmt
.
Sprintf
(
msg
,
data
...
))
}
func
(
l
Logger
)
Error
(
ctx
context
.
Context
,
msg
string
,
data
...
interface
{})
{
l
.
log
.
Error
(
fmt
.
Sprintf
(
msg
,
data
...
))
}
func
(
l
Logger
)
Trace
(
ctx
context
.
Context
,
begin
time
.
Time
,
fc
func
()
(
sql
string
,
rowsAffected
int64
),
err
error
)
{
elapsedMs
:=
time
.
Since
(
begin
)
.
Milliseconds
()
// omit any values for batch inserts as they can be very long
sql
,
rows
:=
fc
()
if
i
:=
strings
.
Index
(
strings
.
ToLower
(
sql
),
"values"
);
i
>
0
{
sql
=
fmt
.
Sprintf
(
"%sVALUES (...)"
,
sql
[
:
i
])
}
if
elapsedMs
<
200
{
l
.
log
.
Debug
(
"database operation"
,
"duration_ms"
,
elapsedMs
,
"rows_affected"
,
rows
,
"sql"
,
sql
)
}
else
{
l
.
log
.
Warn
(
"database operation"
,
"duration_ms"
,
elapsedMs
,
"rows_affected"
,
rows
,
"sql"
,
sql
)
}
}
indexer/e2e_tests/setup.go
View file @
37be22d8
...
@@ -86,7 +86,8 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
...
@@ -86,7 +86,8 @@ func createE2ETestSuite(t *testing.T) E2ETestSuite {
MetricsServer
:
config
.
ServerConfig
{
Host
:
"127.0.0.1"
,
Port
:
0
},
MetricsServer
:
config
.
ServerConfig
{
Host
:
"127.0.0.1"
,
Port
:
0
},
}
}
db
,
err
:=
database
.
NewDB
(
indexerCfg
.
DB
)
// Emit debug log levels
db
,
err
:=
database
.
NewDB
(
testlog
.
Logger
(
t
,
log
.
LvlDebug
)
.
New
(
"role"
,
"db"
),
indexerCfg
.
DB
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
t
.
Cleanup
(
func
()
{
db
.
Close
()
})
t
.
Cleanup
(
func
()
{
db
.
Close
()
})
...
@@ -138,9 +139,13 @@ func setupTestDatabase(t *testing.T) string {
...
@@ -138,9 +139,13 @@ func setupTestDatabase(t *testing.T) string {
Password
:
""
,
Password
:
""
,
}
}
// NewDB will create the database schema
// NewDB will create the database schema
db
,
err
:=
database
.
NewDB
(
dbConfig
)
silentLog
:=
log
.
New
()
silentLog
.
SetHandler
(
log
.
DiscardHandler
())
db
,
err
:=
database
.
NewDB
(
silentLog
,
dbConfig
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
defer
db
.
Close
()
defer
db
.
Close
()
err
=
db
.
ExecuteSQLMigration
(
"../migrations"
)
err
=
db
.
ExecuteSQLMigration
(
"../migrations"
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
...
...
indexer/indexer.toml
View file @
37be22d8
# Chain configures l1 chain addresses
# Chain configures l1 chain addresses
# Can configure them manually or use a preset l2 ChainId for known chains including OP Mainnet, OP Goerli, Base, Base Goerli, Zora, and Zora goerli
# Can configure them manually or use a preset L2 ChainId for known chains
# - i.e OP Mainnet, OP Goerli, Base, Base Goerli, Zora, Zora Goerli, etc
[chain]
[chain]
preset
=
$INDEXER_CHAIN_PRESET
preset
=
$INDEXER_CHAIN_PRESET
# L1 Config
# L1 Config
...
@@ -15,17 +15,12 @@ l2-polling-interval = 0
...
@@ -15,17 +15,12 @@ l2-polling-interval = 0
l2-header-buffer-size
=
0
l2-header-buffer-size
=
0
l2-confirmation-depth
=
0
l2-confirmation-depth
=
0
[rpcs]
[rpcs]
l1-rpc
=
"${INDEXER_RPC_URL_L1}"
l1-rpc
=
"${INDEXER_RPC_URL_L1}"
l2-rpc
=
"${INDEXER_RPC_URL_L2}"
l2-rpc
=
"${INDEXER_RPC_URL_L2}"
[db]
[db]
host
=
"$INDEXER_DB_HOST"
host
=
"$INDEXER_DB_HOST"
# this port may be problematic once we depoly
# the DATABASE_URL looks like this for previous services and didn't include a port
# DATABASE_URL="postgresql://${INDEXER_DB_USER}:${INDEXER_DB_PASS}@localhost/${INDEXER_DB_NAME}?host=${INDEXER_DB_HOST}"
# If not problematic delete these comments
port
=
$INDEXER_DB_PORT
port
=
$INDEXER_DB_PORT
user
=
"$INDEXER_DB_USER"
user
=
"$INDEXER_DB_USER"
password
=
"$INDEXER_DB_PASS"
password
=
"$INDEXER_DB_PASS"
...
...
op-challenger/game/fault/agent.go
View file @
37be22d8
...
@@ -30,7 +30,6 @@ type ClaimLoader interface {
...
@@ -30,7 +30,6 @@ type ClaimLoader interface {
type
Agent
struct
{
type
Agent
struct
{
metrics
metrics
.
Metricer
metrics
metrics
.
Metricer
fdgAddr
common
.
Address
solver
*
solver
.
GameSolver
solver
*
solver
.
GameSolver
loader
ClaimLoader
loader
ClaimLoader
responder
Responder
responder
Responder
...
@@ -40,10 +39,9 @@ type Agent struct {
...
@@ -40,10 +39,9 @@ type Agent struct {
log
log
.
Logger
log
log
.
Logger
}
}
func
NewAgent
(
m
metrics
.
Metricer
,
addr
common
.
Address
,
loader
ClaimLoader
,
maxDepth
int
,
trace
types
.
TraceProvider
,
responder
Responder
,
updater
types
.
OracleUpdater
,
agreeWithProposedOutput
bool
,
log
log
.
Logger
)
*
Agent
{
func
NewAgent
(
m
metrics
.
Metricer
,
loader
ClaimLoader
,
maxDepth
int
,
trace
types
.
TraceProvider
,
responder
Responder
,
updater
types
.
OracleUpdater
,
agreeWithProposedOutput
bool
,
log
log
.
Logger
)
*
Agent
{
return
&
Agent
{
return
&
Agent
{
metrics
:
m
,
metrics
:
m
,
fdgAddr
:
addr
,
solver
:
solver
.
NewGameSolver
(
maxDepth
,
trace
),
solver
:
solver
.
NewGameSolver
(
maxDepth
,
trace
),
loader
:
loader
,
loader
:
loader
,
responder
:
responder
,
responder
:
responder
,
...
@@ -198,7 +196,6 @@ func (a *Agent) newGameFromContracts(ctx context.Context) (types.Game, error) {
...
@@ -198,7 +196,6 @@ func (a *Agent) newGameFromContracts(ctx context.Context) (types.Game, error) {
if
len
(
claims
)
==
0
{
if
len
(
claims
)
==
0
{
return
nil
,
errors
.
New
(
"no claims"
)
return
nil
,
errors
.
New
(
"no claims"
)
}
}
a
.
metrics
.
RecordGameClaimCount
(
a
.
fdgAddr
.
String
(),
len
(
claims
))
game
:=
types
.
NewGameState
(
a
.
agreeWithProposedOutput
,
claims
[
0
],
uint64
(
a
.
maxDepth
))
game
:=
types
.
NewGameState
(
a
.
agreeWithProposedOutput
,
claims
[
0
],
uint64
(
a
.
maxDepth
))
if
err
:=
game
.
PutAll
(
claims
[
1
:
]);
err
!=
nil
{
if
err
:=
game
.
PutAll
(
claims
[
1
:
]);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to load claims into the local state: %w"
,
err
)
return
nil
,
fmt
.
Errorf
(
"failed to load claims into the local state: %w"
,
err
)
...
...
op-challenger/game/fault/agent_test.go
View file @
37be22d8
...
@@ -10,11 +10,10 @@ import (
...
@@ -10,11 +10,10 @@ import (
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
gameTypes
"github.com/ethereum-optimism/optimism/op-challenger/game/types"
gameTypes
"github.com/ethereum-optimism/optimism/op-challenger/game/types"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-challenger/metrics"
"github.com/ethereum-optimism/optimism/op-node/testlog"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/log"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/require"
"github.com/ethereum-optimism/optimism/op-node/testlog"
)
)
// TestShouldResolve tests the resolution logic.
// TestShouldResolve tests the resolution logic.
...
@@ -111,12 +110,11 @@ func TestLoadClaimsWhenGameNotResolvable(t *testing.T) {
...
@@ -111,12 +110,11 @@ func TestLoadClaimsWhenGameNotResolvable(t *testing.T) {
func
setupTestAgent
(
t
*
testing
.
T
,
agreeWithProposedOutput
bool
)
(
*
Agent
,
*
stubClaimLoader
,
*
stubResponder
)
{
func
setupTestAgent
(
t
*
testing
.
T
,
agreeWithProposedOutput
bool
)
(
*
Agent
,
*
stubClaimLoader
,
*
stubResponder
)
{
logger
:=
testlog
.
Logger
(
t
,
log
.
LvlInfo
)
logger
:=
testlog
.
Logger
(
t
,
log
.
LvlInfo
)
claimLoader
:=
&
stubClaimLoader
{}
claimLoader
:=
&
stubClaimLoader
{}
addr
:=
common
.
HexToAddress
(
"0x1234"
)
depth
:=
4
depth
:=
4
trace
:=
alphabet
.
NewTraceProvider
(
"abcd"
,
uint64
(
depth
))
trace
:=
alphabet
.
NewTraceProvider
(
"abcd"
,
uint64
(
depth
))
responder
:=
&
stubResponder
{}
responder
:=
&
stubResponder
{}
updater
:=
&
stubUpdater
{}
updater
:=
&
stubUpdater
{}
agent
:=
NewAgent
(
metrics
.
NoopMetrics
,
addr
,
claimLoader
,
depth
,
trace
,
responder
,
updater
,
agreeWithProposedOutput
,
logger
)
agent
:=
NewAgent
(
metrics
.
NoopMetrics
,
claimLoader
,
depth
,
trace
,
responder
,
updater
,
agreeWithProposedOutput
,
logger
)
return
agent
,
claimLoader
,
responder
return
agent
,
claimLoader
,
responder
}
}
...
...
op-challenger/game/fault/player.go
View file @
37be22d8
...
@@ -106,7 +106,7 @@ func NewGamePlayer(
...
@@ -106,7 +106,7 @@ func NewGamePlayer(
}
}
return
&
GamePlayer
{
return
&
GamePlayer
{
act
:
NewAgent
(
m
,
addr
,
loader
,
int
(
gameDepth
),
provider
,
responder
,
updater
,
cfg
.
AgreeWithProposedOutput
,
logger
)
.
Act
,
act
:
NewAgent
(
m
,
loader
,
int
(
gameDepth
),
provider
,
responder
,
updater
,
cfg
.
AgreeWithProposedOutput
,
logger
)
.
Act
,
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
agreeWithProposedOutput
:
cfg
.
AgreeWithProposedOutput
,
loader
:
loader
,
loader
:
loader
,
logger
:
logger
,
logger
:
logger
,
...
...
op-challenger/metrics/metrics.go
View file @
37be22d8
...
@@ -25,8 +25,6 @@ type Metricer interface {
...
@@ -25,8 +25,6 @@ type Metricer interface {
RecordGameMove
()
RecordGameMove
()
RecordCannonExecutionTime
(
t
float64
)
RecordCannonExecutionTime
(
t
float64
)
RecordGameClaimCount
(
addr
string
,
count
int
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
RecordGameUpdateScheduled
()
RecordGameUpdateScheduled
()
...
@@ -55,8 +53,6 @@ type Metrics struct {
...
@@ -55,8 +53,6 @@ type Metrics struct {
cannonExecutionTime
prometheus
.
Histogram
cannonExecutionTime
prometheus
.
Histogram
gameClaimCount
prometheus
.
GaugeVec
trackedGames
prometheus
.
GaugeVec
trackedGames
prometheus
.
GaugeVec
inflightGames
prometheus
.
Gauge
inflightGames
prometheus
.
Gauge
}
}
...
@@ -111,13 +107,6 @@ func NewMetrics() *Metrics {
...
@@ -111,13 +107,6 @@ func NewMetrics() *Metrics {
[]
float64
{
1.0
,
10.0
},
[]
float64
{
1.0
,
10.0
},
prometheus
.
ExponentialBuckets
(
30.0
,
2.0
,
14
)
...
),
prometheus
.
ExponentialBuckets
(
30.0
,
2.0
,
14
)
...
),
}),
}),
gameClaimCount
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
Namespace
,
Name
:
"game_claim_count"
,
Help
:
"Number of claims in the game"
,
},
[]
string
{
"game_address"
,
}),
trackedGames
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
trackedGames
:
*
factory
.
NewGaugeVec
(
prometheus
.
GaugeOpts
{
Namespace
:
Namespace
,
Namespace
:
Namespace
,
Name
:
"tracked_games"
,
Name
:
"tracked_games"
,
...
@@ -190,10 +179,6 @@ func (m *Metrics) DecIdleExecutors() {
...
@@ -190,10 +179,6 @@ func (m *Metrics) DecIdleExecutors() {
m
.
executors
.
WithLabelValues
(
"idle"
)
.
Dec
()
m
.
executors
.
WithLabelValues
(
"idle"
)
.
Dec
()
}
}
func
(
m
*
Metrics
)
RecordGameClaimCount
(
addr
string
,
count
int
)
{
m
.
gameClaimCount
.
With
(
prometheus
.
Labels
{
"game_address"
:
addr
})
.
Set
(
float64
(
count
))
}
func
(
m
*
Metrics
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
{
func
(
m
*
Metrics
)
RecordGamesStatus
(
inProgress
,
defenderWon
,
challengerWon
int
)
{
m
.
trackedGames
.
WithLabelValues
(
"in_progress"
)
.
Set
(
float64
(
inProgress
))
m
.
trackedGames
.
WithLabelValues
(
"in_progress"
)
.
Set
(
float64
(
inProgress
))
m
.
trackedGames
.
WithLabelValues
(
"defender_won"
)
.
Set
(
float64
(
defenderWon
))
m
.
trackedGames
.
WithLabelValues
(
"defender_won"
)
.
Set
(
float64
(
defenderWon
))
...
...
op-challenger/metrics/noop.go
View file @
37be22d8
...
@@ -27,5 +27,3 @@ func (*NoopMetricsImpl) IncActiveExecutors() {}
...
@@ -27,5 +27,3 @@ func (*NoopMetricsImpl) IncActiveExecutors() {}
func
(
*
NoopMetricsImpl
)
DecActiveExecutors
()
{}
func
(
*
NoopMetricsImpl
)
DecActiveExecutors
()
{}
func
(
*
NoopMetricsImpl
)
IncIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
IncIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
DecIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
DecIdleExecutors
()
{}
func
(
*
NoopMetricsImpl
)
RecordGameClaimCount
(
addr
string
,
count
int
)
{}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment