Skip to content

Commit 1c2c807

Browse files
authored
Merge pull request #30 from dappnode/copilot/update-duties-checker-poll-interval
Make DutiesChecker poll interval configurable via environment variable
2 parents c5cc449 + 30ac87b commit 1c2c807

2 files changed

Lines changed: 36 additions & 18 deletions

File tree

cmd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func main() {
6262
Brain: brain,
6363
Notifier: notifier,
6464
Dappmanager: dappmanager,
65-
PollInterval: 1 * time.Minute,
65+
PollInterval: time.Duration(cfg.PollIntervalSeconds) * time.Second,
6666
SlashedNotified: make(map[domain.ValidatorIndex]bool),
6767
PreviouslyAllLive: true, // assume all validators were live at start
6868
PreviouslyOffline: false,

internal/config/config_loader.go

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@ package config
33
import (
44
"fmt"
55
"os"
6+
"strconv"
67
"strings"
78

89
"github.com/dappnode/validator-tracker/internal/logger"
910
)
1011

1112
type Config struct {
12-
BeaconEndpoint string
13-
Web3SignerEndpoint string
14-
Network string
15-
SignerDnpName string
16-
BeaconchaUrl string
17-
DappmanagerUrl string
18-
NotifierUrl string
19-
BrainUrl string
13+
BeaconEndpoint string
14+
Web3SignerEndpoint string
15+
Network string
16+
SignerDnpName string
17+
BeaconchaUrl string
18+
DappmanagerUrl string
19+
NotifierUrl string
20+
BrainUrl string
21+
PollIntervalSeconds int
2022
}
2123

2224
func LoadConfig() Config {
2325
network := os.Getenv("NETWORK")
2426
if network == "" {
25-
network = "hoodi" // default
27+
network = "mainnet"
2628
}
2729

2830
// Build the dynamic endpoints
@@ -49,6 +51,21 @@ func LoadConfig() Config {
4951
brainEndpoint = envBrain
5052
}
5153

54+
// Load poll interval for duties checker
55+
var pollIntervalSeconds int
56+
if network == "gnosis" {
57+
pollIntervalSeconds = 30 // default to 30 seconds for gnosis
58+
} else {
59+
pollIntervalSeconds = 60 // default to 60 seconds for other networks
60+
}
61+
if envPollInterval := os.Getenv("DUTIES_CHECKER_POLL_INTERVAL_SECONDS"); envPollInterval != "" {
62+
if parsed, err := strconv.Atoi(envPollInterval); err == nil && parsed > 0 {
63+
pollIntervalSeconds = parsed
64+
} else {
65+
logger.Warn("Invalid DUTIES_CHECKER_POLL_INTERVAL_SECONDS value '%s', using default %d seconds", envPollInterval, pollIntervalSeconds)
66+
}
67+
}
68+
5269
// Normalize network name for logs
5370
network = strings.ToLower(network)
5471
if network != "hoodi" && network != "holesky" && network != "mainnet" && network != "gnosis" && network != "lukso" {
@@ -80,13 +97,14 @@ func LoadConfig() Config {
8097
}
8198

8299
return Config{
83-
BeaconEndpoint: beaconEndpoint,
84-
Web3SignerEndpoint: web3SignerEndpoint,
85-
Network: network,
86-
SignerDnpName: dnpName,
87-
BeaconchaUrl: beaconchaUrl,
88-
DappmanagerUrl: dappmanagerEndpoint,
89-
NotifierUrl: notifierEndpoint,
90-
BrainUrl: brainEndpoint,
100+
BeaconEndpoint: beaconEndpoint,
101+
Web3SignerEndpoint: web3SignerEndpoint,
102+
Network: network,
103+
SignerDnpName: dnpName,
104+
BeaconchaUrl: beaconchaUrl,
105+
DappmanagerUrl: dappmanagerEndpoint,
106+
NotifierUrl: notifierEndpoint,
107+
BrainUrl: brainEndpoint,
108+
PollIntervalSeconds: pollIntervalSeconds,
91109
}
92110
}

0 commit comments

Comments
 (0)