вівторок, 21 жовтня 2014 р.

Проблема: transceiver session with oserl

https://github.com/iamaleksey/oserl/issues/1

Год назад я написал SMPP-клиента используя библиотеку oserl для моего проекта SMS-рассылок. Тестировал в разных позициях долго и качественно. Но как только дошло до реальных дел, я поймал ошибку. Она оказалась достаточно глубоко зарыта не только в коде oserl, но и в архитектуре.

Суть проблемы в том, что на больших нагрузках в пределах сессии transceiver возникает lock, потому что параллельно вызываются две синхронных функции, что не есть правильно. В качестве временного решения можно обойти ошибку вызвав одну функцию как асинхронную, например обработку deliver_sm, что действительно может быть вполне асинхронным. В деталях я еще буду разбираться, но следующую версию SMPP-клиента надо будет переписать используя альтернативную библиотеку https://github.com/essiene/smpp34.

Спасибо этой ошибке за кардинальное трехнедельное разбирательство в OTP.

Немає коментарів:

Дописати коментар