Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/rawdb/ancient_scheme.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ var freezers = []string{ChainFreezerName, MerkleStateFreezerName, VerkleStateFre
// state freezer.
func NewStateFreezer(ancientDir string, verkle bool, readOnly bool) (ethdb.ResettableAncientStore, error) {
if ancientDir == "" {
return NewMemoryFreezer(readOnly, stateFreezerTableConfigs), nil
return NewMemoryFreezer(readOnly, 0, stateFreezerTableConfigs), nil
}
var name string
if verkle {
Expand Down
2 changes: 1 addition & 1 deletion core/rawdb/chain_freezer.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func NewChainFreezer(datadir string, namespace string, readonly bool, offset uin
func newChainFreezer(datadir string, eraDir string, namespace string, readonly bool, offset uint64) (*chainFreezer, error) {
if datadir == "" {
return &chainFreezer{
ancients: NewMemoryFreezer(readonly, chainFreezerTableConfigs),
ancients: NewMemoryFreezer(readonly, offset, chainFreezerTableConfigs),
quit: make(chan struct{}),
trigger: make(chan chan struct{}),
}, nil
Expand Down
20 changes: 14 additions & 6 deletions core/rawdb/freezer_memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func (b *memoryBatch) reset(freezer *MemoryFreezer) {
b.size = make(map[string]int64)

for name, table := range freezer.tables {
b.next[name] = table.items
b.next[name] = table.items + freezer.offset.Load()
}
}

Expand Down Expand Up @@ -215,16 +215,24 @@ type MemoryFreezer struct {
}

// NewMemoryFreezer initializes an in-memory freezer instance.
func NewMemoryFreezer(readonly bool, tableName map[string]freezerTableConfig) *MemoryFreezer {
func NewMemoryFreezer(readonly bool, offset uint64, tableName map[string]freezerTableConfig) *MemoryFreezer {
tables := make(map[string]*memoryTable)
for name, cfg := range tableName {
tables[name] = newMemoryTable(name, cfg)
}
return &MemoryFreezer{
freezer := &MemoryFreezer{
writeBatch: newMemoryBatch(),
readonly: readonly,
tables: tables,
}

freezer.offset.Store(offset)

// Some blocks in ancientDB may have already been frozen and been pruned, so adding the offset to
// represent the absolute number of blocks already frozen.
freezer.items += offset

return freezer
}

// todo: @anshalshukla || @manav2401 - Check if implementation is required
Expand Down Expand Up @@ -252,7 +260,7 @@ func (f *MemoryFreezer) Ancient(kind string, number uint64) ([]byte, error) {
if t == nil {
return nil, errUnknownTable
}
data, err := t.retrieve(number, 1, 0)
data, err := t.retrieve(number-f.offset.Load(), 1, 0)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -362,7 +370,7 @@ func (f *MemoryFreezer) TruncateHead(items uint64) (uint64, error) {
return old, nil
}
for _, table := range f.tables {
if err := table.truncateHead(items); err != nil {
if err := table.truncateHead(items - f.offset.Load()); err != nil {
return 0, err
}
}
Expand All @@ -386,7 +394,7 @@ func (f *MemoryFreezer) TruncateTail(tail uint64) (uint64, error) {
}
for _, table := range f.tables {
if table.config.prunable {
if err := table.truncateTail(tail); err != nil {
if err := table.truncateTail(tail - f.offset.Load()); err != nil {
return 0, err
}
}
Expand Down
4 changes: 2 additions & 2 deletions core/rawdb/freezer_memory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func TestMemoryFreezer(t *testing.T) {
prunable: true,
}
}
return NewMemoryFreezer(false, tables)
return NewMemoryFreezer(false, 0, tables)
})
ancienttest.TestResettableAncientSuite(t, func(kinds []string) ethdb.ResettableAncientStore {
tables := make(map[string]freezerTableConfig)
Expand All @@ -42,6 +42,6 @@ func TestMemoryFreezer(t *testing.T) {
prunable: true,
}
}
return NewMemoryFreezer(false, tables)
return NewMemoryFreezer(false, 0, tables)
})
}