diff --git a/packages/binary/messagelayer/messagefactory/messagefactory.go b/packages/binary/messagelayer/messagefactory/messagefactory.go index 8401a9afb821d6e11d28c1c941ca68e5922a474a..4a206e2d18e66e5cd4e252a783d6fa1d89e5ba10 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))