From 516a187523bbfcf1f1591120945dd197485c0b8e Mon Sep 17 00:00:00 2001 From: capossele <angelocapossele@gmail.com> Date: Fri, 17 Jul 2020 11:39:01 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Change=20unlock=20order=20?= =?UTF-8?q?in=20MessageRequester=20StartRequest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binary/messagelayer/messagerequester/messagerequester.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/binary/messagelayer/messagerequester/messagerequester.go b/packages/binary/messagelayer/messagerequester/messagerequester.go index 06845164..c42481ca 100644 --- a/packages/binary/messagelayer/messagerequester/messagerequester.go +++ b/packages/binary/messagelayer/messagerequester/messagerequester.go @@ -33,17 +33,18 @@ func New(optionalOptions ...Option) *MessageRequester { // StartRequest initiates a regular triggering of the StartRequest event until it has been stopped using StopRequest. func (requester *MessageRequester) StartRequest(id message.Id) { requester.scheduledRequestsMutex.Lock() - defer requester.scheduledRequestsMutex.Unlock() // ignore already scheduled requests if _, exists := requester.scheduledRequests[id]; exists { + requester.scheduledRequestsMutex.Unlock() return } // trigger the event and schedule the next request // make this atomic to be sure that a successive call of StartRequest does not trigger again - requester.Events.SendRequest.Trigger(id) requester.scheduledRequests[id] = time.AfterFunc(requester.options.retryInterval, func() { requester.reRequest(id) }) + requester.scheduledRequestsMutex.Unlock() + requester.Events.SendRequest.Trigger(id) } // StopRequest stops requests for the given message to further happen. -- GitLab