OSDN Git Service

fix_concurrent_sign_block
authorshenao78 <shenao.78@163.com>
Mon, 3 Aug 2020 02:30:19 +0000 (10:30 +0800)
committershenao78 <shenao.78@163.com>
Mon, 3 Aug 2020 02:30:19 +0000 (10:30 +0800)
protocol/bbft.go

index 02accaf..dde4401 100644 (file)
@@ -207,9 +207,14 @@ func (c *Chain) ProcessBlockSignature(signature, xPub []byte, blockHash *bc.Hash
 // SignBlockHeader signing the block if current node is consensus node
 func (c *Chain) SignBlockHeader(blockHeader *types.BlockHeader) error {
        c.cond.L.Lock()
+       defer c.cond.L.Unlock()
+
        _, err := c.signBlockHeader(blockHeader)
-       c.cond.L.Unlock()
-       return err
+       if err != nil {
+               return err
+       }
+
+       return c.store.SaveBlockHeader(blockHeader)
 }
 
 func (c *Chain) applyBlockSign(blockHeader *types.BlockHeader) error {