Skip to content

Commit b01e48a

Browse files
Merge pull request #4392 from ipfs/feat/log/uuid
Feat/log/uuid
2 parents d511a00 + f44cf00 commit b01e48a

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

commands/http/handler.go

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
cors "gx/ipfs/QmPG2kW5t27LuHgHnvhUwbHCNHAt2eUcb4gPHqofrESUdB/cors"
1919
cmdkit "gx/ipfs/QmSNbH2A1evCCbJSDC6u3RV3GGDhgu6pRGbXHvrN89tMKf/go-ipfs-cmdkit"
2020
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
21+
loggables "gx/ipfs/QmT4PgCNdv73hnFAqzHqwW44q7M9PWpykSswHDxndquZbc/go-libp2p-loggables"
2122
)
2223

2324
var log = logging.Logger("commands/http")
@@ -139,6 +140,7 @@ func (i internalHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
139140

140141
ctx, cancel := context.WithCancel(node.Context())
141142
defer cancel()
143+
ctx = logging.ContextWithLoggable(ctx, loggables.Uuid("requestId"))
142144
if cn, ok := w.(http.CloseNotifier); ok {
143145
clientGone := cn.CloseNotify()
144146
go func() {

core/pathresolver.go

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
cid "gx/ipfs/QmNp85zy9RLrQ5oQD4hPyS39ezrrXpcaa7R4Y9kxdWQLLQ/go-cid"
1212
node "gx/ipfs/QmPN7cwmpcc4DWXb4KTB9dNAJgjuPY69h3npsMfhRrQL9c/go-ipld-format"
13+
logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
1314
)
1415

1516
// ErrNoNamesys is an explicit error for when an IPFS node doesn't
@@ -22,33 +23,40 @@ var ErrNoNamesys = errors.New(
2223
// entries and returning the final node.
2324
func Resolve(ctx context.Context, nsys namesys.NameSystem, r *path.Resolver, p path.Path) (node.Node, error) {
2425
if strings.HasPrefix(p.String(), "/ipns/") {
26+
evt := log.EventBegin(ctx, "resolveIpnsPath")
27+
defer evt.Done()
2528
// resolve ipns paths
2629

2730
// TODO(cryptix): we sould be able to query the local cache for the path
2831
if nsys == nil {
32+
evt.Append(logging.LoggableMap{"error": ErrNoNamesys.Error()})
2933
return nil, ErrNoNamesys
3034
}
3135

3236
seg := p.Segments()
3337

3438
if len(seg) < 2 || seg[1] == "" { // just "/<protocol/>" without further segments
39+
evt.Append(logging.LoggableMap{"error": path.ErrNoComponents.Error()})
3540
return nil, path.ErrNoComponents
3641
}
3742

3843
extensions := seg[2:]
3944
resolvable, err := path.FromSegments("/", seg[0], seg[1])
4045
if err != nil {
46+
evt.Append(logging.LoggableMap{"error": err.Error()})
4147
return nil, err
4248
}
4349

4450
respath, err := nsys.Resolve(ctx, resolvable.String())
4551
if err != nil {
52+
evt.Append(logging.LoggableMap{"error": err.Error()})
4653
return nil, err
4754
}
4855

4956
segments := append(respath.Segments(), extensions...)
5057
p, err = path.FromSegments("/", segments...)
5158
if err != nil {
59+
evt.Append(logging.LoggableMap{"error": err.Error()})
5260
return nil, err
5361
}
5462
}

path/resolver.go

+10
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,19 @@ func ResolveSingle(ctx context.Context, ds dag.DAGService, nd node.Node, names [
131131
// It uses the first path component as a hash (key) of the first node, then
132132
// resolves all other components walking the links, with ResolveLinks.
133133
func (s *Resolver) ResolvePathComponents(ctx context.Context, fpath Path) ([]node.Node, error) {
134+
evt := log.EventBegin(ctx, "resolvePathComponents", logging.LoggableMap{"fpath": fpath})
135+
defer evt.Done()
136+
134137
h, parts, err := SplitAbsPath(fpath)
135138
if err != nil {
139+
evt.Append(logging.LoggableMap{"error": err.Error()})
136140
return nil, err
137141
}
138142

139143
log.Debug("resolve dag get")
140144
nd, err := s.DAG.Get(ctx, h)
141145
if err != nil {
146+
evt.Append(logging.LoggableMap{"error": err.Error()})
142147
return nil, err
143148
}
144149

@@ -154,6 +159,8 @@ func (s *Resolver) ResolvePathComponents(ctx context.Context, fpath Path) ([]nod
154159
// would retrieve "baz" in ("bar" in ("foo" in nd.Links).Links).Links
155160
func (s *Resolver) ResolveLinks(ctx context.Context, ndd node.Node, names []string) ([]node.Node, error) {
156161

162+
evt := log.EventBegin(ctx, "resolveLinks", logging.LoggableMap{"names": names})
163+
defer evt.Done()
157164
result := make([]node.Node, 0, len(names)+1)
158165
result = append(result, ndd)
159166
nd := ndd // dup arg workaround
@@ -166,13 +173,16 @@ func (s *Resolver) ResolveLinks(ctx context.Context, ndd node.Node, names []stri
166173

167174
lnk, rest, err := s.ResolveOnce(ctx, s.DAG, nd, names)
168175
if err == dag.ErrLinkNotFound {
176+
evt.Append(logging.LoggableMap{"error": err.Error()})
169177
return result, ErrNoLink{Name: names[0], Node: nd.Cid()}
170178
} else if err != nil {
179+
evt.Append(logging.LoggableMap{"error": err.Error()})
171180
return result, err
172181
}
173182

174183
nextnode, err := lnk.GetNode(ctx, s.DAG)
175184
if err != nil {
185+
evt.Append(logging.LoggableMap{"error": err.Error()})
176186
return result, err
177187
}
178188

0 commit comments

Comments
 (0)