diff --git a/cmd/algod/main.go b/cmd/algod/main.go index 311b1507e6..47008256ac 100644 --- a/cmd/algod/main.go +++ b/cmd/algod/main.go @@ -445,6 +445,8 @@ var startupConfigCheckFields = []string{ "TxPoolExponentialIncreaseFactor", "TxPoolSize", "VerifiedTranscationsCacheSize", + "EnableP2P", + "EnableP2PHybridMode", } func resolveDataDir() string { diff --git a/network/p2p/pubsubTracer.go b/network/p2p/pubsubTracer.go index ca57bc69ce..9be496060e 100644 --- a/network/p2p/pubsubTracer.go +++ b/network/p2p/pubsubTracer.go @@ -31,6 +31,8 @@ var transactionMessagesP2PDuplicateMessage = metrics.MakeCounter(metrics.Transac var transactionMessagesP2PDeliverMessage = metrics.MakeCounter(metrics.TransactionMessagesP2PDeliverMessage) var transactionMessagesP2PUnderdeliverableMessage = metrics.MakeCounter(metrics.TransactionMessagesP2PUndeliverableMessage) var transactionMessagesP2PValidateMessage = metrics.MakeCounter(metrics.TransactionMessagesP2PValidateMessage) +var transactionMessagesP2PSentMessages = metrics.MakeCounter(metrics.TransactionMessagesP2PSentMessage) +var transactionMessagesP2PSentBytes = metrics.MakeCounter(metrics.TransactionMessagesP2PSentBytes) // pubsubTracer is a tracer for pubsub events used to track metrics. type pubsubTracer struct{} @@ -86,7 +88,16 @@ func (t pubsubTracer) ThrottlePeer(p peer.ID) {} func (t pubsubTracer) RecvRPC(rpc *pubsub.RPC) {} // SendRPC is invoked when a RPC is sent. -func (t pubsubTracer) SendRPC(rpc *pubsub.RPC, p peer.ID) {} +func (t pubsubTracer) SendRPC(rpc *pubsub.RPC, p peer.ID) { + if rpc != nil && len(rpc.Publish) > 0 { + for i := range rpc.Publish { + if rpc.Publish[i] != nil && rpc.Publish[i].Topic != nil && *rpc.Publish[i].Topic == TXTopicName { + transactionMessagesP2PSentMessages.Inc(nil) + transactionMessagesP2PSentBytes.AddUint64(uint64(len(rpc.Publish[i].Data)), nil) + } + } + } +} // DropRPC is invoked when an outbound RPC is dropped, typically because of a queue full. func (t pubsubTracer) DropRPC(rpc *pubsub.RPC, p peer.ID) {} diff --git a/test/heapwatch/requirements.txt b/test/heapwatch/requirements.txt index db92372c6d..cf443a24e4 100644 --- a/test/heapwatch/requirements.txt +++ b/test/heapwatch/requirements.txt @@ -6,5 +6,5 @@ plotly==5.16.0 py-algorand-sdk==2.3.0 kaleido==0.2.1 networkx==3.3 -gravis=0.1.0 -termcolor=2.4.0 +gravis==0.1.0 +termcolor==2.4.0 diff --git a/util/metrics/metrics.go b/util/metrics/metrics.go index fcc566312f..416d6a9dfb 100644 --- a/util/metrics/metrics.go +++ b/util/metrics/metrics.go @@ -139,6 +139,11 @@ var ( // TransactionMessagesP2PValidateMessage "Number of p2p pubsub transaction messages received for validation" TransactionMessagesP2PValidateMessage = MetricName{Name: "algod_transaction_messages_p2p_validate", Description: "Number of p2p pubsub transaction messages received for validation"} + // TransactionMessagesP2PSentMessage "Number of p2p pubsub transaction messages received for validation" + TransactionMessagesP2PSentMessage = MetricName{Name: "algod_transaction_messages_p2p_sent", Description: "Number of p2p pubsub transaction messages sent"} + // TransactionMessagesP2PSentBytes "Number p2p pubsub transaction bytes sent" + TransactionMessagesP2PSentBytes = MetricName{Name: "algod_transaction_messages_p2p_bytes", Description: "Number p2p pubsub transaction bytes sent"} + // TransactionGroupTxSyncHandled "Number of transaction groups handled via txsync" TransactionGroupTxSyncHandled = MetricName{Name: "algod_transaction_group_txsync_handled", Description: "Number of transaction groups handled via txsync"} // TransactionGroupTxSyncRemember "Number of transaction groups remembered via txsync"