Warning 'No subsegment to end' written to logs when X-Ray SDK is disabled.
- Dominant language
- Python
- Stars
- 338
- Forks
- 147
- PR merge metrics
- No merged PRs in 30d
Description
When running locally, I don't want X-Ray to be enabled. Out of the box, the `sam local start-lambda` logs warnings about the X-Ray SDK, but I'm trying to disable the SDK entirely.
I'm disabling the SDK by checking the environment variable `AWS_SAM_LOCAL`. If it's present and it's value is `'true'`, then the global SDK config is disabled. Then when I patch the desired libraries, nothing happens and there are no `[INFO]` logs. That's good.
```python
from aws_xray_sdk import global_sdk_config as global_xray_sdk_config
from aws_xray_sdk.core import patch, xray_recorder
if environ.get('AWS_SAM_LOCAL', 'false') == 'true':
global_xray_sdk_config.set_sdk_enabled(False)
patch(['boto3', 'requests'])
```
However, I have a function that adds a subsegment, and this is emitting logs even with the X-Ray SDK disabled.
```python
def add_xray_subsegment(name: str, annotations: dict, e: Exception = None) -> None:
with xray_recorder.capture(name) as subsegment:
a = {k: v for k, v in annotations.items() if v is not None}
for k, v in a.items():
subsegment.put_annotation(k, v)
if e:
limit = xray_recorder._max_trace_back
stack = traceback.extract_stack(limit=limit)
subsegment.add_exception(e, stack)
```
> [WARNING] {date} {request-id} No subsegment to end.
While the function still works locally, it's causing delay because people don't expect to see these warnings in the logs and are wasting their time investigating.
I'm guessing this isn't expected behaviour with the SDK disabled; so is this a bug, or is there some other configuration that I can add to remove the warnings?
Thanks.
Contributor guide
Assessment
This issue has not been assessed yet.