Fix from Magik to remove hanging behavior
This commit is contained in:
parent
2c06eb76d6
commit
977351f419
@ -3,6 +3,7 @@ package kit
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
@ -64,11 +65,10 @@ func (p *partitionTracker) done(t *testing.T) bool {
|
|||||||
return uint64(len(p.partitions)) == p.count(t)
|
return uint64(len(p.partitions)) == p.count(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *partitionTracker) recordIfPost(t *testing.T, bm *BlockMiner, smsg *types.SignedMessage) (ret bool) {
|
func (p *partitionTracker) recordIfPost(t *testing.T, bm *BlockMiner, msg *types.Message) (ret bool) {
|
||||||
defer func() {
|
defer func() {
|
||||||
ret = p.done(t)
|
ret = p.done(t)
|
||||||
}()
|
}()
|
||||||
msg := smsg.Message
|
|
||||||
if !(msg.To == bm.miner.ActorAddr) {
|
if !(msg.To == bm.miner.ActorAddr) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -95,7 +95,26 @@ func (bm *BlockMiner) forcePoSt(ctx context.Context, ts *types.TipSet, dlinfo *d
|
|||||||
msgs, err := bm.miner.FullNode.MpoolPending(ctx, types.EmptyTSK)
|
msgs, err := bm.miner.FullNode.MpoolPending(ctx, types.EmptyTSK)
|
||||||
require.NoError(bm.t, err)
|
require.NoError(bm.t, err)
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
tracker.recordIfPost(bm.t, bm, msg)
|
if tracker.recordIfPost(bm.t, bm, &msg.Message) {
|
||||||
|
fmt.Printf("found post in mempool pending\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account for included but not yet executed messages
|
||||||
|
for _, bc := range ts.Cids() {
|
||||||
|
msgs, err := bm.miner.FullNode.ChainGetBlockMessages(ctx, bc)
|
||||||
|
require.NoError(bm.t, err)
|
||||||
|
for _, msg := range msgs.BlsMessages {
|
||||||
|
if tracker.recordIfPost(bm.t, bm, msg) {
|
||||||
|
fmt.Printf("found post in message of prev tipset\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
for _, msg := range msgs.SecpkMessages {
|
||||||
|
if tracker.recordIfPost(bm.t, bm, &msg.Message) {
|
||||||
|
fmt.Printf("found post in message of prev tipset\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// post not yet in mpool, wait for it
|
// post not yet in mpool, wait for it
|
||||||
@ -111,7 +130,8 @@ func (bm *BlockMiner) forcePoSt(ctx context.Context, ts *types.TipSet, dlinfo *d
|
|||||||
bm.t.Logf("pool event: %d", evt.Type)
|
bm.t.Logf("pool event: %d", evt.Type)
|
||||||
if evt.Type == api.MpoolAdd {
|
if evt.Type == api.MpoolAdd {
|
||||||
bm.t.Logf("incoming message %v", evt.Message)
|
bm.t.Logf("incoming message %v", evt.Message)
|
||||||
if tracker.recordIfPost(bm.t, bm, evt.Message) {
|
if tracker.recordIfPost(bm.t, bm, &evt.Message.Message) {
|
||||||
|
fmt.Printf("found post in mempool evt\n")
|
||||||
break POOL
|
break POOL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user