fix sandbox create rollback gap
This commit is contained in:
parent
b4a2a9ceea
commit
9b6c7908ad
3 changed files with 94 additions and 3 deletions
|
|
@ -107,7 +107,7 @@ class CreateSandbox:
|
|||
'sandbox.new_container.id',
|
||||
new_session.container_id,
|
||||
)
|
||||
self._repository.save(new_session)
|
||||
self._save_created_session(new_session)
|
||||
_set_active_count(self._metrics, self._repository)
|
||||
if result == 'replaced':
|
||||
span.set_attribute('session.id', str(new_session.session_id))
|
||||
|
|
@ -131,6 +131,26 @@ class CreateSandbox:
|
|||
span.record_error(exc)
|
||||
raise
|
||||
|
||||
def _save_created_session(self, session: SandboxSession) -> None:
|
||||
try:
|
||||
self._repository.save(session)
|
||||
except Exception as exc:
|
||||
self._compensate_save_failure(session, exc)
|
||||
raise
|
||||
|
||||
def _compensate_save_failure(
|
||||
self,
|
||||
session: SandboxSession,
|
||||
error: Exception,
|
||||
) -> None:
|
||||
try:
|
||||
self._runtime.stop(session.container_id)
|
||||
except Exception as stop_error:
|
||||
_set_active_count(self._metrics, self._repository)
|
||||
raise error from stop_error
|
||||
|
||||
_set_active_count(self._metrics, self._repository)
|
||||
|
||||
|
||||
class CleanupExpiredSandboxes:
|
||||
def __init__(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue