trie, eth: minor fix

This commit is contained in:
rjl493456442 2018-03-16 22:49:56 +08:00
parent b3de53798f
commit 1a243afb4d
2 changed files with 8 additions and 6 deletions

View file

@ -280,13 +280,16 @@ func (s *stateSync) loop() (err error) {
peerSub := s.d.peers.SubscribeNewPeers(newPeer) peerSub := s.d.peers.SubscribeNewPeers(newPeer)
defer peerSub.Unsubscribe() defer peerSub.Unsubscribe()
defer func() { defer func() {
err = s.commit(true) cerr := s.commit(true)
if err == nil {
err = cerr
}
}() }()
// Keep assigning new tasks until the sync completes or aborts // Keep assigning new tasks until the sync completes or aborts
for s.sched.Pending() > 0 { for s.sched.Pending() > 0 {
if err = s.commit(false); err != nil { if err = s.commit(false); err != nil {
return return err
} }
s.assignTasks() s.assignTasks()
// Tasks assigned, wait for something to happen // Tasks assigned, wait for something to happen
@ -312,12 +315,12 @@ func (s *stateSync) loop() (err error) {
// Process all the received blobs and check for stale delivery // Process all the received blobs and check for stale delivery
if err = s.process(req); err != nil { if err = s.process(req); err != nil {
log.Warn("Node data write error", "err", err) log.Warn("Node data write error", "err", err)
return return err
} }
req.peer.SetNodeDataIdle(len(req.response)) req.peer.SetNodeDataIdle(len(req.response))
} }
} }
return return nil
} }
func (s *stateSync) commit(force bool) error { func (s *stateSync) commit(force bool) error {
@ -326,7 +329,6 @@ func (s *stateSync) commit(force bool) error {
} }
start := time.Now() start := time.Now()
b := s.d.stateDB.NewBatch() b := s.d.stateDB.NewBatch()
// Ignore empty write.
if written, err := s.sched.Commit(b); written == 0 || err != nil { if written, err := s.sched.Commit(b); written == 0 || err != nil {
return err return err
} }

View file

@ -212,7 +212,7 @@ func (s *TrieSync) Process(results []SyncResult) (bool, int, error) {
} }
// Commit flushes the data stored in the internal membatch out to persistent // Commit flushes the data stored in the internal membatch out to persistent
// storage, returning th number of items written and any occurred error. // storage, returning the number of items written and any occurred error.
func (s *TrieSync) Commit(dbw ethdb.Putter) (int, error) { func (s *TrieSync) Commit(dbw ethdb.Putter) (int, error) {
// Dump the membatch into a database dbw // Dump the membatch into a database dbw
for i, key := range s.membatch.order { for i, key := range s.membatch.order {