Skip to content

Commit 5872766

Browse files
authored
refactor(p2p): simplify sendMessage (#195)
1 parent 4c7a15c commit 5872766

File tree

3 files changed

+17
-17
lines changed

3 files changed

+17
-17
lines changed

p2p/exchange.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,11 @@ func (ex *Exchange[H]) request(
384384
req *p2p_pb.HeaderRequest,
385385
) ([]H, error) {
386386
log.Debugw("requesting peer", "peer", to)
387-
responses, size, duration, err := sendMessage(ctx, ex.host, to, ex.protocolID, req)
388-
ex.metrics.response(ctx, size, duration, err)
387+
start := time.Now()
388+
responses, size, err := sendMessage(ctx, ex.host, to, ex.protocolID, req)
389+
took := time.Since(start)
390+
391+
ex.metrics.response(ctx, size, took, err)
389392
if err != nil {
390393
log.Debugw("err sending request", "peer", to, "err", err)
391394
return nil, err

p2p/helpers.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"io"
77
"strings"
8-
"time"
98

109
"github.com/libp2p/go-libp2p/core/host"
1110
"github.com/libp2p/go-libp2p/core/peer"
@@ -51,11 +50,10 @@ func sendMessage(
5150
to peer.ID,
5251
protocol protocol.ID,
5352
req *p2p_pb.HeaderRequest,
54-
) ([]*p2p_pb.HeaderResponse, uint64, time.Duration, error) {
55-
startTime := time.Now()
53+
) ([]*p2p_pb.HeaderResponse, uint64, error) {
5654
stream, err := host.NewStream(ctx, to, protocol)
5755
if err != nil {
58-
return nil, 0, 0, fmt.Errorf("header/p2p: failed to open a new stream: %w", err)
56+
return nil, 0, fmt.Errorf("header/p2p: failed to open a new stream: %w", err)
5957
}
6058

6159
// set stream deadline from the context deadline.
@@ -71,12 +69,12 @@ func sendMessage(
7169
_, err = serde.Write(stream, req)
7270
if err != nil {
7371
stream.Reset() //nolint:errcheck
74-
return nil, 0, 0, fmt.Errorf("header/p2p: failed to write a request: %w", err)
72+
return nil, 0, fmt.Errorf("header/p2p: failed to write a request: %w", err)
7573
}
7674

7775
err = stream.CloseWrite()
7876
if err != nil {
79-
return nil, 0, 0, err
77+
return nil, 0, err
8078
}
8179

8280
headers := make([]*p2p_pb.HeaderResponse, 0)
@@ -112,7 +110,7 @@ func sendMessage(
112110
// reset stream in case of an error
113111
stream.Reset() //nolint:errcheck
114112
}
115-
return headers, totalRespLn, time.Since(startTime), err
113+
return headers, totalRespLn, err
116114
}
117115

118116
// convertStatusCodeToError converts passed status code into an error.

p2p/session.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,11 @@ func (s *session[H]) doRequest(
180180
ctx, cancel := context.WithTimeout(ctx, s.requestTimeout)
181181
defer cancel()
182182

183-
r, size, duration, err := sendMessage(ctx, s.host, stat.peerID, s.protocolID, req)
184-
s.metrics.response(ctx, size, duration, err)
183+
start := time.Now()
184+
r, size, err := sendMessage(ctx, s.host, stat.peerID, s.protocolID, req)
185+
took := time.Since(start)
186+
187+
s.metrics.response(ctx, size, took, err)
185188
if err != nil {
186189
span.SetStatus(codes.Error, err.Error())
187190
// we should not punish peer at this point and should try to parse responses, despite that error
@@ -233,7 +236,7 @@ func (s *session[H]) doRequest(
233236
span.SetStatus(codes.Ok, "")
234237

235238
// update peer stats
236-
stat.updateStats(size, duration)
239+
stat.updateStats(size, took)
237240

238241
// ensure that we received the correct amount of headers.
239242
if remainingHeaders > 0 {
@@ -338,7 +341,7 @@ func processResponses[H header.Header[H]](resps []*p2p_pb.HeaderResponse) ([]H,
338341
return nil, errEmptyResponse
339342
}
340343

341-
hdrs := make([]H, 0)
344+
hdrs := make([]H, 0, len(resps))
342345
for _, resp := range resps {
343346
err := convertStatusCodeToError(resp.StatusCode)
344347
if err != nil {
@@ -358,9 +361,5 @@ func processResponses[H header.Header[H]](resps []*p2p_pb.HeaderResponse) ([]H,
358361

359362
hdrs = append(hdrs, hdr)
360363
}
361-
362-
if len(hdrs) == 0 {
363-
return nil, header.ErrNotFound
364-
}
365364
return hdrs, nil
366365
}

0 commit comments

Comments
 (0)