Skip to content
This repository was archived by the owner on May 11, 2024. It is now read-only.

Commit 26ed379

Browse files
feat(metrics): add more transaction sender metrics (#630)
1 parent 20a221b commit 26ed379

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

internal/metrics/metrics.go

+9
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ var (
4242
ProverSubmissionErrorCounter = metrics.NewRegisteredCounter("prover/proof/submission/error", nil)
4343
ProverSgxProofGeneratedCounter = metrics.NewRegisteredCounter("prover/proof/sgx/generated", nil)
4444
ProverPseProofGeneratedCounter = metrics.NewRegisteredCounter("prover/proof/pse/generated", nil)
45+
46+
// Transaction sender
47+
TxSenderSentCounter = metrics.NewRegisteredCounter("sender/sent/txs", nil)
48+
TxSenderConfirmedSuccessfulCounter = metrics.NewRegisteredCounter("sender/confirmed/successful/txs", nil)
49+
TxSenderConfirmedFailedCounter = metrics.NewRegisteredCounter("sender/confirmed/failed/txs", nil)
50+
TxSenderUnconfirmedCounter = metrics.NewRegisteredCounter("sender/unconfirmed/txs", nil)
51+
TxSenderGasPriceGauge = metrics.NewRegisteredGauge("sender/gasPrice", nil)
52+
TxSenderBlobGasPriceGauge = metrics.NewRegisteredGauge("sender/blob/gasPrice", nil)
53+
TxSenderTxIncludedTimeGauge = metrics.NewRegisteredGauge("sender/tx/includedTime", nil)
4554
)
4655

4756
// Serve starts the metrics server on the given address, will be closed when the given

pkg/sender/sender.go

+21-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
cmap "github.com/orcaman/concurrent-map/v2"
2020
"github.com/pborman/uuid"
2121

22+
"github.com/taikoxyz/taiko-client/internal/metrics"
2223
"github.com/taikoxyz/taiko-client/pkg/rpc"
2324
)
2425

@@ -59,6 +60,7 @@ type TxToConfirm struct {
5960
Retrys uint64
6061
CurrentTx *types.Transaction
6162
Receipt *types.Receipt
63+
CreatedAt time.Time
6264

6365
Err error
6466
}
@@ -306,9 +308,10 @@ func (s *Sender) send(tx *TxToConfirm, resetNonce bool) error {
306308
s.mu.Lock()
307309
defer s.mu.Unlock()
308310

309-
// Set the transaction ID
311+
// Set the transaction ID and its creation time
310312
if tx.ID == "" {
311313
tx.ID = uuid.New()
314+
tx.CreatedAt = time.Now()
312315
}
313316

314317
originalTx := tx.originalTx
@@ -371,6 +374,8 @@ func (s *Sender) send(tx *TxToConfirm, resetNonce bool) error {
371374
)
372375
return err
373376
}
377+
378+
metrics.TxSenderSentCounter.Inc(1)
374379
break
375380
}
376381
s.nonce++
@@ -427,6 +432,7 @@ func (s *Sender) resendUnconfirmedTxs() {
427432
continue
428433
}
429434
if err := s.send(unconfirmedTx, true); err != nil {
435+
metrics.TxSenderUnconfirmedCounter.Inc(1)
430436
log.Warn(
431437
"Failed to resend the transaction",
432438
"txId", id,
@@ -449,7 +455,8 @@ func (s *Sender) checkPendingTransactionsConfirmation() {
449455
// Ignore the transaction if it is pending.
450456
tx, isPending, err := s.client.TransactionByHash(s.ctx, pendingTx.CurrentTx.Hash())
451457
if err != nil {
452-
log.Warn("Failed to fetch transaction",
458+
log.Warn(
459+
"Failed to fetch transaction",
453460
"txId", pendingTx.ID,
454461
"nonce", pendingTx.CurrentTx.Nonce(),
455462
"hash", pendingTx.CurrentTx.Hash(),
@@ -474,15 +481,27 @@ func (s *Sender) checkPendingTransactionsConfirmation() {
474481
log.Warn("Failed to get the transaction receipt", "hash", pendingTx.CurrentTx.Hash(), "err", err)
475482
continue
476483
}
484+
485+
// Record the gas fee metrics.
486+
if receipt.BlobGasUsed == 0 {
487+
metrics.TxSenderGasPriceGauge.Update(receipt.EffectiveGasPrice.Int64())
488+
} else {
489+
metrics.TxSenderBlobGasPriceGauge.Update(receipt.BlobGasPrice.Int64())
490+
}
491+
492+
metrics.TxSenderTxIncludedTimeGauge.Update(int64(time.Since(pendingTx.CreatedAt).Seconds()))
493+
477494
pendingTx.Receipt = receipt
478495
if receipt.Status != types.ReceiptStatusSuccessful {
479496
pendingTx.Err = fmt.Errorf("transaction status is failed, hash: %s", receipt.TxHash)
497+
metrics.TxSenderConfirmedFailedCounter.Inc(1)
480498
s.releaseUnconfirmedTx(id)
481499
continue
482500
}
483501
}
484502
pendingTx.confirmations = s.head.Number.Uint64() - pendingTx.Receipt.BlockNumber.Uint64()
485503
if pendingTx.confirmations >= s.ConfirmationDepth {
504+
metrics.TxSenderConfirmedSuccessfulCounter.Inc(1)
486505
s.releaseUnconfirmedTx(id)
487506
}
488507
}

0 commit comments

Comments
 (0)