From 8b14d2ab8e8c594d23015c05efcdf862fdd9519b Mon Sep 17 00:00:00 2001 From: Hyu Date: Wed, 12 Aug 2026 19:31:23 +0800 Subject: [PATCH] fix(runtime): allow shared plugin reconcile to finish (#2419) Co-authored-by: Chan --- src/langbot/pkg/plugin/handler.py | 2 +- tests/unit_tests/plugin/test_handler.py | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/langbot/pkg/plugin/handler.py b/src/langbot/pkg/plugin/handler.py index e7029f625..4805f2668 100644 --- a/src/langbot/pkg/plugin/handler.py +++ b/src/langbot/pkg/plugin/handler.py @@ -1579,7 +1579,7 @@ class RuntimeConnectionHandler(handler.Handler): return await self.call_action( LangBotToRuntimeAction.RECONCILE_PLUGIN_INSTALLATIONS, request.model_dump(), - timeout=120, + timeout=300, ) async def apply_plugin_installation( diff --git a/tests/unit_tests/plugin/test_handler.py b/tests/unit_tests/plugin/test_handler.py index c0339d3c4..952d59134 100644 --- a/tests/unit_tests/plugin/test_handler.py +++ b/tests/unit_tests/plugin/test_handler.py @@ -9,8 +9,8 @@ from types import SimpleNamespace from unittest.mock import AsyncMock, MagicMock, Mock import pytest -from langbot_plugin.entities.io.actions.enums import PluginToRuntimeAction -from langbot_plugin.entities.io.context import ActionContext, InstallationBinding +from langbot_plugin.entities.io.actions.enums import LangBotToRuntimeAction, PluginToRuntimeAction +from langbot_plugin.entities.io.context import ActionContext, InstallationBinding, PluginInstallationDesiredState def make_handler(app): @@ -67,6 +67,20 @@ def make_handler(app): return runtime_handler +@pytest.mark.asyncio +async def test_reconcile_plugin_installations_allows_cloud_cold_start_to_finish(): + app = SimpleNamespace() + runtime_handler = make_handler(app) + runtime_handler.call_action = AsyncMock(return_value={}) + binding = next(iter(runtime_handler._installation_bindings.values()))[0] + desired = PluginInstallationDesiredState(binding=binding, enabled=True) + + await runtime_handler.reconcile_plugin_installations((desired,)) + + assert runtime_handler.call_action.await_args.args[0] == LangBotToRuntimeAction.RECONCILE_PLUGIN_INSTALLATIONS + assert runtime_handler.call_action.await_args.kwargs['timeout'] == 300 + + class TestHandlerQueryVariables: """Tests for handler query variable logic."""