aws / aws/aws-xray-sdk-python

ERROR:aws_xray_sdk.core.context:cannot find the current segment/subsegment, please make sure you have a segment open

Offen
#452 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
338
Forks
147
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

``Hi,

I am experiencing an issue with the AWS X-Ray SDK for Python where segments are not being properly created or propagated, resulting in the following exception:

`ERROR:aws_xray_sdk.core.context:cannot find the current segment/subsegment, please make sure you have a segment open
`

The file is being successfully being uploaded in my s3 bucket but the segment is not being traced.

Steps to Reproduce:

```

import json
import os
import boto3
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
import logging
from botocore.exceptions import NoCredentialsError, PartialCredentialsError
from aws_xray_sdk import global_sdk_config
from boto3.s3.transfer import TransferConfig

patch_all()

logging.basicConfig(level='ERROR')
logging.getLogger('aws_xray_sdk.core').setLevel(logging.ERROR)

.
.
.
.
def generate_and_upload(init, count):
session = boto3.Session(profile_name=aws_profile_name)
s3_client = session.client("s3")

# Create file path
file_path = os.path.join("generated", "data.json")

# Write data to the file
with open(file_path, "w") as file:
json.dump(
generate_json_document(init, count),
file,
separators=(",", ":"),
ensure_ascii=False,
)

xray_recorder.configure(service='data-generator')
with xray_recorder.in_segment('generate_and_upload') as segment:
trace_header = segment.trace_id
print(f"Trace Header: {trace_header}")
try:
trnasver_config = TransferConfig(max_concurrency=1)
s3_client.upload_file(
file_path,
f"{bucket}",
f"{path}",
ExtraArgs={"Metadata": {"X-Amzn-Trace-Id": trace_header}},
Config=trnasver_config,
)
print(
f"Uploaded"
)
finally:
xray_recorder.end_segment()
```

I tried to set os.environ['AWS_XRAY_SDK_ENABLED'] = 'false' and a dummy segment was created, but I am not able to see it in the AWS X-ray console.
I am using Python 3.11.1 and aws-xray-sdk is Version: 2.14.0

I have also tried to set off threading and also have 1 thread. The issue still exist,

@chanchiem
@luzfcb
@heitorlessa

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der bereitgestellten generate_and_upload-Reproduktion, insbesondere mit xray_recorder.configure und dem in_segment-Kontext rund um s3_client.upload_file. Führe sie mit Python 3.11.1 und aws-xray-sdk 2.14.0 aus und untersuche anschließend, wie sich das Segment während des Uploads und der Bereinigung verhält. Als erledigt gilt die Aufgabe, wenn der Upload erfolgreich bleibt, der Kontextfehler verschwunden ist und das Segment in der AWS X-Ray-Konsole sichtbar ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
aws, python
Bereich
cloud, observability-sre
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.