diff options
author | bojie <a1346494@gmail.com> | 2018-11-12 09:15:21 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2018-12-19 20:54:27 +0800 |
commit | 7a8b4a74e34ad7e1b670e620effa93ab6bdc941c (patch) | |
tree | a898ea68bcf4aff30ce3cc33e1a03c07d297200e | |
parent | e9698b16445a40c0e65708e942d43cdcf0d817bb (diff) | |
download | dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar.gz dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar.bz2 dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar.lz dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar.xz dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.tar.zst dexon-7a8b4a74e34ad7e1b670e620effa93ab6bdc941c.zip |
app: bug fix (#7)
Add notify mutex to prevent missing chain issue while concurrent
appending with same slice.
-rw-r--r-- | dex/app.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/dex/app.go b/dex/app.go index 7d2165118..d0d911e86 100644 --- a/dex/app.go +++ b/dex/app.go @@ -51,6 +51,7 @@ type DexconApp struct { chainLocksInitMu sync.Mutex chainLocks map[uint32]*sync.RWMutex + notifyMu sync.Mutex notifyChan sync.Map chainLatestRoot sync.Map } @@ -79,6 +80,9 @@ func NewDexconApp(txPool *core.TxPool, blockchain *core.BlockChain, gov *DexconG } func (d *DexconApp) addNotify(height uint64) <-chan uint64 { + d.notifyMu.Lock() + defer d.notifyMu.Unlock() + result := make(chan uint64) v, ok := d.notifyChan.Load(height) if ok { @@ -92,6 +96,9 @@ func (d *DexconApp) addNotify(height uint64) <-chan uint64 { } func (d *DexconApp) notify(height uint64) { + d.notifyMu.Lock() + defer d.notifyMu.Unlock() + d.notifyChan.Range(func(key, value interface{}) bool { h := key.(uint64) n := value.(*notify) |