fix: data race in test
https://build.protocol-dev.com/job/race/9352/console @jbenet @whyrusleeping pinging you guys to spread awareness about the delay.D type for configurable delays License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
Brian Tiger Chow committed
Dec 18, 2014 at 19:24 UTC
3f9c1263ec8069d2d1d273f7d8ceb55a64d32e55
2 files changed
+6
-6
exchange/bitswap/bitswap.go
+4
-3
@@ -19,6 +19,7 @@ import (
19
wantlist "github.com/jbenet/go-ipfs/exchange/bitswap/wantlist"
20
peer "github.com/jbenet/go-ipfs/peer"
21
u "github.com/jbenet/go-ipfs/util"
22
+ "github.com/jbenet/go-ipfs/util/delay"
23
eventlog "github.com/jbenet/go-ipfs/util/eventlog"
24
pset "github.com/jbenet/go-ipfs/util/peerset"
25
)
@@ -37,7 +38,7 @@ const (
38
)
39
40
var (
40
- rebroadcastDelay = time.Second * 10
41
+ rebroadcastDelay = delay.Fixed(time.Second * 10)
42
)
43
44
// New initializes a BitSwap instance that communicates over the provided
@@ -250,7 +251,7 @@ func (bs *bitswap) clientWorker(parent context.Context) {
251
252
ctx, cancel := context.WithCancel(parent)
253
253
- broadcastSignal := time.After(rebroadcastDelay)
254
+ broadcastSignal := time.After(rebroadcastDelay.Get())
255
defer cancel()
256
257
for {
@@ -258,7 +259,7 @@ func (bs *bitswap) clientWorker(parent context.Context) {
259
case <-broadcastSignal:
260
// Resend unfulfilled wantlist keys
261
bs.sendWantlistToProviders(ctx, bs.wantlist)
261
- broadcastSignal = time.After(rebroadcastDelay)
262
+ broadcastSignal = time.After(rebroadcastDelay.Get())
263
case ks := <-bs.batchRequests:
264
if len(ks) == 0 {
265
log.Warning("Received batch request for zero blocks")
exchange/bitswap/bitswap_test.go
+2
-3
@@ -208,9 +208,8 @@ func TestSendToWantingPeer(t *testing.T) {
208
defer sg.Close()
209
bg := blocksutil.NewBlockGenerator()
210
211
- oldVal := rebroadcastDelay
212
- rebroadcastDelay = time.Second / 2
213
- defer func() { rebroadcastDelay = oldVal }()
211
+ prev := rebroadcastDelay.Set(time.Second / 2)
212
+ defer func() { rebroadcastDelay.Set(prev) }()
213
214
peerA := sg.Next()
215
peerB := sg.Next()