Python Ice/bidir error removing client
Closed this issue · 1 comments
pepone commented
python server.py --Ice.Default.Host=192.168.1.5
adding client `4823fd6f-e550-499d-86dc-e1f730f6fbfb'
adding client `df83dda3-7985-429b-8717-2f3df7184fa6'
-! 09/18/19 10:25:36.672 server.py: warning: connection exception:
src\ice\cpp\src\Ice\StreamSocket.cpp:483: ::Ice::ConnectionLostException:
connection lost: recv() returned zero
local address = 192.168.1.5:10002
remote address = 192.168.1.40:49220
removing client `4823fd6f-e550-499d-86dc-e1f730f6fbfb':
Ice.ConnectionLostException:
recv() returned zero
removing client `4823fd6f-e550-499d-86dc-e1f730f6fbfb':
Ice.ConnectionLostException:
recv() returned zero
-! 09/18/19 10:25:36.697 server.py: warning: Ice.Future: done callback raised exception:
Traceback (most recent call last):
File "C:\Program Files\Python37\lib\site-packages\Ice\__init__.py", line 198, in _callCallbacks
callback(self)
File "server.py", line 56, in <lambda>
lambda f, client=p: self.removeClient(client, f.exception()) if f.exception() else None)
File "server.py", line 61, in removeClient
self._clients.remove(client)
ValueError: list.remove(x): x not in list
pepone commented
Seems this can happen if the exception callback for an invocation runs after the program has invoke callbackAsync
again, in this case is expected that the exception callback is invoked twice, but the exception callback should not assume the client has not been removed.