summaryrefslogtreecommitdiff
path: root/continuedev
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-09-06 19:40:22 -0700
committerNate Sesti <sestinj@gmail.com>2023-09-06 19:40:22 -0700
commitf3a5e0f4197b5d768c873ccdb70eb99812d66efe (patch)
tree9f20d065d8229c86d1101191e8162f5d54336e32 /continuedev
parent41b3233693c34cd81c872a1e7279721b5f640d60 (diff)
parentbd38794a02d46b70ee018bdd6cd11e3c207465fc (diff)
downloadsncontinue-f3a5e0f4197b5d768c873ccdb70eb99812d66efe.tar.gz
sncontinue-f3a5e0f4197b5d768c873ccdb70eb99812d66efe.tar.bz2
sncontinue-f3a5e0f4197b5d768c873ccdb70eb99812d66efe.zip
Merge branch 'main' of https://github.com/continuedev/continue
Diffstat (limited to 'continuedev')
-rw-r--r--continuedev/pyproject.toml2
-rw-r--r--continuedev/src/continuedev/core/context.py11
-rw-r--r--continuedev/src/continuedev/server/meilisearch_server.py21
3 files changed, 30 insertions, 4 deletions
diff --git a/continuedev/pyproject.toml b/continuedev/pyproject.toml
index 101c233f..c9c42902 100644
--- a/continuedev/pyproject.toml
+++ b/continuedev/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "continuedev"
-version = "0.1.3"
+version = "0.1.4"
description = ""
authors = ["Nate Sesti <sestinj@gmail.com>"]
readme = "README.md"
diff --git a/continuedev/src/continuedev/core/context.py b/continuedev/src/continuedev/core/context.py
index 17e6e85c..125ddc23 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=20,
)
- 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
@@ -327,6 +327,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