neo-go/pkg
Roman Khimov af6a6f5f30 consensus: fix potential system deadlock
There is a notification pushed into the channel when block is being added,
that notification is read by special goroutine that then forwards it to all
subscribers to that particular event. Consensus goroutine is one of that
subscribers, so for the system to properly function it has to read these
events, but at the same time it can generate new blocks inside, so in some
cases it can generate two blocks without ever reading from the subscription
channel and this will lead to a deadlock.

To avoid that we need to check subscription channel for events on every loop.
2020-09-18 10:21:47 +03:00
..
compiler Merge pull request #1375 from nspcc-dev/compiler/types 2020-09-16 14:43:50 +03:00
config *: use proper YAML library import path, fix #1306 2020-08-12 16:31:06 +03:00
consensus consensus: fix potential system deadlock 2020-09-18 10:21:47 +03:00
core core: remove named return variable from addHeaders() 2020-09-16 17:45:12 +03:00
crypto hash: introduce memory-optimized merkle root hash calculation routine 2020-09-15 18:38:15 +03:00
encoding remove github.com/pkg/errors from dependencies 2020-08-07 12:21:52 +03:00
internal hash: introduce memory-optimized merkle root hash calculation routine 2020-09-15 18:38:15 +03:00
interop Merge pull request #1375 from nspcc-dev/compiler/types 2020-09-16 14:43:50 +03:00
io always wrap errors when creating new ones with fmt.Errorf() 2020-08-07 12:21:52 +03:00
network network: don't compress Inventory messages 2020-09-09 20:46:31 +03:00
rpc Merge pull request #1405 from nspcc-dev/rework-block-verifications 2020-09-16 14:27:24 +03:00
smartcontract rpc: use state.AppExecResult for ApplicationLog marshalling 2020-09-07 13:38:32 +03:00
util *: use proper YAML library import path, fix #1306 2020-08-12 16:31:06 +03:00
vm vm/core: drop old key caching system 2020-09-10 14:43:24 +03:00
wallet wallet: emit proper multisignature 2020-08-18 11:24:48 +03:00