diff --git a/routing/grandcentral/client.go b/routing/grandcentral/client.go index 405a7750d..99a507983 100644 --- a/routing/grandcentral/client.go +++ b/routing/grandcentral/client.go @@ -36,6 +36,7 @@ func NewClient(px proxy.Proxy, h host.Host, ps peer.Peerstore, local peer.ID) (* } func (c *Client) FindProvidersAsync(ctx context.Context, k u.Key, max int) <-chan peer.PeerInfo { + ctx = eventlog.ContextWithLoggable(ctx, eventlog.Uuid("findProviders")) defer log.EventBegin(ctx, "findProviders", &k).Done() ch := make(chan peer.PeerInfo) go func() { diff --git a/routing/grandcentral/proxy/standard.go b/routing/grandcentral/proxy/standard.go index 393f9d303..3fe33616f 100644 --- a/routing/grandcentral/proxy/standard.go +++ b/routing/grandcentral/proxy/standard.go @@ -87,35 +87,38 @@ func (px *standard) SendRequest(ctx context.Context, m *dhtpb.Message) (*dhtpb.M return nil, err // NB: returns the last error } -func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote peer.ID) (_ *dhtpb.Message, err error) { - e := log.EventBegin(ctx, "sendRoutingRequest", px.Host.ID(), remote, m) - defer func() { - if err != nil { - e.SetError(err) - } - e.Done() - }() - if err = px.Host.Connect(ctx, peer.PeerInfo{ID: remote}); err != nil { +func (px *standard) sendRequest(ctx context.Context, m *dhtpb.Message, remote peer.ID) (*dhtpb.Message, error) { + e := log.EventBegin(ctx, "sendRoutingRequest", px.Host.ID(), remote, eventlog.Pair("request", m)) + defer e.Done() + if err := px.Host.Connect(ctx, peer.PeerInfo{ID: remote}); err != nil { + e.SetError(err) return nil, err } s, err := px.Host.NewStream(ProtocolGCR, remote) if err != nil { + e.SetError(err) return nil, err } defer s.Close() r := ggio.NewDelimitedReader(s, inet.MessageSizeMax) w := ggio.NewDelimitedWriter(s) if err = w.WriteMsg(m); err != nil { + e.SetError(err) return nil, err } - var reply dhtpb.Message - if err = r.ReadMsg(&reply); err != nil { + response := &dhtpb.Message{} + if err = r.ReadMsg(response); err != nil { + e.SetError(err) return nil, err } // need ctx expiration? - if &reply == nil { - return nil, errors.New("no response to request") + if response == nil { + err := errors.New("no response to request") + e.SetError(err) + return nil, err } - return &reply, nil + e.Append(eventlog.Pair("response", response)) + e.Append(eventlog.Pair("uuid", eventlog.Uuid("foo"))) + return response, nil } diff --git a/routing/grandcentral/server.go b/routing/grandcentral/server.go index 62198f8cb..d35ad97bd 100644 --- a/routing/grandcentral/server.go +++ b/routing/grandcentral/server.go @@ -169,7 +169,8 @@ func storeProvidersToPeerstore(ps peer.Peerstore, p peer.ID, providers []*dhtpb. } func getRoutingProviders(local peer.ID, ds datastore.Datastore, k util.Key) ([]*dhtpb.Message_Peer, error) { - log.Event(context.Background(), "getProviders", local, &k) + e := log.EventBegin(context.Background(), "getProviders", &k) + defer e.Done() var providers []*dhtpb.Message_Peer exists, err := ds.Has(k.DsKey()) // TODO store values in a local datastore? if err == nil && exists {