Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

Commit 285f9bc

Browse files
authored
feat: add context to interfaces (#86)
1 parent 542e40d commit 285f9bc

File tree

5 files changed

+315
-75
lines changed

5 files changed

+315
-75
lines changed

blockservice.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,14 @@ type BlockService interface {
5151
Exchange() exchange.Interface
5252

5353
// AddBlock puts a given block to the underlying datastore
54-
AddBlock(o blocks.Block) error
54+
AddBlock(ctx context.Context, o blocks.Block) error
5555

5656
// AddBlocks adds a slice of blocks at the same time using batching
5757
// capabilities of the underlying datastore whenever possible.
58-
AddBlocks(bs []blocks.Block) error
58+
AddBlocks(ctx context.Context, bs []blocks.Block) error
5959

6060
// DeleteBlock deletes the given block from the blockservice.
61-
DeleteBlock(o cid.Cid) error
61+
DeleteBlock(ctx context.Context, o cid.Cid) error
6262
}
6363

6464
type blockService struct {
@@ -130,35 +130,35 @@ func NewSession(ctx context.Context, bs BlockService) *Session {
130130

131131
// AddBlock adds a particular block to the service, Putting it into the datastore.
132132
// TODO pass a context into this if the remote.HasBlock is going to remain here.
133-
func (s *blockService) AddBlock(o blocks.Block) error {
133+
func (s *blockService) AddBlock(ctx context.Context, o blocks.Block) error {
134134
c := o.Cid()
135135
// hash security
136136
err := verifcid.ValidateCid(c)
137137
if err != nil {
138138
return err
139139
}
140140
if s.checkFirst {
141-
if has, err := s.blockstore.Has(c); has || err != nil {
141+
if has, err := s.blockstore.Has(ctx, c); has || err != nil {
142142
return err
143143
}
144144
}
145145

146-
if err := s.blockstore.Put(o); err != nil {
146+
if err := s.blockstore.Put(ctx, o); err != nil {
147147
return err
148148
}
149149

150150
log.Debugf("BlockService.BlockAdded %s", c)
151151

152152
if s.exchange != nil {
153-
if err := s.exchange.HasBlock(o); err != nil {
153+
if err := s.exchange.HasBlock(ctx, o); err != nil {
154154
log.Errorf("HasBlock: %s", err.Error())
155155
}
156156
}
157157

158158
return nil
159159
}
160160

161-
func (s *blockService) AddBlocks(bs []blocks.Block) error {
161+
func (s *blockService) AddBlocks(ctx context.Context, bs []blocks.Block) error {
162162
// hash security
163163
for _, b := range bs {
164164
err := verifcid.ValidateCid(b.Cid())
@@ -170,7 +170,7 @@ func (s *blockService) AddBlocks(bs []blocks.Block) error {
170170
if s.checkFirst {
171171
toput = make([]blocks.Block, 0, len(bs))
172172
for _, b := range bs {
173-
has, err := s.blockstore.Has(b.Cid())
173+
has, err := s.blockstore.Has(ctx, b.Cid())
174174
if err != nil {
175175
return err
176176
}
@@ -186,15 +186,15 @@ func (s *blockService) AddBlocks(bs []blocks.Block) error {
186186
return nil
187187
}
188188

189-
err := s.blockstore.PutMany(toput)
189+
err := s.blockstore.PutMany(ctx, toput)
190190
if err != nil {
191191
return err
192192
}
193193

194194
if s.exchange != nil {
195195
for _, o := range toput {
196196
log.Debugf("BlockService.BlockAdded %s", o.Cid())
197-
if err := s.exchange.HasBlock(o); err != nil {
197+
if err := s.exchange.HasBlock(ctx, o); err != nil {
198198
log.Errorf("HasBlock: %s", err.Error())
199199
}
200200
}
@@ -225,7 +225,7 @@ func getBlock(ctx context.Context, c cid.Cid, bs blockstore.Blockstore, fget fun
225225
return nil, err
226226
}
227227

228-
block, err := bs.Get(c)
228+
block, err := bs.Get(ctx, c)
229229
if err == nil {
230230
return block, nil
231231
}
@@ -296,7 +296,7 @@ func getBlocks(ctx context.Context, ks []cid.Cid, bs blockstore.Blockstore, fget
296296

297297
var misses []cid.Cid
298298
for _, c := range ks {
299-
hit, err := bs.Get(c)
299+
hit, err := bs.Get(ctx, c)
300300
if err != nil {
301301
misses = append(misses, c)
302302
continue
@@ -332,8 +332,8 @@ func getBlocks(ctx context.Context, ks []cid.Cid, bs blockstore.Blockstore, fget
332332
}
333333

334334
// DeleteBlock deletes a block in the blockservice from the datastore
335-
func (s *blockService) DeleteBlock(c cid.Cid) error {
336-
err := s.blockstore.DeleteBlock(c)
335+
func (s *blockService) DeleteBlock(ctx context.Context, c cid.Cid) error {
336+
err := s.blockstore.DeleteBlock(ctx, c)
337337
if err == nil {
338338
log.Debugf("BlockService.BlockDeleted %s", c)
339339
}

blockservice_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ func TestWriteThroughWorks(t *testing.T) {
2626
block := bgen.Next()
2727

2828
t.Logf("PutCounter: %d", bstore.PutCounter)
29-
err := bserv.AddBlock(block)
29+
err := bserv.AddBlock(context.Background(), block)
3030
if err != nil {
3131
t.Fatal(err)
3232
}
3333
if bstore.PutCounter != 1 {
3434
t.Fatalf("expected just one Put call, have: %d", bstore.PutCounter)
3535
}
3636

37-
err = bserv.AddBlock(block)
37+
err = bserv.AddBlock(context.Background(), block)
3838
if err != nil {
3939
t.Fatal(err)
4040
}
@@ -58,12 +58,12 @@ func TestLazySessionInitialization(t *testing.T) {
5858
bgen := butil.NewBlockGenerator()
5959

6060
block := bgen.Next()
61-
err := bstore.Put(block)
61+
err := bstore.Put(ctx, block)
6262
if err != nil {
6363
t.Fatal(err)
6464
}
6565
block2 := bgen.Next()
66-
err = session.HasBlock(block2)
66+
err = session.HasBlock(ctx, block2)
6767
if err != nil {
6868
t.Fatal(err)
6969
}
@@ -101,9 +101,9 @@ type PutCountingBlockstore struct {
101101
PutCounter int
102102
}
103103

104-
func (bs *PutCountingBlockstore) Put(block blocks.Block) error {
104+
func (bs *PutCountingBlockstore) Put(ctx context.Context, block blocks.Block) error {
105105
bs.PutCounter++
106-
return bs.Blockstore.Put(block)
106+
return bs.Blockstore.Put(ctx, block)
107107
}
108108

109109
var _ exchange.SessionExchange = (*fakeSessionExchange)(nil)
@@ -135,7 +135,7 @@ func TestNilExchange(t *testing.T) {
135135
if err != ErrNotFound {
136136
t.Fatal("expected block to not be found")
137137
}
138-
err = bs.Put(block)
138+
err = bs.Put(ctx, block)
139139
if err != nil {
140140
t.Fatal(err)
141141
}

go.mod

+6-9
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,20 @@ module github.com/ipfs/go-blockservice
33
go 1.16
44

55
require (
6-
github.com/google/uuid v1.2.0 // indirect
7-
github.com/ipfs/go-bitswap v0.3.4
6+
github.com/ipfs/go-bitswap v0.5.0
87
github.com/ipfs/go-block-format v0.0.3
98
github.com/ipfs/go-cid v0.0.7
10-
github.com/ipfs/go-datastore v0.4.5
11-
github.com/ipfs/go-ipfs-blockstore v0.1.6
9+
github.com/ipfs/go-datastore v0.5.0
10+
github.com/ipfs/go-ipfs-blockstore v0.2.0
1211
github.com/ipfs/go-ipfs-blocksutil v0.0.1
1312
github.com/ipfs/go-ipfs-delay v0.0.1
14-
github.com/ipfs/go-ipfs-exchange-interface v0.0.1
15-
github.com/ipfs/go-ipfs-exchange-offline v0.0.1
16-
github.com/ipfs/go-ipfs-routing v0.1.0
13+
github.com/ipfs/go-ipfs-exchange-interface v0.1.0
14+
github.com/ipfs/go-ipfs-exchange-offline v0.1.0
15+
github.com/ipfs/go-ipfs-routing v0.2.0
1716
github.com/ipfs/go-ipfs-util v0.0.2
1817
github.com/ipfs/go-log/v2 v2.3.0
1918
github.com/ipfs/go-verifcid v0.0.1
2019
github.com/klauspost/cpuid/v2 v2.0.6 // indirect
21-
github.com/libp2p/go-libp2p v0.14.0 // indirect
22-
github.com/multiformats/go-multihash v0.0.15 // indirect
2320
go.uber.org/multierr v1.7.0 // indirect
2421
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect
2522
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 // indirect

0 commit comments

Comments
 (0)