Skip to content

Commit 54ba3b9

Browse files
committed
feat: add trace tags
1 parent e5a1fc2 commit 54ba3b9

File tree

6 files changed

+47
-3
lines changed

6 files changed

+47
-3
lines changed

airbyte_cdk/manifest_server/dependencies/__init__.py

Whitespace-only changes.
File renamed without changes.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"""
2+
FastAPI dependencies for the Manifest Server.
3+
4+
This module contains reusable FastAPI dependencies that can be used across
5+
different routers in the manifest server.
6+
"""
7+
8+
import logging
9+
from typing import Optional
10+
11+
import ddtrace
12+
from fastapi import Header
13+
14+
logger = logging.getLogger(__name__)
15+
16+
17+
def apply_trace_tags(
18+
workspace_id: Optional[str] = Header(None, alias="x-workspace-id"),
19+
project_id: Optional[str] = Header(None, alias="x-project-id"),
20+
) -> None:
21+
"""FastAPI dependency to apply trace tags from headers to the current span."""
22+
if not workspace_id and not project_id:
23+
return
24+
25+
# Log the trace IDs for observability
26+
log_parts = []
27+
if workspace_id:
28+
log_parts.append(f"workspace_id={workspace_id}")
29+
if project_id:
30+
log_parts.append(f"project_id={project_id}")
31+
32+
if log_parts:
33+
logger.info(f"Processing request with trace tags: {', '.join(log_parts)}")
34+
35+
try:
36+
span = ddtrace.tracer.current_span()
37+
if span:
38+
if workspace_id:
39+
span.set_tag("workspace_id", workspace_id)
40+
if project_id:
41+
span.set_tag("project_id", project_id)
42+
except Exception:
43+
# Silently ignore any ddtrace-related errors (e.g. if ddtrace.auto wasn't run)
44+
pass

airbyte_cdk/manifest_server/routers/manifest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
StreamReadResponse,
2828
StreamTestReadRequest,
2929
)
30-
from ..auth import verify_jwt_token
3130
from ..command_processor.processor import ManifestCommandProcessor
3231
from ..command_processor.utils import build_catalog, build_source
32+
from ..dependencies import apply_trace_tags, verify_jwt_token
3333

3434

3535
def safe_build_source(
@@ -59,7 +59,7 @@ def safe_build_source(
5959
router = APIRouter(
6060
prefix="/manifest",
6161
tags=["manifest"],
62-
dependencies=[Depends(verify_jwt_token)],
62+
dependencies=[Depends(verify_jwt_token), Depends(apply_trace_tags)],
6363
)
6464

6565

unit_tests/manifest_server/dependencies/__init__.py

Whitespace-only changes.

unit_tests/manifest_server/test_auth.py renamed to unit_tests/manifest_server/dependencies/test_auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from fastapi import HTTPException
88
from fastapi.security import HTTPAuthorizationCredentials
99

10-
from airbyte_cdk.manifest_server.auth import verify_jwt_token
10+
from airbyte_cdk.manifest_server.dependencies import verify_jwt_token
1111

1212

1313
class TestVerifyJwtToken:

0 commit comments

Comments
 (0)