Closed d29 closed 7 years ago
This also appears to leave zombie registrations. So when client reconnects and tries to re-register same URI error is returned that it is already registered. The only way to resolve is to restart the router
From code-inspection, it looks like this particular problem should be fixed on master (because that line of code is now inside a block checking self._router
for None).
From the diffs, I think it was introduced between 17.2.0 and 17.3.x.
@d29 if you have a way to reliably repeat this, can you try with master? You can pip install https://github.com/crossbario/crossbar/archive/master.zip
to do that.
You can repeat this (on 17.2.x) IIRC by raising a non-ApplicationError
exception from a dynamic authenticator, causing the session to leave before it is fully joined. However, in that case there wouldn't be any registrations anyway.
Thanks @meejah. Yes, the main issue here is zombie registrations. Unfortunately I don't have a reliable way to reproduce it. Ended up backporting some modifications I needed to 0.15, because it doesn't have that issue - registrations are reliably removed when session disconnects cleanly or not.
Hunch: any chance exception is thrown when session is being discarded (removed) and all of the new code that logs session leaving is invoked. Again, sorry, I don't have any debug logs or reliable way to reproduce.
Okay. To clarify: I don't think the stacktrace in the original report can still happen (on master), but that doesn't mean there aren't other ways to get zombie registrations :/
@DZabavchik Thanks. Yeah, I'd presume something like that. Have you tried anything newer than 0.15? I can look at the diffs and see if anything pops out ...
There is guarding code on master that prohibits this.
crossbar version
Traceback from router:
js code to reproduce: