Commit 3c5aee9c authored by Mark Tyneway's avatar Mark Tyneway Committed by GitHub

Merge branch 'develop' into feat/mergify-loop

parents e86a8368 6442ddcf
---
---
chore(deps): bump github.com/ethereum/go-ethereum from 1.10.16 to 1.10.17 in /op-exporter
---
'@eth-optimism/contracts-bedrock': patch
---
Move core-utils to deps instead of devdeps
......@@ -59,9 +59,9 @@ devnet-clean:
rm -rf ./packages/contracts-bedrock/deployments/devnetL1
rm -rf ./.devnet
cd ./ops-bedrock && docker-compose down
docker volume rm ops-bedrock_l1_data
docker volume rm ops-bedrock_l2_data
docker volume rm ops-bedrock_op_log
docker image ls | grep ops-bedrock_ | cut -d ' ' -f 1 | xargs docker rmi
docker volume ls | grep ops-bedrock_ | cut -d ' ' -f 1 | xargs docker volume rm
.PHONY: devnet-clean
test-unit:
......
......@@ -34,7 +34,7 @@ services:
entrypoint: # pass the L2 specific flags by overriding the entry-point and adding extra arguments
- "/bin/sh"
- "/entrypoint.sh"
- "--authrpc.jwt-secret=/config/test-jwt-secret.txt"
- "--authrpc.jwtsecret=/config/test-jwt-secret.txt"
op-node:
depends_on:
......
# @eth-optimism/contracts-bedrock
## 0.1.2
### Patch Changes
- 07a84aed: Move core-utils to deps instead of devdeps
## 0.1.1
### Patch Changes
......
{
"name": "@eth-optimism/contracts-bedrock",
"version": "0.1.1",
"version": "0.1.2",
"description": "Contracts for Optimism Specs",
"main": "dist/index",
"types": "dist/index",
......
This diff is collapsed.
# @eth-optimism/teleportr
## 0.0.8
### Patch Changes
- 487a9731: Improve metrics
- b5ee3c70: Increase max disbursements to 15
## 0.0.7
### Patch Changes
......
......@@ -6,6 +6,7 @@ import (
"errors"
"math/big"
"strings"
"sync"
"time"
"github.com/ethereum-optimism/optimism/bss-core/metrics"
......@@ -33,7 +34,7 @@ var DisbursementFailedTopic = common.HexToHash(
"0x9b478c095979d3d3a7d602ffd9ee1f0843204d853558ae0882c8fcc0a5bc78cf",
)
const MaxDisbursements = 5
const MaxDisbursements = 15
type Config struct {
Name string
......@@ -48,6 +49,7 @@ type Config struct {
DisburserAddr common.Address
ChainID *big.Int
PrivKey *ecdsa.PrivateKey
ChainMetricsEnable bool
}
type Driver struct {
......@@ -59,9 +61,11 @@ type Driver struct {
metrics *Metrics
currentDepositIDs []uint64
chainMetricsEnabled bool
metricsMu sync.Mutex
}
func NewDriver(cfg Config) (*Driver, error) {
func NewDriver(cfg Config, parentCtx context.Context) (*Driver, error) {
if cfg.NumConfirmations == 0 {
panic("NumConfirmations cannot be zero")
}
......@@ -95,15 +99,21 @@ func NewDriver(cfg Config) (*Driver, error) {
)
walletAddr := crypto.PubkeyToAddress(cfg.PrivKey.PublicKey)
metricsInst := NewMetrics(cfg.Name)
return &Driver{
d := &Driver{
cfg: cfg,
depositContract: depositContract,
disburserContract: disburserContract,
rawDisburserContract: rawDisburserContract,
walletAddr: walletAddr,
metrics: NewMetrics(cfg.Name),
}, nil
metrics: metricsInst,
chainMetricsEnabled: cfg.ChainMetricsEnable,
}
if d.chainMetricsEnabled {
go d.collectChainMetricsBackground(parentCtx)
}
return d, nil
}
// Name is an identifier used to prefix logs for a particular service.
......@@ -140,8 +150,8 @@ func (d *Driver) ClearPendingTx(
func (d *Driver) GetBatchBlockRange(
ctx context.Context) (*big.Int, *big.Int, error) {
// Update balance metrics on each iteration.
d.updateBalanceMetrics(ctx)
// Update metrics on each iteration.
d.collectChainMetrics(ctx)
// Clear the current deposit IDs from any prior iteration.
d.currentDepositIDs = nil
......@@ -720,19 +730,63 @@ func (d *Driver) deletePendingTx(startID, endID uint64) error {
return nil
}
func (d *Driver) updateBalanceMetrics(ctx context.Context) {
disburserBal, err := d.cfg.L2Client.BalanceAt(ctx, d.walletAddr, nil)
func (d *Driver) collectChainMetricsBackground(ctx context.Context) {
tick := time.NewTicker(time.Minute)
defer tick.Stop()
for {
select {
case <-tick.C:
log.Info("collecting background metrics")
d.collectChainMetrics(ctx)
case <-ctx.Done():
return
}
}
}
func (d *Driver) collectChainMetrics(ctx context.Context) {
if !d.chainMetricsEnabled {
return
}
subCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
disburserBal, err := d.cfg.L2Client.BalanceAt(subCtx, d.cfg.DisburserAddr, nil)
if err != nil {
log.Error("Error getting disburser wallet balance", "err", err)
disburserBal = big.NewInt(0)
}
depositBal, err := d.cfg.L1Client.BalanceAt(ctx, d.cfg.DepositAddr, nil)
depositBal, err := d.cfg.L1Client.BalanceAt(subCtx, d.cfg.DepositAddr, nil)
if err != nil {
log.Error("Error getting deposit contract balance", "err", err)
depositBal = big.NewInt(0)
}
nextDepositID, err := d.depositContract.TotalDeposits(&bind.CallOpts{
Context: subCtx,
})
if err != nil {
log.Error("Error getting deposit contract total deposits")
nextDepositID = big.NewInt(0)
}
nextDisbursementID, err := d.disburserContract.TotalDisbursements(
&bind.CallOpts{
Context: subCtx,
},
)
if err != nil {
log.Error("Error getting deposit contract total disbursements")
nextDisbursementID = big.NewInt(0)
}
d.metricsMu.Lock()
d.metrics.DisburserBalance.Set(float64(disburserBal.Uint64()))
d.metrics.DepositContractBalance.Set(float64(depositBal.Uint64()))
d.metrics.ContractNextDepositID.Set(float64(nextDepositID.Uint64()))
d.metrics.ContractNextDisbursementID.Set(float64(nextDisbursementID.Uint64()))
d.metricsMu.Unlock()
}
......@@ -66,6 +66,10 @@ type Metrics struct {
// the disburser contract.
ContractNextDisbursementID prometheus.Gauge
// ContractNextDepositID tracks the next deposit id expected by the deposit
// contract.
ContractNextDepositID prometheus.Gauge
// DisburserBalance tracks Teleportr's disburser account balance.
DisburserBalance prometheus.Gauge
......@@ -117,6 +121,11 @@ func NewMetrics(subsystem string) *Metrics {
Help: "Next disbursement id expected by the disburser contract",
Subsystem: base.SubsystemName(),
}),
ContractNextDepositID: promauto.NewGauge(prometheus.GaugeOpts{
Name: "contract_next_deposit_id",
Help: "next deposit id expected by the deposit contract",
Subsystem: base.SubsystemName(),
}),
DisburserBalance: promauto.NewGauge(prometheus.GaugeOpts{
Name: "disburser_balance",
Help: "Balance in Wei of Teleportr's disburser wallet",
......
{
"name": "@eth-optimism/teleportr",
"version": "0.0.7",
"version": "0.0.8",
"private": true,
"devDependencies": {}
}
......@@ -110,7 +110,8 @@ func Main(gitVersion string) func(ctx *cli.Context) error {
DisburserAddr: disburserAddr,
ChainID: chainID,
PrivKey: disburserPrivKey,
})
ChainMetricsEnable: cfg.MetricsServerEnable,
}, ctx)
if err != nil {
return err
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment