Skip to content
Snippets Groups Projects
Unverified Commit a710c430 authored by Levente Pap's avatar Levente Pap Committed by GitHub
Browse files

Fix consensus integration test (#885)

By waiting avgNetworkDelay after unsubscribing from message layer.
This should be enough time for any possible fcob sheduled setPrefered
to trigger.
parent 1ce46330
No related branches found
No related tags found
No related merge requests found
...@@ -70,6 +70,8 @@ var ( ...@@ -70,6 +70,8 @@ var (
valueObjectFactory *valuetangle.ValueObjectFactory valueObjectFactory *valuetangle.ValueObjectFactory
valueObjectFactoryOnce sync.Once valueObjectFactoryOnce sync.Once
receiveMessageClosure *events.Closure
) )
// App gets the plugin instance. // App gets the plugin instance.
...@@ -149,14 +151,21 @@ func configure(_ *node.Plugin) { ...@@ -149,14 +151,21 @@ func configure(_ *node.Plugin) {
messagelayer.MessageParser().AddMessageFilter(valuetangle.NewSignatureFilter()) messagelayer.MessageParser().AddMessageFilter(valuetangle.NewSignatureFilter())
// subscribe to message-layer // subscribe to message-layer
messagelayer.Tangle().Events.MessageSolid.Attach(events.NewClosure(onReceiveMessageFromMessageLayer)) receiveMessageClosure = events.NewClosure(onReceiveMessageFromMessageLayer)
messagelayer.Tangle().Events.MessageSolid.Attach(receiveMessageClosure)
} }
func run(*node.Plugin) { func run(*node.Plugin) {
if err := daemon.BackgroundWorker("ValueTangle", func(shutdownSignal <-chan struct{}) { if err := daemon.BackgroundWorker("ValueTangle", func(shutdownSignal <-chan struct{}) {
<-shutdownSignal <-shutdownSignal
// TODO: make this better // TODO: make this better
time.Sleep(12 * time.Second) // stop listening to stuff from the message tangle. By the time we are here, gossip and autopeering have already
// been shutdown, so no new incoming messages should appear.
messagelayer.Tangle().Events.MessageSolid.Detach(receiveMessageClosure)
// wait one network delay to be sure that all scheduled setPreferred are triggered in fcob. Otherwise, we would
// try to access an already shutdown objectstorage in fcob.
cfgAvgNetworkDelay := config.Node().Int(CfgValueLayerFCOBAverageNetworkDelay)
time.Sleep(time.Duration(cfgAvgNetworkDelay) * time.Second)
_tangle.Shutdown() _tangle.Shutdown()
}, shutdown.PriorityTangle); err != nil { }, shutdown.PriorityTangle); err != nil {
log.Panicf("Failed to start as daemon: %s", err) log.Panicf("Failed to start as daemon: %s", err)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment