Currently running rabbitmq 3.7.24.
Attempting to subscribe to STOMP via the websocket with bad input seems to crash the websocket process.
2020-06-10 18:13:46.271 [error] <0.7959.31> Supervisor {<0.7959.31>,amqp_channel_sup_sup} had child channel_sup started with amqp_channel_sup:start_link(direct, <0.7958.31>, <<\"
10.176.0.45:39024 ->
10.176.148.79:15674\">>) at undefined exit with reason shutdown in context shutdown_error
2020-06-10 18:14:29.414 [error] <0.11248.19> Supervisor {<0.11248.19>,amqp_channel_sup_sup} had child channel_sup started with amqp_channel_sup:start_link(direct, <0.11247.19>, <<\"
10.176.0.45:20384 ->
10.176.148.79:15674\">>) at undefined exit with reason shutdown in context shutdown_error
2020-06-10 18:18:23.859 [error] <0.13816.34> CRASH REPORT Process <0.13816.34> with 0 neighbours crashed with reason: no case clause matching {error,{bad_escape,\"\\\\\\n\"}} in rabbit_web_stomp_handler:handle_data/2 line 236
2020-06-10 18:18:23.860 [error] <0.13824.34> Supervisor {<0.13824.34>,rabbit_web_stomp_connection_sup} had child cowboy_clear started with cowboy_clear:start_link(web_stomp, #Port<0.6424>, ranch_tcp, #{env => #{dispatch => [{'_',[],[{[<<\"ws\">>],[],rabbit_web_stomp_handler,[{type,text},{ws_opts,...}]}]}],...},...}) at <0.13816.34> exit with reason no case clause matching {error,{bad_escape,\"\\\\\\n\"}} in rabbit_web_stomp_handler:handle_data/2 line 236 in context child_terminated
2020-06-10 18:18:23.860 [error] <0.13824.34> Supervisor {<0.13824.34>,rabbit_web_stomp_connection_sup} had child cowboy_clear started with cowboy_clear:start_link(web_stomp, #Port<0.6424>, ranch_tcp, #{env => #{dispatch => [{'_',[],[{[<<\"ws\">>],[],rabbit_web_stomp_handler,[{type,text},{ws_opts,...}]}]}],...},...}) at <0.13816.34> exit with reason reached_max_restart_intensity in context shutdown
2020-06-10 18:19:35.140 [error] <0.4125.35> CRASH REPORT Process <0.4125.35> with 0 neighbours crashed with reason: no case clause matching {error,{bad_escape,\"\\\\\\n\"}} in rabbit_web_stomp_handler:handle_data/2 line 236
2020-06-10 18:19:35.140 [error] <0.4123.35> Supervisor {<0.4123.35>,rabbit_web_stomp_connection_sup} had child cowboy_clear started with cowboy_clear:start_link(web_stomp, #Port<0.6523>, ranch_tcp, #{env => #{dispatch => [{'_',[],[{[<<\"ws\">>],[],rabbit_web_stomp_handler,[{type,text},{ws_opts,...}]}]}],...},...}) at <0.4125.35> exit with reason no case clause matching {error,{bad_escape,\"\\\\\\n\"}} in rabbit_web_stomp_handler:handle_data/2 line 236 in context child_terminated
2020-06-10 18:19:35.141 [error] <0.4123.35> Supervisor {<0.4123.35>,rabbit_web_stomp_connection_sup} had child cowboy_clear started with cowboy_clear:start_link(web_stomp, #Port<0.6523>, ranch_tcp, #{env => #{dispatch => [{'_',[],[{[<<\"ws\">>],[],rabbit_web_stomp_handler,[{type,text},{ws_opts,...}]}]}],...},...}) at <0.4125.35> exit with reason reached_max_restart_intensity in context shutdown
In our situation we do not have complete control over what topics are being subscribed to. It is a public facing web socket server. I do not think it is unreasonable for the server to more gracefully handle bad input.
Further, it appears when the web stomp process is restarted, it either leaks the old stomp subscribers OR there is a race condition when creating them. When it starts back up and new connections are added, the logs are littered with errors like the following:
2020-06-10 18:23:27.655 [error] <0.13153.37> STOMP error frame sent:
So, there is lots of churn on the clients until they find an available subscription. Occasionally, our nodes become unresponsive and we need to restart them.