From 6de8d29263b2c184ddd0506d05a18d33554d9788 Mon Sep 17 00:00:00 2001 From: Jimmy Hu Date: Tue, 4 Dec 2018 14:54:28 +0800 Subject: core, dex: Timeout for prepare payload (#72) * Timeout on prepare payload * Leave 2 CPU for others * Add hardLimit and softLimit to PreparePayload --- core/blockchain.go | 16 +++++++++------- core/types/transaction_signing.go | 5 ++++- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'core') diff --git a/core/blockchain.go b/core/blockchain.go index 470f7ae28..1b3b22e5e 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -270,13 +270,15 @@ func (bc *BlockChain) AddConfirmedBlock(block *coreTypes.Block) error { bc.confirmedBlockInitMu.Unlock() var transactions types.Transactions - err := rlp.Decode(bytes.NewReader(block.Payload), &transactions) - if err != nil { - return err - } - _, err = types.GlobalSigCache.Add(types.NewEIP155Signer(bc.Config().ChainID), transactions) - if err != nil { - return err + if len(block.Payload) != 0 { + err := rlp.Decode(bytes.NewReader(block.Payload), &transactions) + if err != nil { + return err + } + _, err = types.GlobalSigCache.Add(types.NewEIP155Signer(bc.Config().ChainID), transactions) + if err != nil { + return err + } } addressMap := map[common.Address]struct{}{} diff --git a/core/types/transaction_signing.go b/core/types/transaction_signing.go index 99e0c7896..1a13e3e3d 100644 --- a/core/types/transaction_signing.go +++ b/core/types/transaction_signing.go @@ -60,7 +60,10 @@ type resultEntry struct { // Add adds a list of transactions into sig cache. func (c *globalSigCache) Add(signer Signer, txs Transactions) (errorTx *Transaction, err error) { - num := runtime.NumCPU() + num := runtime.NumCPU() - 2 + if num < 1 { + num = 1 + } batchSize := len(txs) / num wg := sync.WaitGroup{} wg.Add(num) -- cgit v1.2.3