mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
freeze: head is not used
Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
parent
d358f398c9
commit
0c6e9a2207
2 changed files with 13 additions and 40 deletions
|
|
@ -212,11 +212,6 @@ func newFilter(cfg json.RawMessage, backend tracers.Backend) (*tracing.Hooks, []
|
|||
},
|
||||
}
|
||||
|
||||
// Initialize head if it doesn't exist
|
||||
head, _ := f.getFreezerHeadTail()
|
||||
if head == 0 {
|
||||
f.updateFreezerHead(f.latest.Load())
|
||||
}
|
||||
go f.freeze()
|
||||
|
||||
return hooks, apis, nil
|
||||
|
|
@ -303,12 +298,7 @@ func (f *filter) readBlockTraces(ctx context.Context, name string, blknum uint64
|
|||
return nil, errors.New("historical data not available")
|
||||
}
|
||||
|
||||
_, tail := f.getFreezerHeadTail()
|
||||
|
||||
// If tail is 0 (not found in kvdb), use the offset
|
||||
if tail == 0 {
|
||||
tail = f.offset.Load()
|
||||
}
|
||||
tail := f.getFreezerTail()
|
||||
|
||||
// Determine whether to read from kvdb or frdb
|
||||
var (
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import (
|
|||
|
||||
const (
|
||||
freezeThreshold = 64
|
||||
kvdbHeadKey = "FilterFreezerHead"
|
||||
kvdbTailKey = "FilterFreezerTail"
|
||||
)
|
||||
|
||||
|
|
@ -28,18 +27,16 @@ func (f *filter) freeze() {
|
|||
}
|
||||
lastFinalized = finalizedBlock
|
||||
|
||||
head, tail := f.getFreezerHeadTail()
|
||||
|
||||
// If tail is 0 (not found in kvdb), use the offset
|
||||
if tail == 0 {
|
||||
tail = f.offset.Load()
|
||||
}
|
||||
tail := f.getFreezerTail()
|
||||
|
||||
// Freeze at most freezeThreshold blocks
|
||||
freezeUpTo := finalizedBlock
|
||||
freezeUpTo = min(freezeUpTo, tail+freezeThreshold)
|
||||
if freezeUpTo <= tail {
|
||||
continue
|
||||
}
|
||||
|
||||
log.Info("Move traces from kvdb to frdb", "from", tail, "to", freezeUpTo)
|
||||
log.Info("Move traces from kvdb to frdb", "from", tail, "to", freezeUpTo-1)
|
||||
for blknum := tail; blknum < freezeUpTo; blknum++ {
|
||||
if err := f.moveBlockToFreezer(blknum); err != nil {
|
||||
log.Error("Failed to move block to freezer", "block", blknum, "error", err)
|
||||
|
|
@ -47,40 +44,26 @@ func (f *filter) freeze() {
|
|||
}
|
||||
}
|
||||
|
||||
// Update head and tail
|
||||
if freezeUpTo > tail {
|
||||
if err := f.updateFreezerTail(freezeUpTo); err != nil {
|
||||
log.Error("Failed to update freezer tail", "error", err)
|
||||
}
|
||||
}
|
||||
if freezeUpTo > head {
|
||||
if err := f.updateFreezerHead(freezeUpTo); err != nil {
|
||||
log.Error("Failed to update freezer head", "error", err)
|
||||
}
|
||||
// Update the tail of the freezer
|
||||
if err := f.updateFreezerTail(freezeUpTo); err != nil {
|
||||
log.Error("Failed to update freezer tail", "error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (f *filter) getFreezerHeadTail() (head, tail uint64) {
|
||||
headBytes, _ := f.kvdb.Get([]byte(kvdbHeadKey))
|
||||
func (f *filter) getFreezerTail() (tail uint64) {
|
||||
tailBytes, _ := f.kvdb.Get([]byte(kvdbTailKey))
|
||||
|
||||
if len(headBytes) > 0 {
|
||||
head = binary.BigEndian.Uint64(headBytes)
|
||||
}
|
||||
if len(tailBytes) > 0 {
|
||||
tail = binary.BigEndian.Uint64(tailBytes)
|
||||
} else {
|
||||
// If tail is 0 (not found in kvdb), use the offset
|
||||
tail = f.offset.Load()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (f *filter) updateFreezerHead(head uint64) error {
|
||||
headBytes := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(headBytes, head)
|
||||
return f.kvdb.Put([]byte(kvdbHeadKey), headBytes)
|
||||
}
|
||||
|
||||
func (f *filter) updateFreezerTail(tail uint64) error {
|
||||
tailBytes := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(tailBytes, tail)
|
||||
|
|
|
|||
Loading…
Reference in a new issue