Skip to content

Commit

Permalink
feat(store): add tail header (#200)
Browse files Browse the repository at this point in the history
## Overview

Add `tailHeader` as a part of backward sync. Currently it's initialized
to initial header and isn't exported. Harmless addition to simplify
future PRs.
  • Loading branch information
cristaloleg authored Jul 1, 2024
1 parent 672fc95 commit 7d9aad6
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
4 changes: 4 additions & 0 deletions store/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ type Store[H header.Header[H]] struct {
writesDn chan struct{}
// writeHead maintains the current write head
writeHead atomic.Pointer[H]
// tailHeader maintains the current tail header.
tailHeader atomic.Pointer[H]
// pending keeps headers pending to be written in one batch
pending *batch[H]

Expand Down Expand Up @@ -121,6 +123,8 @@ func (s *Store[H]) Init(ctx context.Context, initial H) error {
return err
}

s.tailHeader.Store(&initial)

log.Infow("initialized head", "height", initial.Height(), "hash", initial.Hash())
s.heightSub.Pub(initial)
return nil
Expand Down
2 changes: 2 additions & 0 deletions store/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ func TestStore(t *testing.T) {
ds := sync.MutexWrap(datastore.NewMapDatastore())
store := NewTestStore(t, ctx, ds, suite.Head())

assert.Equal(t, *store.tailHeader.Load(), suite.Head())

head, err := store.Head(ctx)
require.NoError(t, err)
assert.EqualValues(t, suite.Head().Hash(), head.Hash())
Expand Down

0 comments on commit 7d9aad6

Please sign in to comment.