OSDN Git Service

opt trace service
[bytom/bytom.git] / contract / trace_service.go
index a2d8313..1b22988 100644 (file)
@@ -35,15 +35,7 @@ func NewTraceService(infra *Infrastructure) *TraceService {
                log.WithFields(log.Fields{"module": logModule, "err": err}).Fatal("load instances from db")
        }
 
-       chainStatus := infra.Repository.GetChainStatus()
-       if chainStatus == nil {
-               bestHeight, bestHash := infra.Chain.BestChain()
-               chainStatus = &ChainStatus{BlockHeight: bestHeight, BlockHash: bestHash}
-               if err := infra.Repository.SaveChainStatus(chainStatus); err != nil {
-                       log.WithFields(log.Fields{"module": logModule, "err": err}).Fatal("init chain status for trace service")
-               }
-       }
-
+       chainStatus := initChainStatus(infra)
        scheduler := newTraceScheduler(infra)
        inSyncInstances := dispatchInstances(allInstances, scheduler, infra.Chain.FinalizedHeight())
 
@@ -60,6 +52,18 @@ func NewTraceService(infra *Infrastructure) *TraceService {
        return service
 }
 
+func initChainStatus(infra *Infrastructure) *ChainStatus {
+       chainStatus := infra.Repository.GetChainStatus()
+       if chainStatus == nil {
+               bestHeight, bestHash := infra.Chain.BestChain()
+               chainStatus = &ChainStatus{BlockHeight: bestHeight, BlockHash: bestHash}
+               if err := infra.Repository.SaveChainStatus(chainStatus); err != nil {
+                       log.WithFields(log.Fields{"module": logModule, "err": err}).Fatal("init chain status for trace service")
+               }
+       }
+       return chainStatus
+}
+
 func dispatchInstances(instances []*Instance, scheduler *traceScheduler, finalizedHeight uint64) []*Instance {
        var result []*Instance
        for _, inst := range instances {