From 24525698aae2a73490cfd37d7070edb3886ee8ac Mon Sep 17 00:00:00 2001
From: Luca Moser <moser.luca@gmail.com>
Date: Fri, 26 Jun 2020 13:28:29 +0200
Subject: [PATCH] make IssuePayload sync (#563)

---
 .../binary/messagelayer/messagefactory/messagefactory.go   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/packages/binary/messagelayer/messagefactory/messagefactory.go b/packages/binary/messagelayer/messagefactory/messagefactory.go
index 8401a9af..4a206e2d 100644
--- a/packages/binary/messagelayer/messagefactory/messagefactory.go
+++ b/packages/binary/messagelayer/messagefactory/messagefactory.go
@@ -34,8 +34,9 @@ type MessageFactory struct {
 	localIdentity *identity.LocalIdentity
 	selector      TipSelector
 
-	worker      Worker
-	workerMutex sync.RWMutex
+	worker        Worker
+	workerMutex   sync.RWMutex
+	issuanceMutex sync.Mutex
 }
 
 // New creates a new message factory.
@@ -65,6 +66,8 @@ func (m *MessageFactory) SetWorker(worker Worker) {
 // It also triggers the MessageConstructed event once it's done, which is for example used by the plugins to listen for
 // messages that shall be attached to the tangle.
 func (m *MessageFactory) IssuePayload(payload payload.Payload) *message.Message {
+	m.issuanceMutex.Lock()
+	defer m.issuanceMutex.Unlock()
 	sequenceNumber, err := m.sequence.Next()
 	if err != nil {
 		m.Events.Error.Trigger(fmt.Errorf("could not create sequence number: %w", err))
-- 
GitLab