diff options
Diffstat (limited to 'continuedev')
| -rw-r--r-- | continuedev/src/continuedev/core/context.py | 47 | ||||
| -rw-r--r-- | continuedev/src/continuedev/server/main.py | 2 | 
2 files changed, 28 insertions, 21 deletions
| diff --git a/continuedev/src/continuedev/core/context.py b/continuedev/src/continuedev/core/context.py index d374dd02..dfc8d449 100644 --- a/continuedev/src/continuedev/core/context.py +++ b/continuedev/src/continuedev/core/context.py @@ -11,9 +11,11 @@ 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 ( +    check_meilisearch_running,      get_meilisearch_url,      poll_meilisearch_running,      restart_meilisearch, +    start_meilisearch,  )  from .main import (      ChatMessage, @@ -255,33 +257,38 @@ class ContextManager:          """          # Use only non-meilisearch-dependent providers until it is loaded          self.context_providers = { -            provider.title: provider -            for provider in context_providers -            if provider.title == "code" +            provider.title: provider for provider in context_providers          }          self.provider_titles = {provider.title for provider in context_providers} +        for provider in context_providers: +            await provider.start( +                sdk, +                ContextManager.delete_documents, +                ContextManager.update_documents, +            ) + +        async def on_err(e): +            logger.warning(f"Error loading meilisearch index: {e}") +          # Start MeiliSearch in the background without blocking -        async def start_meilisearch(context_providers): -            try: -                await asyncio.wait_for(poll_meilisearch_running(), timeout=20) -                self.context_providers = { -                    prov.title: prov for prov in context_providers -                } -                for provider in context_providers: -                    await provider.start( -                        sdk, -                        ContextManager.delete_documents, -                        ContextManager.update_documents, +        async def load_index(context_providers): +            running = await check_meilisearch_running() +            if not running: +                await start_meilisearch() +                try: +                    await asyncio.wait_for(poll_meilisearch_running(), timeout=20) +                except asyncio.TimeoutError: +                    logger.warning( +                        "Meilisearch did not start in less than 20 seconds. Stopping polling."                      ) +                    return -                logger.debug("Loading Meilisearch index...") -                await self.load_index(sdk.ide.workspace_directory) -                logger.debug("Loaded Meilisearch index") -            except asyncio.TimeoutError: -                logger.warning("Meilisearch is not running.") +            logger.debug("Loading Meilisearch index...") +            await self.load_index(sdk.ide.workspace_directory) +            logger.debug("Loaded Meilisearch index") -        create_async_task(start_meilisearch(context_providers)) +        create_async_task(load_index(context_providers), on_err)      @staticmethod      async def update_documents(context_items: List[ContextItem], workspace_dir: str): diff --git a/continuedev/src/continuedev/server/main.py b/continuedev/src/continuedev/server/main.py index 8e0a3ecf..c5540d7d 100644 --- a/continuedev/src/continuedev/server/main.py +++ b/continuedev/src/continuedev/server/main.py @@ -21,7 +21,7 @@ meilisearch_url_global = None  @asynccontextmanager  async def lifespan(app: FastAPI): -    def on_err(e): +    async def on_err(e):          logger.warning(f"Error starting MeiliSearch: {e}")      try: | 
