@@ -30,7 +30,6 @@ import (
3030 "github.com/ethereum/go-ethereum/core/txpool"
3131 "github.com/ethereum/go-ethereum/core/types"
3232 "github.com/ethereum/go-ethereum/log"
33- "github.com/ethereum/go-ethereum/metrics"
3433)
3534
3635const (
8079 txFetchTimeout = 5 * time .Second
8180)
8281
83- var (
84- txAnnounceInMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/announces/in" , nil )
85- txAnnounceKnownMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/announces/known" , nil )
86- txAnnounceUnderpricedMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/announces/underpriced" , nil )
87- txAnnounceDOSMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/announces/dos" , nil )
88-
89- txBroadcastInMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/broadcasts/in" , nil )
90- txBroadcastKnownMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/broadcasts/known" , nil )
91- txBroadcastUnderpricedMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/broadcasts/underpriced" , nil )
92- txBroadcastOtherRejectMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/broadcasts/otherreject" , nil )
93-
94- txRequestOutMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/request/out" , nil )
95- txRequestFailMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/request/fail" , nil )
96- txRequestDoneMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/request/done" , nil )
97- txRequestTimeoutMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/request/timeout" , nil )
98-
99- txReplyInMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/replies/in" , nil )
100- txReplyKnownMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/replies/known" , nil )
101- txReplyUnderpricedMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/replies/underpriced" , nil )
102- txReplyOtherRejectMeter = metrics .NewRegisteredMeter ("eth/fetcher/transaction/replies/otherreject" , nil )
103-
104- txFetcherWaitingPeers = metrics .NewRegisteredGauge ("eth/fetcher/transaction/waiting/peers" , nil )
105- txFetcherWaitingHashes = metrics .NewRegisteredGauge ("eth/fetcher/transaction/waiting/hashes" , nil )
106- txFetcherQueueingPeers = metrics .NewRegisteredGauge ("eth/fetcher/transaction/queueing/peers" , nil )
107- txFetcherQueueingHashes = metrics .NewRegisteredGauge ("eth/fetcher/transaction/queueing/hashes" , nil )
108- txFetcherFetchingPeers = metrics .NewRegisteredGauge ("eth/fetcher/transaction/fetching/peers" , nil )
109- txFetcherFetchingHashes = metrics .NewRegisteredGauge ("eth/fetcher/transaction/fetching/hashes" , nil )
110- )
111-
11282var errTerminated = errors .New ("terminated" )
11383
11484// txAnnounce is the notification of the availability of a batch
@@ -635,6 +605,7 @@ func (f *TxFetcher) loop() {
635605 }
636606 // Keep track of the request as dangling, but never expire
637607 f .requests [peer ].hashes = nil
608+ txFetcherSlowPeers .Inc (1 )
638609 }
639610 }
640611 // Schedule a new transaction retrieval
@@ -728,6 +699,10 @@ func (f *TxFetcher) loop() {
728699 log .Warn ("Unexpected transaction delivery" , "peer" , delivery .origin )
729700 break
730701 }
702+ if req .hashes == nil {
703+ txFetcherSlowPeers .Dec (1 )
704+ txFetcherSlowWait .Update (time .Duration (f .clock .Now () - req .time ).Nanoseconds ())
705+ }
731706 delete (f .requests , delivery .origin )
732707
733708 // Anything not delivered should be re-scheduled (with or without
@@ -807,6 +782,10 @@ func (f *TxFetcher) loop() {
807782 }
808783 delete (f .fetching , hash )
809784 }
785+ if request .hashes == nil {
786+ txFetcherSlowPeers .Dec (1 )
787+ txFetcherSlowWait .Update (time .Duration (f .clock .Now () - request .time ).Nanoseconds ())
788+ }
810789 delete (f .requests , drop .peer )
811790 }
812791 // Clean up general announcement tracking
0 commit comments