mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 10:50:44 +00:00
core/rawdb: polish
This commit is contained in:
parent
e21a61538a
commit
1cd4b02579
2 changed files with 13 additions and 16 deletions
|
|
@ -320,6 +320,9 @@ func (f *Freezer) TruncateTail(tail uint64) (uint64, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f.tail.Store(tail)
|
f.tail.Store(tail)
|
||||||
|
if f.head.Load() < tail {
|
||||||
|
f.head.Store(tail)
|
||||||
|
}
|
||||||
return old, nil
|
return old, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -822,11 +822,10 @@ func (t *freezerTable) truncateTail(items uint64) error {
|
||||||
shorten := indexEntrySize * int64(newDeleted-deleted)
|
shorten := indexEntrySize * int64(newDeleted-deleted)
|
||||||
if t.metadata.flushOffset <= shorten {
|
if t.metadata.flushOffset <= shorten {
|
||||||
return fmt.Errorf("invalid index flush offset: %d, shorten: %d", t.metadata.flushOffset, shorten)
|
return fmt.Errorf("invalid index flush offset: %d, shorten: %d", t.metadata.flushOffset, shorten)
|
||||||
} else {
|
}
|
||||||
if err := t.metadata.setFlushOffset(t.metadata.flushOffset-shorten, true); err != nil {
|
if err := t.metadata.setFlushOffset(t.metadata.flushOffset-shorten, true); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Retrieve the new size and update the total size counter
|
// Retrieve the new size and update the total size counter
|
||||||
newSize, err := t.sizeNolock()
|
newSize, err := t.sizeNolock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -1247,25 +1246,20 @@ func (t *freezerTable) doSync() error {
|
||||||
if t.index == nil || t.head == nil || t.metadata.file == nil {
|
if t.index == nil || t.head == nil || t.metadata.file == nil {
|
||||||
return errClosed
|
return errClosed
|
||||||
}
|
}
|
||||||
var err error
|
if err := t.index.Sync(); err != nil {
|
||||||
trackError := func(e error) {
|
return err
|
||||||
if e != nil && err == nil {
|
|
||||||
err = e
|
|
||||||
}
|
}
|
||||||
|
if err := t.head.Sync(); err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
trackError(t.index.Sync())
|
|
||||||
trackError(t.head.Sync())
|
|
||||||
|
|
||||||
// A crash may occur before the offset is updated, leaving the offset
|
// A crash may occur before the offset is updated, leaving the offset
|
||||||
// points to a old position. If so, the extra items above the offset
|
// points to an old position. If so, the extra items above the offset
|
||||||
// will be truncated during the next run.
|
// will be truncated during the next run.
|
||||||
stat, err := t.index.Stat()
|
stat, err := t.index.Stat()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
offset := stat.Size()
|
return t.metadata.setFlushOffset(stat.Size(), true)
|
||||||
trackError(t.metadata.setFlushOffset(offset, true))
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *freezerTable) dumpIndexStdout(start, stop int64) {
|
func (t *freezerTable) dumpIndexStdout(start, stop int64) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue