Skip to content

Commit 3b32cf6

Browse files
Add offset support to MemoryFreezer
1 parent 0131c7b commit 3b32cf6

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

core/rawdb/freezer_memory.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

core/rawdb/freezer_memory_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestMemoryFreezer(t *testing.T) {
3232
prunable: true,
3333
}
3434
}
35-
return NewMemoryFreezer(false, tables)
35+
return NewMemoryFreezer(false, 0, tables)
3636
})
3737
ancienttest.TestResettableAncientSuite(t, func(kinds []string) ethdb.ResettableAncientStore {
3838
tables := make(map[string]freezerTableConfig)
@@ -42,6 +42,6 @@ func TestMemoryFreezer(t *testing.T) {
4242
prunable: true,
4343
}
4444
}
45-
return NewMemoryFreezer(false, tables)
45+
return NewMemoryFreezer(false, 0, tables)
4646
})
4747
}

0 commit comments

Comments
 (0)