summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-10-02 14:28:10 -0700
committerNate Sesti <sestinj@gmail.com>2023-10-02 14:28:10 -0700
commit0f86a69e4a83458db2e20e404c26dac2e02355cf (patch)
treec972bc49dd9ea76d02565272e76463577831de77
parente4c1bb4bedbe426d090f4bb2b8819ad935c5b3fb (diff)
downloadsncontinue-0f86a69e4a83458db2e20e404c26dac2e02355cf.tar.gz
sncontinue-0f86a69e4a83458db2e20e404c26dac2e02355cf.tar.bz2
sncontinue-0f86a69e4a83458db2e20e404c26dac2e02355cf.zip
fix: :bug: let context providers work without meilisearch
-rw-r--r--continuedev/src/continuedev/core/context.py47
-rw-r--r--continuedev/src/continuedev/server/main.py2
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: