mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
Change status codes from grpc status codes, remove setting status in instrumentations except on ERROR (#1282)
This commit is contained in:
@ -64,7 +64,7 @@ from opentelemetry.instrumentation.elasticsearch.version import __version__
|
|||||||
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
||||||
from opentelemetry.instrumentation.utils import unwrap
|
from opentelemetry.instrumentation.utils import unwrap
|
||||||
from opentelemetry.trace import SpanKind, get_tracer
|
from opentelemetry.trace import SpanKind, get_tracer
|
||||||
from opentelemetry.trace.status import Status, StatusCanonicalCode
|
from opentelemetry.trace.status import Status, StatusCode
|
||||||
|
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
@ -156,11 +156,7 @@ def _wrap_perform_request(tracer, span_name_prefix):
|
|||||||
return rv
|
return rv
|
||||||
except Exception as ex: # pylint: disable=broad-except
|
except Exception as ex: # pylint: disable=broad-except
|
||||||
if span.is_recording():
|
if span.is_recording():
|
||||||
if isinstance(ex, elasticsearch.exceptions.NotFoundError):
|
span.set_status(Status(StatusCode.ERROR, str(ex)))
|
||||||
status = StatusCanonicalCode.NOT_FOUND
|
|
||||||
else:
|
|
||||||
status = StatusCanonicalCode.UNKNOWN
|
|
||||||
span.set_status(Status(status, str(ex)))
|
|
||||||
raise ex
|
raise ex
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
@ -27,7 +27,7 @@ from opentelemetry.instrumentation.elasticsearch import (
|
|||||||
ElasticsearchInstrumentor,
|
ElasticsearchInstrumentor,
|
||||||
)
|
)
|
||||||
from opentelemetry.test.test_base import TestBase
|
from opentelemetry.test.test_base import TestBase
|
||||||
from opentelemetry.trace.status import StatusCanonicalCode
|
from opentelemetry.trace.status import StatusCode
|
||||||
|
|
||||||
major_version = elasticsearch.VERSION[0]
|
major_version = elasticsearch.VERSION[0]
|
||||||
|
|
||||||
@ -153,14 +153,14 @@ class TestElasticsearchIntegration(TestBase):
|
|||||||
def test_trace_error_unknown(self, request_mock):
|
def test_trace_error_unknown(self, request_mock):
|
||||||
exc = RuntimeError("custom error")
|
exc = RuntimeError("custom error")
|
||||||
request_mock.side_effect = exc
|
request_mock.side_effect = exc
|
||||||
self._test_trace_error(StatusCanonicalCode.UNKNOWN, exc)
|
self._test_trace_error(StatusCode.ERROR, exc)
|
||||||
|
|
||||||
def test_trace_error_not_found(self, request_mock):
|
def test_trace_error_not_found(self, request_mock):
|
||||||
msg = "record not found"
|
msg = "record not found"
|
||||||
exc = elasticsearch.exceptions.NotFoundError(404, msg)
|
exc = elasticsearch.exceptions.NotFoundError(404, msg)
|
||||||
request_mock.return_value = (1, {}, {})
|
request_mock.return_value = (1, {}, {})
|
||||||
request_mock.side_effect = exc
|
request_mock.side_effect = exc
|
||||||
self._test_trace_error(StatusCanonicalCode.NOT_FOUND, exc)
|
self._test_trace_error(StatusCode.ERROR, exc)
|
||||||
|
|
||||||
def _test_trace_error(self, code, exc):
|
def _test_trace_error(self, code, exc):
|
||||||
es = Elasticsearch()
|
es = Elasticsearch()
|
||||||
@ -173,7 +173,7 @@ class TestElasticsearchIntegration(TestBase):
|
|||||||
self.assertEqual(1, len(spans))
|
self.assertEqual(1, len(spans))
|
||||||
span = spans[0]
|
span = spans[0]
|
||||||
self.assertFalse(span.status.is_ok)
|
self.assertFalse(span.status.is_ok)
|
||||||
self.assertEqual(span.status.canonical_code, code)
|
self.assertEqual(span.status.status_code, code)
|
||||||
self.assertEqual(span.status.description, str(exc))
|
self.assertEqual(span.status.description, str(exc))
|
||||||
|
|
||||||
def test_parent(self, request_mock):
|
def test_parent(self, request_mock):
|
||||||
|
Reference in New Issue
Block a user