Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Opentelemetry WARNING: Invalid type NoneType for attribute value. #1140

Closed
kamilglod opened this issue Feb 15, 2022 · 1 comment · Fixed by #1327
Closed

Opentelemetry WARNING: Invalid type NoneType for attribute value. #1140

kamilglod opened this issue Feb 15, 2022 · 1 comment · Fixed by #1327
Labels
api: bigquery Issues related to the googleapis/python-bigquery API. priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@kamilglod
Copy link

Environment details

  • OS type and version: docker image python:3.9.5-slim-buster
  • Python version: 3.9.5
  • pip version: 21.1.2
  • google-cloud-bigquery version: 2.32.0
  • opentelemetry-sdk verision: 1.9.1

Steps to reproduce

  1. Setup any load job with opentelemetry enabled
  2. See warning about passing None as span attribute

Stack trace

(opentelemetry.attributes) WARNING: Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types

In _set_job_attributes() function (https://github.com/googleapis/python-bigquery/blob/main/google/cloud/bigquery/opentelemetry_tracing.py#L113) you are passing parent_job_id argument which might be None. None is invalid attribute type for opentelemetry: https://github.com/open-telemetry/opentelemetry-python/blob/45a2b350e54da9f99a718148d257ee4e28b1d8e4/opentelemetry-api/src/opentelemetry/attributes/__init__.py#L69-L79

@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/python-bigquery API. label Feb 15, 2022
@yoshi-automation yoshi-automation added the triage me I really want to be triaged. label Feb 16, 2022
@meredithslota meredithslota added priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. and removed triage me I really want to be triaged. labels Feb 17, 2022
@yoshi-automation yoshi-automation added 🚨 This issue needs some love. and removed 🚨 This issue needs some love. labels May 18, 2022
@nik-hil
Copy link

nik-hil commented Jul 5, 2022

faced the same issue while trying to integrate kafka and opentelemetry.

# producer.py
from tracing import instrument
instrument()
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='kafka:9092')
for _ in range(1):
   producer.send('foobar', b'some_message_bytes')
   producer.flush()
#consumer.py
from tracing import instrument
instrument()
from kafka import KafkaConsumer
consumer = KafkaConsumer('foobar', bootstrap_servers='kafka:9092')
for msg in consumer:
   print(msg)
# tracing.py
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import (
    SimpleSpanProcessor,
    ConsoleSpanExporter,
)
from opentelemetry.instrumentation.kafka import KafkaInstrumentor
def instrument(*args, **kwargs):
    provider = TracerProvider()
    simple_processor = SimpleSpanProcessor(ConsoleSpanExporter())
    provider.add_span_processor(simple_processor)
    trace.set_tracer_provider(provider)
    KafkaInstrumentor().instrument()
# requirement.txt for telemetry
kafka-python==2.0.1
loguru==0.5.3
opentelemetry-api==1.11.1
opentelemetry-exporter-otlp==1.11.1
opentelemetry-instrumentation-asgi==0.30b1
opentelemetry-instrumentation-mysql==0.30b1
opentelemetry-instrumentation-redis==0.30b1
opentelemetry-instrumentation-requests==0.30b1
opentelemetry-instrumentation-sqlalchemy==0.30b1
opentelemetry-instrumentation-wsgi==0.30b1
opentelemetry-instrumentation==0.30b1
opentelemetry-instrumentation-kafka-python==0.30b1
opentelemetry-sdk==1.11.1
opentelemetry-util-http==0.30b1
opentelemetry-exporter-otlp-proto-grpc==1.11.1
opentelemetry-proto==1.11.1
protobuf==3.20.1

It gives error like,

# python producer.py 
Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types
{
    "name": "foobar send",
    "context": {
        "trace_id": "0xee2c261b24fdb92880d1c21e2561c755",
        "span_id": "0xa5adf420ea6497b7",
        "trace_state": "[]"
    },
    "kind": "SpanKind.PRODUCER",
    "parent_id": null,
    "start_time": "2022-07-05T12:05:32.945306Z",
    "end_time": "2022-07-05T12:05:32.945712Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "messaging.system": "kafka",
        "messaging.destination": "foobar",
        "messaging.url": "\"kafka:9092\""
    },
    "events": [],
    "links": [],
    "resource": {
        "telemetry.sdk.language": "python",
        "telemetry.sdk.name": "opentelemetry",
        "telemetry.sdk.version": "1.11.1",
        "service.name": "myapp"
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigquery Issues related to the googleapis/python-bigquery API. priority: p2 Moderately-important priority. Fix may not be included in next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants