{"level":"error","message":"2024-07-04 09-46-45 [LOG:ERROR] [knode-sarcastic-shannon-82790]
PreconditionError: User \"ec...14\" has not subscribed to \"2d...ef\"."}
Reading the sources, I guess this may be an explanation:
core.auth.TokenManager has a listener on("connection:remove", ...)
-> removeConnection(...)
-> expire(...)
-> ask("core:realtime:connection:remove", ...)
core.realtime.HotelClerk has also a listener on("connection:remove", ...)
-> removeConnection(...)
-> unsubscribe(...)
and a listener onAsk("core:realtime:connection:remove", ...)
-> removeConnection(...)
-> unsubscribe(...)
This leads to two calls to unsubscribe(). One is run correctly, and empties connectionRooms at some time.
The other one would progress enough meanwhile, but fail at the check for a non empty connectionRooms, so:
Consider this client scenario (even if not regular):
An error appears in log:
Reading the sources, I guess this may be an explanation:
core.auth.TokenManager has a listener on("connection:remove", ...) -> removeConnection(...) -> expire(...) -> ask("core:realtime:connection:remove", ...)
core.realtime.HotelClerk has also a listener on("connection:remove", ...) -> removeConnection(...) -> unsubscribe(...) and a listener onAsk("core:realtime:connection:remove", ...) -> removeConnection(...) -> unsubscribe(...)
This leads to two calls to
unsubscribe()
. One is run correctly, and emptiesconnectionRooms
at some time. The other one would progress enough meanwhile, but fail at the check for a non emptyconnectionRooms
, so: