E2B icon indicating copy to clipboard operation
E2B copied to clipboard

WebSocket exception leading to program being stuck

Open objecthuman opened this issue 1 year ago • 2 comments

Describe the bug If an exception occurs while receiving messages from the e2b servers, the following code fails to place anything in the queue, causing the entire flow to get stuck. There is currently no way for us to detect if a WebSocket error has occurred, as the client code abstracts this part away, only adding a log line. It would be beneficial if the client provided a mechanism, such as a timeout feature, that allows us as users of the client library to be aware of errors, enabling us to handle them ourselves.

The issue is happening in the following function of file eb2/sandbox/webscoket_client.py:

  async def _receive_message(self):
      try:
          if not self._ws:
              logger.error("No WebSocket connection")
              return
          async for message in self._ws:
              logger.debug(f"WebSocket received message: {message}".strip())
              self._queue_out.put(message)
      except Exception as e:
          logger.error(f"WebSocket received error while receiving messages: {e}")

To Reproduce Happens at random, Use the CodeInterpreter class and start a websocket.

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior Should be a way for the end user to know that there was an error.

Browser console output

Terminal commands & output WebSocket received error while receiving messages sent 1011 (internal error) keepalive ping timeout; no close frame received

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Linux
  • Browser [e.g. chrome, safari]
  • Version : e2b=0.17.1, e2b-code-interpreter=0.0.3

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context Add any other context about the problem here.

objecthuman avatar Aug 22 '24 06:08 objecthuman

Hey @Neeraj319, can you try switching to the new Beta SDK (https://e2b.dev/docs/guide/beta-migration)? It gets rid of websockets and we are raising more granular exceptions.

ValentaTomas avatar Aug 22 '24 16:08 ValentaTomas

We also included a request timeout that you can pass to all requests/operations so you can ensure the SDK won't hang and you will get an error.

ValentaTomas avatar Aug 22 '24 19:08 ValentaTomas

Hey @Neeraj319 was this solved in the end?

ValentaTomas avatar Oct 04 '24 04:10 ValentaTomas

No, thanks for suggestion though. We can close this.

objecthuman avatar Oct 06 '24 15:10 objecthuman