mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-01-30 16:02:22 +03:00
Use thread lock for JinaV2 call as it sets multiple internal fields while being called
This commit is contained in:
parent
3c5eb1aee5
commit
25b36a1a7a
@ -3,6 +3,7 @@
|
|||||||
import io
|
import io
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import threading
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
@ -53,6 +54,11 @@ class JinaV2Embedding(BaseEmbedding):
|
|||||||
self.tokenizer = None
|
self.tokenizer = None
|
||||||
self.image_processor = None
|
self.image_processor = None
|
||||||
self.runner = None
|
self.runner = None
|
||||||
|
|
||||||
|
# Lock to prevent concurrent calls (text and vision share this instance)
|
||||||
|
self._call_lock = threading.Lock()
|
||||||
|
|
||||||
|
# download the model and tokenizer
|
||||||
files_names = list(self.download_urls.keys()) + [self.tokenizer_file]
|
files_names = list(self.download_urls.keys()) + [self.tokenizer_file]
|
||||||
if not all(
|
if not all(
|
||||||
os.path.exists(os.path.join(self.download_path, n)) for n in files_names
|
os.path.exists(os.path.join(self.download_path, n)) for n in files_names
|
||||||
@ -200,6 +206,9 @@ class JinaV2Embedding(BaseEmbedding):
|
|||||||
def __call__(
|
def __call__(
|
||||||
self, inputs: list[str] | list[Image.Image] | list[str], embedding_type=None
|
self, inputs: list[str] | list[Image.Image] | list[str], embedding_type=None
|
||||||
) -> list[np.ndarray]:
|
) -> list[np.ndarray]:
|
||||||
|
# Lock the entire call to prevent race conditions when text and vision
|
||||||
|
# embeddings are called concurrently from different threads
|
||||||
|
with self._call_lock:
|
||||||
self.embedding_type = embedding_type
|
self.embedding_type = embedding_type
|
||||||
if not self.embedding_type:
|
if not self.embedding_type:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user