Flexberry / NewPlatform.Flexberry.ServiceBus

Flexberry Service Bus - Runtime service
MIT License
3 stars 4 forks source link

Обращение к незаполненному словарю в PrioritySendingManager #83

Open archaim opened 4 years ago

archaim commented 4 years ago

Описание ошибки

В компоненте PrioritySendingManager словарь _clientConnections заполняется в методе ScanMessages, а используется в том числе в TryEnqueue. Метод ScanMessages работает ассинхронно по таймеру, и при старте шины возникают ситуации, когда ScanMessages ещё не отработал, а TryEnqueue уже вызывают другие компоненты. Это приводит к неправильному поведению шины при запуске, а также к спаму в логах.

Ожидаемое поведение

Шина не должна спамить ошибками при запуске.

Шаги воспроизведения

Создать ситуацию, когда сообщения в шину начинают приходить раньше, чем ScanMessages успеет отработать в первый раз.

Пути решения

В первый раз нужно заполнить _clientConnections синхронно в методе Start или Prepare.