zeroc-ice/ice-demos

Python Ice/bidir error removing client

Closed this issue · 1 comments

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

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.