@@ -41,8 +41,9 @@ func registerGobTypes() {
4141 })
4242}
4343
44- // Manager provides centralized cache management for both executing and syncing components
45- type Manager interface {
44+ // CacheManager provides thread-safe cache operations for tracking seen blocks
45+ // and DA inclusion status during block execution and syncing.
46+ type CacheManager interface {
4647 // Header operations
4748 IsHeaderSeen (hash string ) bool
4849 SetHeaderSeen (hash string , blockHeight uint64 )
@@ -62,14 +63,6 @@ type Manager interface {
6263 SetTxSeen (hash string )
6364 CleanupOldTxs (olderThan time.Duration ) int
6465
65- // Pending operations
66- GetPendingHeaders (ctx context.Context ) ([]* types.SignedHeader , error )
67- GetPendingData (ctx context.Context ) ([]* types.SignedData , error )
68- SetLastSubmittedHeaderHeight (ctx context.Context , height uint64 )
69- SetLastSubmittedDataHeight (ctx context.Context , height uint64 )
70- NumPendingHeaders () uint64
71- NumPendingData () uint64
72-
7366 // Pending events syncing coordination
7467 GetNextPendingEvent (blockHeight uint64 ) * common.DAHeightEvent
7568 SetPendingEvent (blockHeight uint64 , event * common.DAHeightEvent )
@@ -83,6 +76,22 @@ type Manager interface {
8376 DeleteHeight (blockHeight uint64 )
8477}
8578
79+ // PendingManager provides operations for managing pending headers and data
80+ type PendingManager interface {
81+ GetPendingHeaders (ctx context.Context ) ([]* types.SignedHeader , error )
82+ GetPendingData (ctx context.Context ) ([]* types.SignedData , error )
83+ SetLastSubmittedHeaderHeight (ctx context.Context , height uint64 )
84+ SetLastSubmittedDataHeight (ctx context.Context , height uint64 )
85+ NumPendingHeaders () uint64
86+ NumPendingData () uint64
87+ }
88+
89+ // Manager provides centralized cache management for both executing and syncing components
90+ type Manager interface {
91+ CacheManager
92+ PendingManager
93+ }
94+
8695var _ Manager = (* implementation )(nil )
8796
8897// implementation provides the concrete implementation of cache Manager
@@ -98,6 +107,59 @@ type implementation struct {
98107 logger zerolog.Logger
99108}
100109
110+ // NewPendingManager creates a new pending manager instance
111+ func NewPendingManager (store store.Store , logger zerolog.Logger ) (PendingManager , error ) {
112+ pendingHeaders , err := NewPendingHeaders (store , logger )
113+ if err != nil {
114+ return nil , fmt .Errorf ("failed to create pending headers: %w" , err )
115+ }
116+
117+ pendingData , err := NewPendingData (store , logger )
118+ if err != nil {
119+ return nil , fmt .Errorf ("failed to create pending data: %w" , err )
120+ }
121+
122+ return & implementation {
123+ pendingHeaders : pendingHeaders ,
124+ pendingData : pendingData ,
125+ logger : logger ,
126+ }, nil
127+ }
128+
129+ // NewCacheManager creates a new cache manager instance
130+ func NewCacheManager (cfg config.Config , logger zerolog.Logger ) (CacheManager , error ) {
131+ // Initialize caches
132+ headerCache := NewCache [types.SignedHeader ]()
133+ dataCache := NewCache [types.Data ]()
134+ txCache := NewCache [struct {}]()
135+ pendingEventsCache := NewCache [common.DAHeightEvent ]()
136+
137+ registerGobTypes ()
138+ impl := & implementation {
139+ headerCache : headerCache ,
140+ dataCache : dataCache ,
141+ txCache : txCache ,
142+ txTimestamps : new (sync.Map ),
143+ pendingEventsCache : pendingEventsCache ,
144+ config : cfg ,
145+ logger : logger ,
146+ }
147+
148+ if cfg .ClearCache {
149+ // Clear the cache from disk
150+ if err := impl .ClearFromDisk (); err != nil {
151+ logger .Warn ().Err (err ).Msg ("failed to clear cache from disk, starting with empty cache" )
152+ }
153+ } else {
154+ // Load existing cache from disk
155+ if err := impl .LoadFromDisk (); err != nil {
156+ logger .Warn ().Err (err ).Msg ("failed to load cache from disk, starting with empty cache" )
157+ }
158+ }
159+
160+ return impl , nil
161+ }
162+
101163// NewManager creates a new cache manager instance
102164func NewManager (cfg config.Config , store store.Store , logger zerolog.Logger ) (Manager , error ) {
103165 // Initialize caches
0 commit comments