Kaszanas / Kaszanas/SnapSC2

Websocket Timeout

Open
#32 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

during sending the request there is a websocket timeout

```
ERROR:root:[]: Error during observation: Websocket timed out.
ERROR:root:Error while processing replay: Error during observation: Websocket timed out.
Traceback (most recent call last):
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_socket.py", line 127, in recv
bytes_ = _recv()
^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_socket.py", line 99, in _recv
return sock.recv(bufsize)
^^^^^^^^^^^^^^^^^^
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 67, in catch_websocket_connection_errors
yield
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 200, in _read
response_str = self._sock.recv()
^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_core.py", line 395, in recv
opcode, data = self.recv_data()
^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_core.py", line 423, in recv_data
opcode, frame = self.recv_data_frame(control_frame)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_core.py", line 444, in recv_data_frame
frame = self.recv_frame()
^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_core.py", line 485, in recv_frame
return self.frame_buffer.recv_frame()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_abnf.py", line 375, in recv_frame
self.recv_header()
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_abnf.py", line 329, in recv_header
header = self.recv_strict(2)
^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_abnf.py", line 418, in recv_strict
bytes_ = self.recv(min(16384, shortage))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_core.py", line 581, in _recv
return recv(self.sock, bufsize)
^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\websocket\_socket.py", line 129, in recv
raise WebSocketTimeoutException("Connection timed out")
websocket._exceptions.WebSocketTimeoutException: Connection timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 167, in send
res = self.send_req(req)
^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 147, in send_req
return self.read()
^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\stopwatch.py", line 226, in _stopwatch
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 109, in read
response = self._read()
^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 199, in _read
with catch_websocket_connection_errors():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Andrzej\AppData\Roaming\uv\python\cpython-3.12.7-windows-x86_64-none\Lib\contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 73, in catch_websocket_connection_errors
raise ConnectionError("Websocket timed out.") from e
pysc2_evolved.lib.protocol.ConnectionError: Websocket timed out.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\observer\stream_observations.py", line 250, in run_observation_stream
yield from observation_consumer(
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\observer\stream_observations.py", line 462, in observation_consumer
yield from processing_function(
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\observer\processing_functions.py", line 97, in lockstep_processing
obs = next(consumer)
^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\observer\stream_observations.py", line 313, in player_obs_consumer
for next_observation in observations_iterator:
^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\virtual_iterator.py", line 227, in __next__
self.parent.advance()
File "H:\Projects\SC2_Combat_Detector\src\sc2_combat_detector\replay_processing\virtual_iterator.py", line 205, in advance
n = next(self.generator)
^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\replay\replay_observation_stream.py", line 223, in observations
obs = [controller.observe() for controller in self._controllers]
^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\remote_controller.py", line 106, in _valid_status
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\stopwatch.py", line 226, in _stopwatch
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\remote_controller.py", line 284, in observe
obs = self._client.send(
^^^^^^^^^^^^^^^^^^
File "H:\Projects\SC2_Combat_Detector\.venv\Lib\site-packages\pysc2_evolved\lib\protocol.py", line 169, in send
raise ConnectionError("Error during %s: %s" % (name, e)) from e
pysc2_evolved.lib.protocol.ConnectionError: Error during observation: Websocket timed out.
ERROR:root:Error during replay observation: Error during observation: Websocket timed out.
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the replay observation failure and trace the call path through src/sc2_combat_detector/replay_processing/observer/stream_observations.py, processing_functions.py, and virtual_iterator.py. Compare that path with the websocket and protocol errors shown from pysc2_evolved; done means the reported replay no longer fails with a websocket timeout, with a regression test covering the cause.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.