Skip to content

Commit

Permalink
Fix issue #5277: [Bug]: AttributeError: 'EventStreamRuntime' object h…
Browse files Browse the repository at this point in the history
…as no attribute 'sid' if runtime_extra_deps is not None (#5330)

Co-authored-by: Engel Nyst <[email protected]>
  • Loading branch information
openhands-agent and enyst authored Dec 1, 2024
1 parent 3e4220b commit 3e49f0f
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 15 deletions.
13 changes: 7 additions & 6 deletions openhands/runtime/impl/eventstream/eventstream_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,6 @@ def __init__(
# Buffer for container logs
self.log_buffer: LogBuffer | None = None

if self.config.sandbox.runtime_extra_deps:
self.log(
'debug',
f'Installing extra user-provided dependencies in the runtime image: {self.config.sandbox.runtime_extra_deps}',
)

self.init_base_runtime(
config,
event_stream,
Expand All @@ -205,6 +199,13 @@ def __init__(
headless_mode,
)

# Log runtime_extra_deps after base class initialization so self.sid is available
if self.config.sandbox.runtime_extra_deps:
self.log(
'debug',
f'Installing extra user-provided dependencies in the runtime image: {self.config.sandbox.runtime_extra_deps}',
)

async def connect(self):
self.send_status_message('STATUS$STARTING_RUNTIME')
try:
Expand Down
1 change: 0 additions & 1 deletion openhands/runtime/impl/remote/remote_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import tenacity

from openhands.core.config import AppConfig
from openhands.core.logger import openhands_logger as logger
from openhands.events import EventStream
from openhands.events.action import (
BrowseInteractiveAction,
Expand Down
12 changes: 6 additions & 6 deletions openhands/server/session/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ interruptions are recoverable.
There are 3 main server side event handlers:

* `connect` - Invoked when a new connection to the server is established. (This may be via http or WebSocket)
* `oh_action` - Invoked when a connected client sends an event (Such as `INIT` or a prompt for the Agent) -
* `oh_action` - Invoked when a connected client sends an event (Such as `INIT` or a prompt for the Agent) -
this is distinct from the `oh_event` sent from the server to the client.
* `disconnect` - Invoked when a connected client disconnects from the server.

## Init
Each connection has a unique id, and when initially established, is not associated with any session. An
`INIT` event must be sent to the server in order to attach a connection to a session. The `INIT` event
may optionally include a GitHub token and a token to connect to an existing session. (Which may be running
locally or may need to be hydrated). If no token is received as part of the init event, it is assumed a
`INIT` event must be sent to the server in order to attach a connection to a session. The `INIT` event
may optionally include a GitHub token and a token to connect to an existing session. (Which may be running
locally or may need to be hydrated). If no token is received as part of the init event, it is assumed a
new session should be started.

## Disconnect
The (manager)[manager.py] manages connections and sessions. Each session may have zero or more connections
The (manager)[manager.py] manages connections and sessions. Each session may have zero or more connections
associated with it, managed by invocations of `INIT` and disconnect. When a session no longer has any
connections associated with it, after a set amount of time (determined by `config.sandbox.close_delay`),
the session and runtime are passivated (So will need to be rehydrated to continue.)
the session and runtime are passivated (So will need to be rehydrated to continue.)
2 changes: 0 additions & 2 deletions openhands/server/session/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from openhands.core.const.guide_url import TROUBLESHOOTING_URL
from openhands.core.logger import openhands_logger as logger
from openhands.core.schema import AgentState
from openhands.core.schema.action import ActionType
from openhands.core.schema.config import ConfigType
from openhands.events.action import MessageAction, NullAction
from openhands.events.event import Event, EventSource
Expand All @@ -23,7 +22,6 @@
from openhands.llm.llm import LLM
from openhands.server.session.agent_session import AgentSession
from openhands.storage.files import FileStore
from openhands.utils.async_utils import call_coro_in_bg_thread

ROOM_KEY = 'room:{sid}'

Expand Down

0 comments on commit 3e49f0f

Please sign in to comment.