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
···
base blockstore.Blockstore
inserts map[cid.Cid]blockformat.Block
+
reads map[cid.Cid]blockformat.Block
}
func New(base blockstore.Blockstore) *RecordingBlockstore {
···
}
func (bs *RecordingBlockstore) Get(ctx context.Context, c cid.Cid) (blockformat.Block, error) {
-
return bs.base.Get(ctx, c)
+
b, err := bs.base.Get(ctx, c)
+
if err != nil {
+
return nil, err
+
}
+
bs.reads[c] = b
+
return b, nil
}
func (bs *RecordingBlockstore) GetSize(ctx context.Context, c cid.Cid) (int, error) {
···
func (bs *RecordingBlockstore) HashOnRead(enabled bool) {
}
-
func (bs *RecordingBlockstore) GetLogMap() map[cid.Cid]blockformat.Block {
+
func (bs *RecordingBlockstore) GetWriteLog() map[cid.Cid]blockformat.Block {
return bs.inserts
}
-
func (bs *RecordingBlockstore) GetLogArray() []blockformat.Block {
+
func (bs *RecordingBlockstore) GetReadLog() []blockformat.Block {
var blocks []blockformat.Block
-
for _, b := range bs.inserts {
+
for _, b := range bs.reads {
blocks = append(blocks, b)
}
return blocks
+2 -2
server/repo.go
···
}
}
-
for _, op := range bs.GetLogMap() {
+
for _, op := range bs.GetWriteLog() {
if _, err := carstore.LdWrite(buf, op.Cid().Bytes(), op.RawData()); err != nil {
return nil, err
}
···
return cid.Undef, nil, err
}
-
return c, bs.GetLogArray(), nil
+
return c, bs.GetReadLog(), nil
}
func (rm *RepoMan) incrementBlobRefs(urepo models.Repo, cbor []byte) ([]cid.Cid, error) {