diff options
Diffstat (limited to 'continuedev/src')
| -rw-r--r-- | continuedev/src/continuedev/core/context.py | 11 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/meilisearch_server.py | 21 | 
2 files changed, 29 insertions, 3 deletions
| diff --git a/continuedev/src/continuedev/core/context.py b/continuedev/src/continuedev/core/context.py index 47763d8b..e5009a14 100644 --- a/continuedev/src/continuedev/core/context.py +++ b/continuedev/src/continuedev/core/context.py @@ -10,7 +10,7 @@ from ..libs.util.create_async_task import create_async_task  from ..libs.util.devdata import dev_data_logger  from ..libs.util.logging import logger  from ..libs.util.telemetry import posthog_logger -from ..server.meilisearch_server import poll_meilisearch_running +from ..server.meilisearch_server import poll_meilisearch_running, restart_meilisearch  from .main import ChatMessage, ContextItem, ContextItemDescription, ContextItemId @@ -269,7 +269,7 @@ class ContextManager:                  timeout=5,              ) -    async def load_index(self, workspace_dir: str): +    async def load_index(self, workspace_dir: str, should_retry: bool = True):          try:              async with Client("http://localhost:7700") as search_client:                  # First, create the index if it doesn't exist @@ -309,6 +309,13 @@ class ContextManager:                      )          except Exception as e:              logger.debug(f"Error loading meilisearch index: {e}") +            if should_retry: +                await restart_meilisearch() +                try: +                    asyncio.wait_for(await poll_meilisearch_running(), timeout=20) +                except asyncio.TimeoutError: +                    logger.warning("Meilisearch did not restart in less than 20 seconds. Stopping polling.") +                await self.load_index(workspace_dir, False)      async def select_context_item(self, id: str, query: str):          """ diff --git a/continuedev/src/continuedev/server/meilisearch_server.py b/continuedev/src/continuedev/server/meilisearch_server.py index 6aae8cc5..f3734470 100644 --- a/continuedev/src/continuedev/server/meilisearch_server.py +++ b/continuedev/src/continuedev/server/meilisearch_server.py @@ -77,12 +77,13 @@ async def ensure_meilisearch_installed() -> bool:              except:                  pass              existing_paths.remove(meilisearchPath) +             +            await download_meilisearch()          # Clear the existing directories          for p in existing_paths:              shutil.rmtree(p, ignore_errors=True) -        await download_meilisearch()          return False @@ -155,3 +156,21 @@ def stop_meilisearch():          meilisearch_process.terminate()          meilisearch_process.wait()          meilisearch_process = None + + +import psutil + +def kill_proc(port): +    for proc in psutil.process_iter(): +        try: +            for conns in proc.connections(kind='inet'): +                if conns.laddr.port == port: +                    proc.send_signal(psutil.signal.SIGTERM) # or SIGKILL +        except psutil.AccessDenied: +            logger.warning(f"Failed to kill process on port {port}") + + +async def restart_meilisearch(): +    stop_meilisearch() +    kill_proc(7700) +    await start_meilisearch()
\ No newline at end of file | 
