@@ -149,7 +149,7 @@ func (b *memoryBatch) reset(freezer *MemoryFreezer) {
149149 b .size = make (map [string ]int64 )
150150
151151 for name , table := range freezer .tables {
152- b .next [name ] = table .items
152+ b .next [name ] = table .items + freezer . offset . Load ()
153153 }
154154}
155155
@@ -215,16 +215,24 @@ type MemoryFreezer struct {
215215}
216216
217217// NewMemoryFreezer initializes an in-memory freezer instance.
218- func NewMemoryFreezer (readonly bool , tableName map [string ]freezerTableConfig ) * MemoryFreezer {
218+ func NewMemoryFreezer (readonly bool , offset uint64 , tableName map [string ]freezerTableConfig ) * MemoryFreezer {
219219 tables := make (map [string ]* memoryTable )
220220 for name , cfg := range tableName {
221221 tables [name ] = newMemoryTable (name , cfg )
222222 }
223- return & MemoryFreezer {
223+ freezer := & MemoryFreezer {
224224 writeBatch : newMemoryBatch (),
225225 readonly : readonly ,
226226 tables : tables ,
227227 }
228+
229+ freezer .offset .Store (offset )
230+
231+ // Some blocks in ancientDB may have already been frozen and been pruned, so adding the offset to
232+ // represent the absolute number of blocks already frozen.
233+ freezer .items += offset
234+
235+ return freezer
228236}
229237
230238// todo: @anshalshukla || @manav2401 - Check if implementation is required
@@ -252,7 +260,7 @@ func (f *MemoryFreezer) Ancient(kind string, number uint64) ([]byte, error) {
252260 if t == nil {
253261 return nil , errUnknownTable
254262 }
255- data , err := t .retrieve (number , 1 , 0 )
263+ data , err := t .retrieve (number - f . offset . Load () , 1 , 0 )
256264 if err != nil {
257265 return nil , err
258266 }
@@ -362,7 +370,7 @@ func (f *MemoryFreezer) TruncateHead(items uint64) (uint64, error) {
362370 return old , nil
363371 }
364372 for _ , table := range f .tables {
365- if err := table .truncateHead (items ); err != nil {
373+ if err := table .truncateHead (items - f . offset . Load () ); err != nil {
366374 return 0 , err
367375 }
368376 }
@@ -386,7 +394,7 @@ func (f *MemoryFreezer) TruncateTail(tail uint64) (uint64, error) {
386394 }
387395 for _ , table := range f .tables {
388396 if table .config .prunable {
389- if err := table .truncateTail (tail ); err != nil {
397+ if err := table .truncateTail (tail - f . offset . Load () ); err != nil {
390398 return 0 , err
391399 }
392400 }
0 commit comments