Skip to content

Commit a874786

Browse files
committed
chore(responsemanager): add a bit of logging
1 parent 77426cf commit a874786

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

responsemanager/client.go

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package responsemanager
33
import (
44
"context"
55
"errors"
6+
"time"
67

78
logging "github.com/ipfs/go-log/v2"
89
"github.com/ipfs/go-peertaskqueue/peertask"
@@ -36,6 +37,7 @@ type inProgressResponseStatus struct {
3637
updates []gsmsg.GraphSyncRequest
3738
state graphsync.RequestState
3839
subscriber *notifications.TopicDataSubscriber
40+
startTime time.Time
3941
}
4042

4143
type responseKey struct {

responsemanager/server.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"errors"
66
"math"
7+
"time"
78

89
"github.com/ipfs/go-peertaskqueue/peertask"
910
"github.com/libp2p/go-libp2p-core/peer"
@@ -155,6 +156,14 @@ func (rm *ResponseManager) processRequests(p peer.ID, requests []gsmsg.GraphSync
155156
networkErrorListeners: rm.networkErrorListeners,
156157
connManager: rm.connManager,
157158
})
159+
log.Infow("graphsync request initiated", "request id", request.ID(), "peer", p, "root", request.Root())
160+
ipr, ok := rm.inProgressResponses[key]
161+
if ok && ipr.state == graphsync.Running {
162+
// if we replace a running request, the signals and context will no longer work, meaning the request could get
163+
// stuck indefinitely
164+
log.Infof("there is an identical request already in progress", "request id", request.ID(), "peer", p)
165+
continue
166+
}
158167

159168
rm.inProgressResponses[key] =
160169
&inProgressResponseStatus{
@@ -167,7 +176,8 @@ func (rm *ResponseManager) processRequests(p peer.ID, requests []gsmsg.GraphSync
167176
UpdateSignal: make(chan struct{}, 1),
168177
ErrSignal: make(chan error, 1),
169178
},
170-
state: graphsync.Queued,
179+
state: graphsync.Queued,
180+
startTime: time.Now(),
171181
}
172182
// TODO: Use a better work estimation metric.
173183

@@ -180,6 +190,8 @@ func (rm *ResponseManager) taskDataForKey(key responseKey) queryexecutor.Respons
180190
if !hasResponse {
181191
return queryexecutor.ResponseTask{Empty: true}
182192
}
193+
log.Infow("graphsync response processing begins", "request id", key.requestID, "peer", key.p, "total time", time.Since(response.startTime))
194+
183195
if response.loader == nil || response.traverser == nil {
184196
loader, traverser, isPaused, err := (&queryPreparer{rm.requestHooks, rm.responseAssembler, rm.linkSystem, rm.maxLinksPerRequest}).prepareQuery(response.ctx, key.p, response.request, response.signals, response.subscriber)
185197
if err != nil {
@@ -212,6 +224,7 @@ func (rm *ResponseManager) startTask(task *peertask.Task) queryexecutor.Response
212224
if taskData.Empty {
213225
rm.responseQueue.TaskDone(key.p, task)
214226
}
227+
215228
return taskData
216229
}
217230

@@ -226,6 +239,8 @@ func (rm *ResponseManager) finishTask(task *peertask.Task, err error) {
226239
response.state = graphsync.Paused
227240
return
228241
}
242+
log.Infow("graphsync response processing complete (messages stil sending)", "request id", key.requestID, "peer", key.p, "total time", time.Since(response.startTime))
243+
229244
if err != nil {
230245
log.Infof("response failed: %w", err)
231246
}

0 commit comments

Comments
 (0)