fix: drain authored actions on shutdown (#461)
This commit is contained in:
1 parent
8e6ee96ede
commit
0dd3932d14
3 files changed
+108
-1
No files matched your search
+26
@@ -43,6 +43,28 @@ from src.later_store import LaterStore
|
||||
from src.today_store import TodayPlanFull, TodayStore
|
||||
from src.views import FRONTEND_BUILD, router as frontend_router
|
||||
|
||||
|
||||
async def _drain_authored_action_operations() -> None:
|
||||
tasks = {
|
||||
operation[1]
|
||||
for operation in _authored_action_operations.values()
|
||||
if not operation[1].done()
|
||||
}
|
||||
if not tasks:
|
||||
return
|
||||
try:
|
||||
await asyncio.wait_for(
|
||||
asyncio.gather(*tasks, return_exceptions=True),
|
||||
timeout=AUTHORED_ACTION_SHUTDOWN_GRACE_SECONDS,
|
||||
)
|
||||
except TimeoutError:
|
||||
pass
|
||||
finally:
|
||||
for key, operation in list(_authored_action_operations.items()):
|
||||
if operation[1] in tasks and operation[1].done():
|
||||
_authored_action_operations.pop(key, None)
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(_app: FastAPI):
|
||||
global _live_snapshot_task, _available_issue_snapshot_task
|
||||
@@ -60,6 +82,7 @@ async def lifespan(_app: FastAPI):
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
try:
|
||||
await _drain_authored_action_operations()
|
||||
await gitea_proxy.stop_client()
|
||||
finally:
|
||||
if _live_snapshot_task is live_task:
|
||||
@@ -83,6 +106,9 @@ AUTHORED_ACTION_IDEMPOTENCY_MAX_ENTRIES = 256
|
||||
AUTHORED_ACTION_LEDGER_LOCK_TIMEOUT_SECONDS = float(
|
||||
os.getenv("STACKCHAIN_IDEMPOTENCY_LOCK_TIMEOUT_SECONDS", "0.1")
|
||||
)
|
||||
AUTHORED_ACTION_SHUTDOWN_GRACE_SECONDS = float(
|
||||
os.getenv("STACKCHAIN_AUTHORED_ACTION_SHUTDOWN_GRACE_SECONDS", "5.0")
|
||||
)
|
||||
NOTIFICATION_MUTATION_TIMEOUT_SECONDS = 5.0
|
||||
NOTIFICATION_PAGE_TIMEOUT_SECONDS = 5.0
|
||||
WORK_PAGE_TIMEOUT_SECONDS = 5.0
|
||||
|
||||
Reference in new issue
Block a user