1
1
from __future__ import annotations
2
2
3
+ import logging
3
4
from numbers import Number
4
5
from traceback import StackSummary
5
6
from typing import Any , Generator , List , Optional , Sequence
8
9
9
10
from .base import BaseProvider , BaseSegment
10
11
12
+ logger = logging .getLogger (__name__ )
13
+
11
14
12
15
class DDSpan (BaseSegment ):
13
16
def __init__ (self , dd_span = ddtrace .Span ):
14
17
self .dd_span = dd_span
15
18
16
19
def close (self , end_time : int | None = None ):
20
+ print ("close is called" )
17
21
self .dd_span .finish (finish_time = float (end_time ))
18
22
19
23
def add_subsegment (self , subsegment : Any ):
@@ -31,9 +35,22 @@ def put_metadata(self, key: str, value: Any, namespace: str = "default") -> None
31
35
def add_exception (self , exception : BaseException , stack : List [StackSummary ], remote : bool = False ):
32
36
self .dd_span .set_exc_info (exc_type = exception , exc_val = exception , exc_tb = stack )
33
37
38
+ def __enter__ (self ):
39
+ print ("entered" )
40
+ return self
41
+
42
+ def __exit__ (self , exc_type , exc_val , exc_tb ):
43
+ try :
44
+ if exc_type :
45
+ self .dd_span .set_exc_info (exc_type , exc_val , exc_tb )
46
+ print ("exited" )
47
+ self .close ()
48
+ except Exception :
49
+ logger .exception ("error closing trace" )
50
+
34
51
35
52
class DDTraceProvider (BaseProvider ):
36
- def __init__ (self , dd_tracer = ddtrace .Tracer ):
53
+ def __init__ (self , dd_tracer : ddtrace .Tracer ):
37
54
self .dd_tracer = dd_tracer
38
55
39
56
def in_subsegment (
@@ -42,18 +59,15 @@ def in_subsegment(
42
59
service : Optional [str ] = None ,
43
60
resource : Optional [str ] = None ,
44
61
span_type : Optional [str ] = None ,
45
- span_api : str = ddtrace .SPAN_API_DATADOG ,
46
62
** kwargs ,
47
63
) -> Generator [BaseSegment , None , None ]:
48
- return self .dd_tracer .start_span (
64
+ dd_span = self .dd_tracer .trace (
49
65
name ,
50
- child_of = self .dd_tracer .context_provider .active (),
51
66
service = service ,
52
67
resource = resource ,
53
68
span_type = span_type ,
54
- activate = True ,
55
- span_api = span_api ,
56
69
)
70
+ return DDSpan (dd_span = dd_span )
57
71
58
72
in_subsegment_async = in_subsegment
59
73
0 commit comments