Skip to content

Commit 75ed42b

Browse files
feat: instrument repositories
* add SQLAlchemyInstrumentor * load tagging details and identifier eagerly when getting TaggingResult from DB * increase batch_size for similarity_pairs Change-Id: I4720c109dee14c0d019f1dbba422d6c5cdf0a60b
1 parent dc02eaf commit 75ed42b

4 files changed

Lines changed: 18 additions & 4 deletions

File tree

libs/media_similarity/media_similarity/media_similarity_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ def _calculate_cluster_assignments(
576576
if final_clusters.get(media_1) == final_clusters.get(media_2):
577577
trimmed_similar_media.add(similar_medium)
578578

579-
trim_ratio = ((1 - len(trimmed_similar_media) / len(similar_media)),)
579+
trim_ratio = 1 - len(trimmed_similar_media) / len(similar_media)
580580
logger.info('trimmed graph edges by %.2f', trim_ratio)
581581
span.set_attribute('trim_ratio', trim_ratio)
582582
return ClusteringResults(

libs/media_similarity/media_similarity/repositories.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@
2222

2323
import sqlalchemy
2424
from media_tagging.repositories import SqlAlchemyRepository
25+
from opentelemetry import trace
2526
from sqlalchemy.orm import declarative_base
2627
from typing_extensions import override
2728

2829
from media_similarity import media_pair
30+
from media_similarity.telemetry import tracer
2931

30-
DEFAULT_CHUNK_SIZE: Final[int] = 100
32+
DEFAULT_CHUNK_SIZE: Final[int] = 10_000
3133

3234

3335
def _batched(iterable: Iterable[Any], chunk_size: int):
@@ -39,6 +41,7 @@ def _batched(iterable: Iterable[Any], chunk_size: int):
3941
class BaseSimilarityPairsRepository(abc.ABC):
4042
"""Interface for defining repositories."""
4143

44+
@tracer.start_as_current_span('get_pairs')
4245
def get(
4346
self, pairs: str | Sequence[str], tagger: str | None = None
4447
) -> list[media_pair.SimilarityPair]:
@@ -55,14 +58,17 @@ def get(
5558
return list(itertools.chain.from_iterable(results))
5659
return self._get(pairs, tagger)
5760

61+
@tracer.start_as_current_span('add_pairs')
5862
def add(
5963
self,
6064
pairs: media_pair.SimilarityPair | Sequence[media_pair.SimilarityPair],
6165
) -> None:
6266
"""Specifies add operations."""
67+
span = trace.get_current_span()
6368
if not isinstance(pairs, MutableSequence):
6469
pairs = [pairs]
6570
self._add(pairs)
71+
span.set_attribute('pairs_added', len(pairs))
6672

6773
@abc.abstractmethod
6874
def _get(

libs/media_tagging/media_tagging/repositories.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
from collections.abc import Sequence
2424

2525
import sqlalchemy
26-
from sqlalchemy.orm import declarative_base, relationship
26+
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
27+
from sqlalchemy.orm import declarative_base, joinedload, relationship
2728
from sqlalchemy.pool import StaticPool
2829
from typing_extensions import override
2930

@@ -188,6 +189,7 @@ def engine(self) -> sqlalchemy.engine.Engine:
188189
)
189190
else:
190191
self._engine = sqlalchemy.create_engine(self.db_url)
192+
SQLAlchemyInstrumentor().instrument(engine=self._engine)
191193
return self._engine
192194

193195

@@ -242,7 +244,12 @@ def get(
242244
TaggingResults.tagging_details_id == tagging_details_hash
243245
)
244246

245-
if not (results := query.all()):
247+
if not (
248+
results := query.options(
249+
joinedload(TaggingResults.identifier),
250+
joinedload(TaggingResults.tagging_details),
251+
).all()
252+
):
246253
return []
247254
tagging_results = []
248255
for res in results:

libs/media_tagging/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ dependencies = [
1919
"opentelemetry-api",
2020
"opentelemetry-sdk",
2121
"opentelemetry-exporter-otlp",
22+
"opentelemetry-instrumentation-sqlalchemy",
2223
"google-api-python-client",
2324
]
2425
authors = [

0 commit comments

Comments
 (0)