Skip to content

Commit

Permalink
Better logging for Graphsync traversal (#167)
Browse files Browse the repository at this point in the history
* log gs traversal

* Apply suggestions from code review

Co-authored-by: dirkmc <dirkmdev@gmail.com>

* add debug logs

* add debug logs

Co-authored-by: dirkmc <dirkmdev@gmail.com>
  • Loading branch information
aarshkshah1992 and dirkmc committed Apr 26, 2021
1 parent 9e42f21 commit fee8141
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ require (
github.com/ipfs/go-ipld-cbor v0.0.4 // indirect
github.com/ipfs/go-ipld-format v0.2.0
github.com/ipfs/go-log v1.0.4
github.com/ipfs/go-log/v2 v2.1.1
github.com/ipfs/go-merkledag v0.3.1
github.com/ipfs/go-peertaskqueue v0.2.0
github.com/ipfs/go-unixfs v0.2.4
Expand Down
19 changes: 17 additions & 2 deletions responsemanager/runtraversal/runtraversal.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import (
"bytes"
"io"

"github.com/ipfs/go-graphsync/ipldutil"
logging "github.com/ipfs/go-log/v2"
ipld "github.com/ipld/go-ipld-prime"
"github.com/ipld/go-ipld-prime/traversal"

"github.com/ipfs/go-graphsync/ipldutil"
)

var logger = logging.Logger("gs-traversal")

// ResponseSender sends responses over the network
type ResponseSender func(
link ipld.Link,
Expand All @@ -22,15 +24,24 @@ func RunTraversal(
loader ipld.Loader,
traverser ipldutil.Traverser,
sendResponse ResponseSender) error {
nBlocksRead := 0

for {
isComplete, err := traverser.IsComplete()
if isComplete {
if err != nil {
logger.Infof("traversal completion check failed, nBlocksRead=%d, err=%s", nBlocksRead, err)
} else {
logger.Infof("traversal completed successfully, nBlocksRead=%d", nBlocksRead)
}
return err
}
lnk, lnkCtx := traverser.CurrentRequest()
logger.Debugf("will load link=%s", lnk)
result, err := loader(lnk, lnkCtx)
var data []byte
if err != nil {
logger.Errorf("failed to load link=%s, nBlocksRead=%d, err=%s", lnk, nBlocksRead, err)
traverser.Error(traversal.SkipMe{})
} else {
blockBuffer, ok := result.(*bytes.Buffer)
Expand All @@ -39,14 +50,18 @@ func RunTraversal(
_, err = io.Copy(blockBuffer, result)
}
if err != nil {
logger.Errorf("failed to write to buffer, link=%s, nBlocksRead=%d, err=%s", lnk, nBlocksRead, err)
traverser.Error(err)
} else {
data = blockBuffer.Bytes()
err = traverser.Advance(blockBuffer)
if err != nil {
logger.Errorf("failed to advance traversal, link=%s, nBlocksRead=%d, err=%s", lnk, nBlocksRead, err)
return err
}
}
nBlocksRead++
logger.Debugf("successfully loaded link=%s, nBlocksRead=%d", lnk, nBlocksRead)
}
err = sendResponse(lnk, data)
if err != nil {
Expand Down

0 comments on commit fee8141

Please sign in to comment.