ERROR:aws_xray_sdk.core.context:cannot find the current segment/subsegment, please make sure you have a segment open
- 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
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