Очень много кода приведено, причем без комментариев и огромными функциями. Советую побить логику на более понятные логические блоки и отдельно их покрыть тестами. Тогда ошибку будет выловить гораздо легче.
Марат Нагаев, значит скорее всего эта горутина и утекает. Нужно обращать внимание на первое число в начале стека, это количество горутин, которые остановились в этом месте. Обычно в месте учетки это число растет постепенно
Soft_touch_plastic, в глобальных пакетах можно оставить лог, например. Остальное бы вынес.
Потому что тестить с глобалами очень сложно и могут быть проблемы с побочными эффектами (когда одна функция что-то меняет в глобальной области, а другие от этого ловят баги, отлаживать такое в большом проекте— смерть)
SSSSTTTTAAAASSSS, если дамп запроса, который вы прислали, был с клиента (а его нужно делать именно с клиента), то проблема у вас не в сервере, а в клиенте.