Skip to content

Commit 2d6150e

Browse files
authored
Merge pull request #256 from DevanshuNEU/refactor/consolidate-observability
refactor: consolidate observability -- merge sentry.py + performance_metrics.py (OPE-87)
2 parents 89375c1 + d6d88a0 commit 2d6150e

10 files changed

Lines changed: 225 additions & 322 deletions

File tree

backend/config/startup_checks.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
("COHERE_API_KEY", "Cohere API key for reranking", "Search reranking disabled"),
2424
("VOYAGE_API_KEY", "Voyage AI key for code embeddings", "Using OpenAI embeddings"),
2525
("SENTRY_DSN", "Sentry DSN for error tracking", "Error tracking disabled"),
26+
("SENTRY_SEND_PII", "Send user emails to Sentry", "PII disabled (privacy safe)"),
27+
("SENTRY_INCLUDE_LOCAL_VARS", "Include local vars in Sentry traces", "Local vars excluded"),
2628
("REDIS_HOST", "Redis host for caching", "Using default localhost"),
2729
]
2830

backend/dependencies.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
from services.cache import CacheService
1010
from services.dependency_analyzer import DependencyAnalyzer
1111
from services.style_analyzer import StyleAnalyzer
12-
from services.performance_metrics import PerformanceMetrics
1312
from services.dna_extractor import DNAExtractor
1413
from services.rate_limiter import RateLimiter, APIKeyManager
1514
from services.supabase_service import get_supabase_service
1615
from services.input_validator import InputValidator, CostController
1716
from services.user_limits import init_user_limits_service, get_user_limits_service
1817
from services.repo_validator import get_repo_validator
18+
from services.observability import metrics
1919

2020
# Service instances (singleton pattern)
2121
indexer = OptimizedCodeIndexer()
@@ -24,7 +24,6 @@
2424
dependency_analyzer = DependencyAnalyzer()
2525
style_analyzer = StyleAnalyzer()
2626
dna_extractor = DNAExtractor()
27-
metrics = PerformanceMetrics()
2827

2928
# Rate limiting and API key management
3029
rate_limiter = RateLimiter(redis_client=cache.redis if cache.redis else None)

backend/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import os
1616

1717
# Initialize Sentry FIRST (before other imports to catch all errors)
18-
from services.sentry import init_sentry
18+
from services.observability import init_sentry
1919
init_sentry()
2020

2121
# Import API config (single source of truth for versioning)
@@ -146,7 +146,7 @@ async def generic_exception_handler(request: Request, exc: Exception):
146146
Catch-all handler for unhandled exceptions.
147147
Captures to Sentry and returns 500.
148148
"""
149-
from services.sentry import capture_http_exception
149+
from services.observability import capture_http_exception
150150
capture_http_exception(request, exc, 500)
151151

152152
return JSONResponse(

backend/middleware/auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,15 @@ def _authenticate(token: str) -> AuthContext:
117117
ctx = _validate_jwt(token)
118118
if ctx:
119119
# Set Sentry user context for error tracking
120-
from services.sentry import set_user_context
120+
from services.observability import set_user_context
121121
set_user_context(user_id=ctx.user_id, email=ctx.email)
122122
return ctx
123123

124124
# Try API key
125125
ctx = _validate_api_key(token)
126126
if ctx:
127127
# Set Sentry user context for error tracking
128-
from services.sentry import set_user_context
128+
from services.observability import set_user_context
129129
set_user_context(user_id=ctx.user_id or ctx.api_key_name)
130130
return ctx
131131

0 commit comments

Comments
 (0)