forked from hailey.at/cocoon
An atproto PDS written in Go

fix logging blockstore for reads

Changed files
+12 -6
recording_blockstore
server
+10 -4
recording_blockstore/recording_blockstore.go
··· 13 13 base blockstore.Blockstore 14 14 15 15 inserts map[cid.Cid]blockformat.Block 16 + reads map[cid.Cid]blockformat.Block 16 17 } 17 18 18 19 func New(base blockstore.Blockstore) *RecordingBlockstore { ··· 27 28 } 28 29 29 30 func (bs *RecordingBlockstore) Get(ctx context.Context, c cid.Cid) (blockformat.Block, error) { 30 - return bs.base.Get(ctx, c) 31 + b, err := bs.base.Get(ctx, c) 32 + if err != nil { 33 + return nil, err 34 + } 35 + bs.reads[c] = b 36 + return b, nil 31 37 } 32 38 33 39 func (bs *RecordingBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) { ··· 65 71 func (bs *RecordingBlockstore) HashOnRead(enabled bool) { 66 72 } 67 73 68 - func (bs *RecordingBlockstore) GetLogMap() map[cid.Cid]blockformat.Block { 74 + func (bs *RecordingBlockstore) GetWriteLog() map[cid.Cid]blockformat.Block { 69 75 return bs.inserts 70 76 } 71 77 72 - func (bs *RecordingBlockstore) GetLogArray() []blockformat.Block { 78 + func (bs *RecordingBlockstore) GetReadLog() []blockformat.Block { 73 79 var blocks []blockformat.Block 74 - for _, b := range bs.inserts { 80 + for _, b := range bs.reads { 75 81 blocks = append(blocks, b) 76 82 } 77 83 return blocks
+2 -2
server/repo.go
··· 274 274 } 275 275 } 276 276 277 - for _, op := range bs.GetLogMap() { 277 + for _, op := range bs.GetWriteLog() { 278 278 if _, err := carstore.LdWrite(buf, op.Cid().Bytes(), op.RawData()); err != nil { 279 279 return nil, err 280 280 } ··· 358 358 return cid.Undef, nil, err 359 359 } 360 360 361 - return c, bs.GetLogArray(), nil 361 + return c, bs.GetReadLog(), nil 362 362 } 363 363 364 364 func (rm *RepoMan) incrementBlobRefs(urepo models.Repo, cbor []byte) ([]cid.Cid, error) {