|
31 | 31 | from ddtrace.debugging._probe.model import FunctionProbe
|
32 | 32 | from ddtrace.debugging._probe.model import LineLocationMixin
|
33 | 33 | from ddtrace.debugging._probe.model import LineProbe
|
34 |
| -from ddtrace.debugging._probe.model import LogFunctionProbe |
35 |
| -from ddtrace.debugging._probe.model import LogLineProbe |
36 |
| -from ddtrace.debugging._probe.model import MetricFunctionProbe |
37 |
| -from ddtrace.debugging._probe.model import MetricLineProbe |
38 | 34 | from ddtrace.debugging._probe.model import Probe
|
39 |
| -from ddtrace.debugging._probe.model import SpanDecorationFunctionProbe |
40 |
| -from ddtrace.debugging._probe.model import SpanDecorationLineProbe |
41 |
| -from ddtrace.debugging._probe.model import SpanFunctionProbe |
42 | 35 | from ddtrace.debugging._probe.registry import ProbeRegistry
|
43 | 36 | from ddtrace.debugging._probe.remoteconfig import ProbePollerEvent
|
44 | 37 | from ddtrace.debugging._probe.remoteconfig import ProbePollerEventType
|
45 | 38 | from ddtrace.debugging._probe.remoteconfig import ProbeRCAdapter
|
46 | 39 | from ddtrace.debugging._probe.status import ProbeStatusLogger
|
47 | 40 | from ddtrace.debugging._signal.collector import SignalCollector
|
48 |
| -from ddtrace.debugging._signal.metric_sample import MetricSample |
49 | 41 | from ddtrace.debugging._signal.model import Signal
|
50 | 42 | from ddtrace.debugging._signal.model import SignalState
|
51 |
| -from ddtrace.debugging._signal.snapshot import Snapshot |
52 |
| -from ddtrace.debugging._signal.tracing import DynamicSpan |
53 |
| -from ddtrace.debugging._signal.tracing import SpanDecoration |
54 | 43 | from ddtrace.debugging._uploader import LogsIntakeUploaderV1
|
55 | 44 | from ddtrace.debugging._uploader import UploaderProduct
|
56 | 45 | from ddtrace.internal import compat
|
|
62 | 51 | from ddtrace.internal.module import register_post_run_module_hook
|
63 | 52 | from ddtrace.internal.module import unregister_post_run_module_hook
|
64 | 53 | from ddtrace.internal.rate_limiter import BudgetRateLimiterWithJitter as RateLimiter
|
65 |
| -from ddtrace.internal.rate_limiter import RateLimitExceeded |
66 | 54 | from ddtrace.internal.remoteconfig.worker import remoteconfig_poller
|
67 | 55 | from ddtrace.internal.service import Service
|
68 | 56 | from ddtrace.internal.wrapping.context import WrappingContext
|
@@ -190,35 +178,15 @@ def _open_signals(self) -> None:
|
190 | 178 | # for each probe.
|
191 | 179 | trace_context = self._tracer.current_trace_context()
|
192 | 180 |
|
193 |
| - if isinstance(probe, MetricFunctionProbe): |
194 |
| - signal = MetricSample( |
195 |
| - probe=probe, |
| 181 | + try: |
| 182 | + signal = Signal.from_probe( |
| 183 | + probe, |
196 | 184 | frame=frame,
|
197 | 185 | thread=thread,
|
198 | 186 | trace_context=trace_context,
|
199 | 187 | meter=self._probe_meter,
|
200 | 188 | )
|
201 |
| - elif isinstance(probe, LogFunctionProbe): |
202 |
| - signal = Snapshot( |
203 |
| - probe=probe, |
204 |
| - frame=frame, |
205 |
| - thread=thread, |
206 |
| - trace_context=trace_context, |
207 |
| - ) |
208 |
| - elif isinstance(probe, SpanFunctionProbe): |
209 |
| - signal = DynamicSpan( |
210 |
| - probe=probe, |
211 |
| - frame=frame, |
212 |
| - thread=thread, |
213 |
| - trace_context=trace_context, |
214 |
| - ) |
215 |
| - elif isinstance(probe, SpanDecorationFunctionProbe): |
216 |
| - signal = SpanDecoration( |
217 |
| - probe=probe, |
218 |
| - frame=frame, |
219 |
| - thread=thread, |
220 |
| - ) |
221 |
| - else: |
| 189 | + except TypeError: |
222 | 190 | log.error("Unsupported probe type: %s", type(probe))
|
223 | 191 | continue
|
224 | 192 |
|
@@ -385,39 +353,19 @@ def _dd_debugger_hook(self, probe: Probe) -> None:
|
385 | 353 | instrumented code is running.
|
386 | 354 | """
|
387 | 355 | try:
|
388 |
| - actual_frame = sys._getframe(1) |
389 |
| - signal: Optional[Signal] = None |
390 |
| - if isinstance(probe, MetricLineProbe): |
391 |
| - signal = MetricSample( |
392 |
| - probe=probe, |
393 |
| - frame=actual_frame, |
| 356 | + try: |
| 357 | + signal = Signal.from_probe( |
| 358 | + probe, |
| 359 | + frame=sys._getframe(1), |
394 | 360 | thread=threading.current_thread(),
|
395 | 361 | trace_context=self._tracer.current_trace_context(),
|
396 | 362 | meter=self._probe_meter,
|
397 | 363 | )
|
398 |
| - elif isinstance(probe, LogLineProbe): |
399 |
| - if probe.take_snapshot: |
400 |
| - # TODO: Global limit evaluated before probe conditions |
401 |
| - if self._global_rate_limiter.limit() is RateLimitExceeded: |
402 |
| - return |
403 |
| - |
404 |
| - signal = Snapshot( |
405 |
| - probe=probe, |
406 |
| - frame=actual_frame, |
407 |
| - thread=threading.current_thread(), |
408 |
| - trace_context=self._tracer.current_trace_context(), |
409 |
| - ) |
410 |
| - elif isinstance(probe, SpanDecorationLineProbe): |
411 |
| - signal = SpanDecoration( |
412 |
| - probe=probe, |
413 |
| - frame=actual_frame, |
414 |
| - thread=threading.current_thread(), |
415 |
| - ) |
416 |
| - else: |
417 |
| - log.error("Unsupported probe type: %r", type(probe)) |
| 364 | + except TypeError: |
| 365 | + log.error("Unsupported probe type: %r", type(probe), exc_info=True) |
418 | 366 | return
|
419 | 367 |
|
420 |
| - signal.do_line() |
| 368 | + signal.do_line(self._global_rate_limiter if probe.is_global_rate_limited() else None) |
421 | 369 |
|
422 | 370 | if signal.state is SignalState.DONE:
|
423 | 371 | self._probe_registry.set_emitting(probe)
|
|
0 commit comments