From e26f329c996ada22a9c010adc932d8c2c29fc544 Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Mon, 24 Jun 2024 12:52:13 +0200 Subject: [PATCH] feat(store): add tail header --- store/store.go | 4 ++++ store/store_test.go | 2 ++ 2 files changed, 6 insertions(+) diff --git a/store/store.go b/store/store.go index 657a22c7..bd4cb3af 100644 --- a/store/store.go +++ b/store/store.go @@ -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] @@ -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 diff --git a/store/store_test.go b/store/store_test.go index 53d40d55..9213f0b0 100644 --- a/store/store_test.go +++ b/store/store_test.go @@ -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())