Skip to content

Commit c3a260a

Browse files
authored
Merge branch 'main' into main
2 parents 0efc3ec + 9ef4410 commit c3a260a

File tree

83 files changed

+968
-231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+968
-231
lines changed

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- 'release/*'
77
pull_request:
88
env:
9-
CORE_REPO_SHA: a434be5f450fdd329bcefb41e84406a001f9534c
9+
CORE_REPO_SHA: 10dc3a8bc031d5b355f62a698094a03eedb2a8ee
1010

1111
jobs:
1212
build:

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python-contrib/compare/v0.18b0...HEAD)
8+
- Updated instrumentations to use `opentelemetry.trace.use_span` instead of `Tracer.use_span()`
9+
([#364](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/364))
10+
11+
### Changed
12+
- Rename `IdsGenerator` to `IdGenerator`
13+
([#350](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/350))
814

915
### Changed
1016
- `opentelemetry-instrumentation-sqlalchemy` Fix multithreading issues in recording spans from SQLAlchemy
@@ -15,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1521
### Added
1622
- `opentelemetry-propagator-ot-trace` Add OT Trace Propagator
1723
([#302](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/302))
24+
- `opentelemetry-instrumentation-logging` Added logging instrumentation to enable log - trace correlation.
25+
([#345](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/345))
1826

1927
### Removed
2028
- Remove `component` span attribute in instrumentations.

CONTRIBUTING.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ information on this and other language SIGs.
66

77
See the [public meeting notes](https://docs.google.com/document/d/1CIMGoIOZ-c3-igzbd6_Pnxx1SjAkjwqoYSUWxPY8XIs/edit)
88
for a summary description of past meetings. To request edit access, join the
9-
meeting or get in touch on [Gitter](https://gitter.im/open-telemetry/opentelemetry-python).
9+
meeting or get in touch on [Slack](https://cloud-native.slack.com/archives/C01PD4HUVBL).
1010

1111
See to the [community membership document](https://github.com/open-telemetry/community/blob/main/community-membership.md)
1212
on how to become a [**Member**](https://github.com/open-telemetry/community/blob/main/community-membership.md#member),
@@ -16,9 +16,9 @@ and [**Maintainer**](https://github.com/open-telemetry/community/blob/main/commu
1616
## Find a Buddy and get Started Quickly!
1717

1818
If you are looking for someone to help you find a starting point and be a resource for your first contribution, join our
19-
Gitter and find a buddy!
19+
Slack and find a buddy!
2020

21-
1. Join [Gitter.im](https://gitter.im) and join our [chat room](https://gitter.im/open-telemetry/opentelemetry-python).
21+
1. Join [Slack](https://slack.cncf.io/) and join our [chat room](https://cloud-native.slack.com/archives/C01PD4HUVBL).
2222
2. Post in the room with an introduction to yourself, what area you are interested in (check issues marked "Help Wanted"),
2323
and say you are looking for a buddy. We will match you with someone who has experience in that area.
2424

docs/index.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ OpenTelemetry-Python-Contrib
44
Complimentary instrumentation and vendor-specific packages for use with the
55
Python `OpenTelemetry <https://opentelemetry.io/>`_ client.
66

7-
.. image:: https://img.shields.io/gitter/room/opentelemetry/opentelemetry-python
8-
:target: https://gitter.im/open-telemetry/opentelemetry-python
9-
:alt: Gitter Chat
7+
.. image:: https://img.shields.io/badge/slack-chat-green.svg
8+
:target: https://cloud-native.slack.com/archives/C01PD4HUVBL
9+
:alt: Slack Chat
1010

1111

1212
**Please note** that this library is currently in _beta_, and shouldn't
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
OpenTelemetry Logging Instrumentation
2+
=====================================
3+
4+
.. automodule:: opentelemetry.instrumentation.logging
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

docs/nitpick-exceptions.ini

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
[default]
22
class_references=
33
; TODO: Understand why sphinx is not able to find this local class
4-
opentelemetry.trace.propagation.textmap.TextMapPropagator
4+
opentelemetry.propagators.textmap.TextMapPropagator
55
; - AwsXRayFormat
6-
opentelemetry.trace.propagation.textmap.DictGetter
6+
opentelemetry.propagators.textmap.DictGetter
77
; API
8-
opentelemetry.trace.propagation.textmap.Getter
8+
opentelemetry.propagators.textmap.Getter
99
; - DatadogFormat
1010
; - AWSXRayFormat
11+
opentelemetry.sdk.trace.id_generator.IdGenerator
12+
; - AwsXRayIdGenerator
1113
TextMapPropagatorT
1214
; - AwsXRayFormat.extract
1315

1416
anys=
1517
; API
16-
opentelemetry.trace.propagation.textmap.TextMapPropagator.fields
18+
opentelemetry.propagators.textmap.TextMapPropagator.fields
1719
; - AWSXRayFormat
1820
TraceId
19-
; - AwsXRayIdsGenerator
21+
; - AwsXRayIdGenerator
2022
TraceIdRatioBased
21-
; - AwsXRayIdsGenerator
23+
; - AwsXRayIdGenerator
2224
; SDK
2325
SpanProcessor
2426
; - DatadogExportSpanProcessor
2527
TracerProvider
26-
; - AwsXRayIdsGenerator
28+
; - AwsXRayIdGenerator
2729
; Instrumentation
2830
BaseInstrumentor
2931
; - instrumentation.*

docs/sdk-extension/aws/aws.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
OpenTelemetry Python - AWS SDK Extension
22
========================================
33

4-
.. automodule:: opentelemetry.sdk.extension.aws.trace.aws_xray_ids_generator
4+
.. automodule:: opentelemetry.sdk.extension.aws.trace.aws_xray_id_generator
55
:members:
66
:undoc-members:
77
:show-inheritance:

exporter/opentelemetry-exporter-datadog/src/opentelemetry/exporter/datadog/propagator.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
from opentelemetry import trace
1818
from opentelemetry.context import Context
1919
from opentelemetry.exporter.datadog import constants
20-
from opentelemetry.trace import get_current_span, set_span_in_context
21-
from opentelemetry.trace.propagation.textmap import (
20+
from opentelemetry.propagators.textmap import (
2221
Getter,
2322
Setter,
2423
TextMapPropagator,
2524
TextMapPropagatorT,
2625
)
26+
from opentelemetry.trace import get_current_span, set_span_in_context
2727

2828

2929
class DatadogFormat(TextMapPropagator):
@@ -73,7 +73,9 @@ def extract(
7373
trace_state=trace.TraceState([(constants.DD_ORIGIN, origin)]),
7474
)
7575

76-
return set_span_in_context(trace.DefaultSpan(span_context), context)
76+
return set_span_in_context(
77+
trace.NonRecordingSpan(span_context), context
78+
)
7779

7880
def inject(
7981
self,
@@ -109,7 +111,7 @@ def fields(self):
109111
"""Returns a set with the fields set in `inject`.
110112
111113
See
112-
`opentelemetry.trace.propagation.textmap.TextMapPropagator.fields`
114+
`opentelemetry.propagators.textmap.TextMapPropagator.fields`
113115
"""
114116
return {
115117
self.TRACE_ID_KEY,

exporter/opentelemetry-exporter-datadog/src/opentelemetry/exporter/datadog/spanprocessor.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from opentelemetry.sdk.trace import Span, SpanProcessor
2222
from opentelemetry.sdk.trace.export import SpanExporter
2323
from opentelemetry.trace import INVALID_TRACE_ID
24-
from opentelemetry.util.providers import time_ns
24+
from opentelemetry.util.time import time_ns
2525

2626
logger = logging.getLogger(__name__)
2727

exporter/opentelemetry-exporter-datadog/tests/test_datadog_format.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
from opentelemetry import trace as trace_api
1919
from opentelemetry.exporter.datadog import constants, propagator
20+
from opentelemetry.propagators.textmap import DictGetter
2021
from opentelemetry.sdk import trace
21-
from opentelemetry.sdk.trace.ids_generator import RandomIdsGenerator
22+
from opentelemetry.sdk.trace.id_generator import RandomIdGenerator
2223
from opentelemetry.trace import get_current_span, set_span_in_context
23-
from opentelemetry.trace.propagation.textmap import DictGetter
2424

2525
FORMAT = propagator.DatadogFormat()
2626

@@ -30,12 +30,12 @@
3030
class TestDatadogFormat(unittest.TestCase):
3131
@classmethod
3232
def setUpClass(cls):
33-
ids_generator = RandomIdsGenerator()
33+
id_generator = RandomIdGenerator()
3434
cls.serialized_trace_id = propagator.format_trace_id(
35-
ids_generator.generate_trace_id()
35+
id_generator.generate_trace_id()
3636
)
3737
cls.serialized_parent_id = propagator.format_span_id(
38-
ids_generator.generate_span_id()
38+
id_generator.generate_span_id()
3939
)
4040
cls.serialized_origin = "origin-service"
4141

@@ -108,7 +108,7 @@ def test_context_propagation(self):
108108
"child",
109109
trace_api.SpanContext(
110110
parent_span_context.trace_id,
111-
RandomIdsGenerator().generate_span_id(),
111+
RandomIdGenerator().generate_span_id(),
112112
is_remote=False,
113113
trace_flags=parent_span_context.trace_flags,
114114
trace_state=parent_span_context.trace_state,
@@ -155,7 +155,7 @@ def test_sampling_priority_auto_reject(self):
155155
"child",
156156
trace_api.SpanContext(
157157
parent_span_context.trace_id,
158-
RandomIdsGenerator().generate_span_id(),
158+
RandomIdGenerator().generate_span_id(),
159159
is_remote=False,
160160
trace_flags=parent_span_context.trace_flags,
161161
trace_state=parent_span_context.trace_state,

instrumentation/opentelemetry-instrumentation-aiohttp-client/README.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ Example
3030
from opentelemetry import trace
3131
from opentelemetry.exporter import jaeger
3232
from opentelemetry.sdk.trace import TracerProvider
33-
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
33+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
3434
3535
36-
_JAEGER_EXPORTER = jaeger.JaegerSpanExporter(
36+
_JAEGER_EXPORTER = jaeger.JaegerExporter(
3737
service_name="example-xxx",
3838
agent_host_name="localhost",
3939
agent_port=6831,
4040
)
4141
4242
_TRACE_PROVIDER = TracerProvider()
43-
_TRACE_PROVIDER.add_span_processor(BatchExportSpanProcessor(_JAEGER_EXPORTER))
43+
_TRACE_PROVIDER.add_span_processor(BatchSpanProcessor(_JAEGER_EXPORTER))
4444
trace.set_tracer_provider(_TRACE_PROVIDER)
4545
4646
AioHttpClientInstrumentor().instrument()

instrumentation/opentelemetry-instrumentation-aiohttp-client/tests/test_aiohttp_client_integration.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
AioHttpClientInstrumentor,
3232
)
3333
from opentelemetry.test.test_base import TestBase
34-
from opentelemetry.trace.status import StatusCode
34+
from opentelemetry.trace import StatusCode
3535

3636

3737
def run_with_test_server(

instrumentation/opentelemetry-instrumentation-aiopg/src/opentelemetry/instrumentation/aiopg/aiopg_integration.py

+1-8
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
DatabaseApiIntegration,
99
)
1010
from opentelemetry.trace import SpanKind
11-
from opentelemetry.trace.status import Status, StatusCode
1211

1312

1413
# pylint: disable=abstract-method
@@ -117,13 +116,7 @@ async def traced_execution(
117116
name, kind=SpanKind.CLIENT
118117
) as span:
119118
self._populate_span(span, cursor, *args)
120-
try:
121-
result = await query_method(*args, **kwargs)
122-
return result
123-
except Exception as ex: # pylint: disable=broad-except
124-
if span.is_recording():
125-
span.set_status(Status(StatusCode.ERROR, str(ex)))
126-
raise ex
119+
return await query_method(*args, **kwargs)
127120

128121

129122
def get_traced_cursor_proxy(cursor, db_api_integration, *args, **kwargs):

instrumentation/opentelemetry-instrumentation-aiopg/tests/test_aiopg_integration.py

+3-9
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,7 @@ def test_span_succeeded(self):
268268
self.assertEqual(span.attributes["db.user"], "testuser")
269269
self.assertEqual(span.attributes["net.peer.name"], "testhost")
270270
self.assertEqual(span.attributes["net.peer.port"], 123)
271-
self.assertIs(
272-
span.status.status_code, trace_api.status.StatusCode.UNSET
273-
)
271+
self.assertIs(span.status.status_code, trace_api.StatusCode.UNSET)
274272

275273
def test_span_not_recording(self):
276274
connection_props = {
@@ -289,8 +287,6 @@ def test_span_not_recording(self):
289287
mock_span = mock.Mock()
290288
mock_span.is_recording.return_value = False
291289
mock_tracer.start_span.return_value = mock_span
292-
mock_tracer.use_span.return_value.__enter__ = mock_span
293-
mock_tracer.use_span.return_value.__exit__ = True
294290
db_integration = AiopgIntegration(
295291
mock_tracer, "testcomponent", connection_attributes
296292
)
@@ -319,10 +315,8 @@ def test_span_failed(self):
319315
self.assertEqual(len(spans_list), 1)
320316
span = spans_list[0]
321317
self.assertEqual(span.attributes["db.statement"], "Test query")
322-
self.assertIs(
323-
span.status.status_code, trace_api.status.StatusCode.ERROR
324-
)
325-
self.assertEqual(span.status.description, "Test Exception")
318+
self.assertIs(span.status.status_code, trace_api.StatusCode.ERROR)
319+
self.assertEqual(span.status.description, "Exception: Test Exception")
326320

327321
def test_executemany(self):
328322
db_integration = AiopgIntegration(self.tracer, "testcomponent")

instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from opentelemetry.instrumentation.asgi.version import __version__ # noqa
3030
from opentelemetry.instrumentation.utils import http_status_to_status_code
3131
from opentelemetry.propagate import extract
32-
from opentelemetry.trace.propagation.textmap import DictGetter
32+
from opentelemetry.propagators.textmap import DictGetter
3333
from opentelemetry.trace.status import Status, StatusCode
3434

3535

instrumentation/opentelemetry-instrumentation-boto/tests/test_boto_instrumentation.py

-2
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ def test_not_recording(self):
8282
mock_span = Mock()
8383
mock_span.is_recording.return_value = False
8484
mock_tracer.start_span.return_value = mock_span
85-
mock_tracer.use_span.return_value.__enter__ = mock_span
86-
mock_tracer.use_span.return_value.__exit__ = True
8785
with patch("opentelemetry.trace.get_tracer") as tracer:
8886
tracer.return_value = mock_tracer
8987
ec2 = boto.ec2.connect_to_region("us-west-2")

instrumentation/opentelemetry-instrumentation-botocore/tests/test_botocore_instrumentation.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@ def test_not_recording(self):
8181
mock_span = Mock()
8282
mock_span.is_recording.return_value = False
8383
mock_tracer.start_span.return_value = mock_span
84-
mock_tracer.use_span.return_value.__enter__ = mock_span
85-
mock_tracer.use_span.return_value.__exit__ = True
8684
with patch("opentelemetry.trace.get_tracer") as tracer:
8785
tracer.return_value = mock_tracer
8886
ec2 = self.session.create_client("ec2", region_name="us-west-2")
@@ -138,7 +136,7 @@ def test_s3_client(self):
138136
},
139137
)
140138
self.assertIs(
141-
span.status.status_code, trace_api.status.StatusCode.ERROR,
139+
span.status.status_code, trace_api.StatusCode.ERROR,
142140
)
143141

144142
# Comment test for issue 1088

instrumentation/opentelemetry-instrumentation-celery/README.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Usage
3131
3232
from opentelemetry import trace
3333
from opentelemetry.sdk.trace import TracerProvider
34-
from opentelemetry.sdk.trace.export import BatchExportSpanProcessor
34+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
3535
from opentelemetry.instrumentation.celery import CeleryInstrumentor
3636
3737
from celery import Celery
@@ -40,7 +40,7 @@ Usage
4040
@worker_process_init.connect(weak=False)
4141
def init_celery_tracing(*args, **kwargs):
4242
trace.set_tracer_provider(TracerProvider())
43-
span_processor = BatchExportSpanProcessor(ConsoleSpanExporter())
43+
span_processor = BatchSpanProcessor(ConsoleSpanExporter())
4444
trace.get_tracer_provider().add_span_processor(span_processor)
4545
CeleryInstrumentor().instrument()
4646
@@ -58,7 +58,7 @@ Setting up tracing
5858

5959
When tracing a celery worker process, tracing and instrumention both must be initialized after the celery worker
6060
process is initialized. This is required for any tracing components that might use threading to work correctly
61-
such as the BatchExportSpanProcessor. Celery provides a signal called ``worker_process_init`` that can be used to
61+
such as the BatchSpanProcessor. Celery provides a signal called ``worker_process_init`` that can be used to
6262
accomplish this as shown in the example above.
6363

6464
References

0 commit comments

Comments
 (0)