From 60a2de3dd48b9c8c5c8d9003977ee37d47ba54ba Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Thu, 25 Sep 2025 19:33:29 +0200 Subject: [PATCH 1/6] chore: update submodules --- submodules/model | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/model b/submodules/model index 765ca08..9d8e09c 160000 --- a/submodules/model +++ b/submodules/model @@ -1 +1 @@ -Subproject commit 765ca0869c7158c7633cdec698ced9422d3c9fcd +Subproject commit 9d8e09c0ab2146265d07f8e209f40dbbc0ccad47 From 2dee11c471beda3bb1d66f43a35ace15b9ecbb23 Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Thu, 25 Sep 2025 19:33:35 +0200 Subject: [PATCH 2/6] perf: add telemetry --- app.py | 23 ++++++++++++++++++++--- start | 7 ++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app.py b/app.py index 9d98f6f..01be380 100644 --- a/app.py +++ b/app.py @@ -1,17 +1,34 @@ -# -*- coding: utf-8 -*- from fastapi import FastAPI, responses, status, Request from typing import Union import torch +import logging +import os from src.util import request_util from src.data import data_type import controller from submodules.model.business_objects import general -from submodules.model import session +from submodules.model import session, telemetry + + +OTLP_GRPC_ENDPOINT = os.getenv("OTLP_GRPC_ENDPOINT", "tempo:4317") + +app_name = "refinery-embedder" +app = FastAPI(title=app_name) + +if telemetry.ENABLE_TELEMETRY: + print("WARNING: Running telemetry.", flush=True) + telemetry.setting_otlp(app, app_name=app_name, endpoint=OTLP_GRPC_ENDPOINT) + app.add_middleware(telemetry.PrometheusMiddleware, app_name=app_name) + app.add_route("/metrics", telemetry.metrics) + + # Filter out /metrics + logging.getLogger("uvicorn.access").addFilter( + lambda record: "GET /metrics" not in record.getMessage() + ) -app = FastAPI() if torch.cuda.is_available(): print( diff --git a/start b/start index e803302..bd4c069 100755 --- a/start +++ b/start @@ -2,11 +2,13 @@ DEBUG_MODE=false DEBUG_PORT=15675 +ENABLE_TELEMETRY=false -while getopts d flag +while getopts dg flag do case "${flag}" in d) DEBUG_MODE=true;; + g) ENABLE_TELEMETRY=true;; esac done @@ -68,11 +70,14 @@ docker run -d --rm \ -e MODEL_PROVIDER=http://refinery-model-provider:80 \ -e WS_NOTIFY_ENDPOINT="http://refinery-websocket:8080" \ -e NEURAL_SEARCH=http://refinery-neural-search:80 \ +-e ENABLE_TELEMETRY=$ENABLE_TELEMETRY \ --mount type=bind,source="$(pwd)"/,target=/app \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$MODEL_DIR":/models \ -v "$INFERENCE_DIR":/inference \ --network dev-setup_default \ +--log-driver=loki \ +--log-opt loki-url="http://$HOST_IP:3100/loki/api/v1/push" \ refinery-embedder-dev $CMD > /dev/null 2>&1 echo -ne '\t\t\t [done]\n' From 21688119dc1fd609fc75740ebd324e1047dbe5da Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Wed, 15 Oct 2025 19:17:12 +0200 Subject: [PATCH 3/6] fix: hanging docker stop --- start | 2 -- 1 file changed, 2 deletions(-) diff --git a/start b/start index bd4c069..c58dd63 100755 --- a/start +++ b/start @@ -76,8 +76,6 @@ docker run -d --rm \ -v "$MODEL_DIR":/models \ -v "$INFERENCE_DIR":/inference \ --network dev-setup_default \ ---log-driver=loki \ ---log-opt loki-url="http://$HOST_IP:3100/loki/api/v1/push" \ refinery-embedder-dev $CMD > /dev/null 2>&1 echo -ne '\t\t\t [done]\n' From 3462632d31e0eb1a651700c9bc9cddeedc328aee Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Tue, 21 Oct 2025 14:29:00 +0200 Subject: [PATCH 4/6] chore: update submodules --- submodules/model | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/model b/submodules/model index 9d8e09c..687078b 160000 --- a/submodules/model +++ b/submodules/model @@ -1 +1 @@ -Subproject commit 9d8e09c0ab2146265d07f8e209f40dbbc0ccad47 +Subproject commit 687078b4b48a86324d968b2116044845aad646b6 From f34c03e757e4a7fae936b460a14e18615060919b Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Tue, 21 Oct 2025 14:29:33 +0200 Subject: [PATCH 5/6] perf: add thread monitoring --- app.py | 1 + controller.py | 6 +++--- src/util/config_handler.py | 4 ++-- src/util/daemon.py | 11 ----------- 4 files changed, 6 insertions(+), 16 deletions(-) delete mode 100644 src/util/daemon.py diff --git a/app.py b/app.py index 01be380..581e7de 100644 --- a/app.py +++ b/app.py @@ -20,6 +20,7 @@ if telemetry.ENABLE_TELEMETRY: print("WARNING: Running telemetry.", flush=True) + telemetry.setting_app_name(app_name) telemetry.setting_otlp(app, app_name=app_name, endpoint=OTLP_GRPC_ENDPOINT) app.add_middleware(telemetry.PrometheusMiddleware, app_name=app_name) app.add_route("/metrics", telemetry.metrics) diff --git a/controller.py b/controller.py index 0da0101..22881fa 100644 --- a/controller.py +++ b/controller.py @@ -25,13 +25,13 @@ PrivatemodeAISentenceEmbedder, ) from src.embedders.classification.reduce import PCASentenceReducer # noqa: F401 -from src.util import daemon, request_util +from src.util import request_util from src.util.decorator import param_throttle from src.util.embedders import get_embedder from src.util.notification import send_project_update, embedding_warning_templates from submodules.s3 import controller as s3 -from submodules.model import enums +from submodules.model import enums, daemon from submodules.model.business_objects import ( attribute, embedding, @@ -120,7 +120,7 @@ def get_docbins( def manage_encoding_thread(project_id: str, embedding_id: str) -> int: - daemon.run(prepare_run, project_id, embedding_id) + daemon.run_without_db_token(prepare_run, project_id, embedding_id) return status.HTTP_200_OK diff --git a/src/util/config_handler.py b/src/util/config_handler.py index f9d1a84..024b3b5 100644 --- a/src/util/config_handler.py +++ b/src/util/config_handler.py @@ -1,7 +1,7 @@ from typing import Dict, Any, Optional, Union import requests import time -from src.util import daemon +from submodules.model import daemon __config = None @@ -25,7 +25,7 @@ def refresh_config(): ) global __config __config = response.json() - daemon.run(invalidate_after, 3600) # one hour + daemon.run_without_db_token(invalidate_after, 3600) # one hour def get_config_value( diff --git a/src/util/daemon.py b/src/util/daemon.py deleted file mode 100644 index d87da0e..0000000 --- a/src/util/daemon.py +++ /dev/null @@ -1,11 +0,0 @@ -import threading -from typing import Callable - - -def run(target: Callable, *args, **kwargs) -> None: - threading.Thread( - target=target, - args=args, - kwargs=kwargs, - daemon=True, - ).start() From 974c2065ac94282f8d76aaf75f6c409fdd8935a7 Mon Sep 17 00:00:00 2001 From: andhreljaKern Date: Tue, 21 Oct 2025 16:10:16 +0200 Subject: [PATCH 6/6] chore(opentelemetry): update submodules --- submodules/model | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/model b/submodules/model index 687078b..fa52e17 160000 --- a/submodules/model +++ b/submodules/model @@ -1 +1 @@ -Subproject commit 687078b4b48a86324d968b2116044845aad646b6 +Subproject commit fa52e1725d0691979895644d63c0b61728ea771b