========= CHANGELOG ========= Unreleased ========== 2.12.0 ========== * improvement: Default Context Missing Strategy set to Log Error `PR372 https://github.com/aws/aws-xray-sdk-python/pull/372` * bugfix: Pin tox version to <=3.27.1 to fix CI tests `PR374 https://github.com/aws/aws-xray-sdk-python/pull/374` * improvement: Sample app dependency update `PR373 https://github.com/aws/aws-xray-sdk-python/pull/373` * bugfix: Fix pynamodb tests for Python < 3.6 `PR375 https://github.com/aws/aws-xray-sdk-python/pull/375` * improvement: Use latest GH Actions versions in CI tests `PR365 https://github.com/aws/aws-xray-sdk-python/pull/365` * improvement: Simplify setup script `PR363 https://github.com/aws/aws-xray-sdk-python/pull/363` * bugfix: Fix deprecation warnings related to asyncio `PR364 https://github.com/aws/aws-xray-sdk-python/pull/364` * improvement: Run tests against Python 3.10 and 3.11 `PR376 https://github.com/aws/aws-xray-sdk-python/pull/376` * improvement: Sample app dependency update `PR380 https://github.com/aws/aws-xray-sdk-python/pull/380` * bugfix: Pin sqlalchemy version to 1.x to fix tests `PR381 https://github.com/aws/aws-xray-sdk-python/pull/381` * bugfix: Fix sample app dependencies incompatibility with XRay SDK `PR382 https://github.com/aws/aws-xray-sdk-python/pull/382` * bugfix: Start MySQL from GH Actions, upgrade Ubuntu, and remove Python versions for unit tests `PR384 https://github.com/aws/aws-xray-sdk-python/pull/384` 2.11.0 ========== * bugfix: Fix TypeError by patching register_default_jsonb from psycopg2 `PR350 https://github.com/aws/aws-xray-sdk-python/pull/350` * improvement: Add annotations `PR348 https://github.com/aws/aws-xray-sdk-python/pull/348` * bugfix: Use service parameter to match centralized sampling rules `PR 353 https://github.com/aws/aws-xray-sdk-python/pull/353` * bugfix: Implement PEP3134 to discover underlying problems with python3 `PR355 https://github.com/aws/aws-xray-sdk-python/pull/355` * improvement: Allow list TopicArn for SNS PublishBatch request `PR358 https://github.com/aws/aws-xray-sdk-python/pull/358` * bugfix: Version pinning flask-sqlalchemy version to 2.5.1 or less `PR360 https://github.com/aws/aws-xray-sdk-python/pull/360` * bugfix: Fix UnboundLocalError when aiohttp server raises a CancelledError `PR356 https://github.com/aws/aws-xray-sdk-python/pull/356` * improvement: Instrument httpx >= 0.20 `PR357 https://github.com/aws/aws-xray-sdk-python/pull/357` * improvement: [LambdaContext] persist original trace header `PR362 https://github.com/aws/aws-xray-sdk-python/pull/362` * bugfix: Run tests against Django 4.x `PR361 https://github.com/aws/aws-xray-sdk-python/pull/361` * improvement: Oversampling Mitigation `PR366 https://github.com/aws/aws-xray-sdk-python/pull/366` 2.10.0 ========== * bugfix: Only import future for py2. `PR343 `_. * bugfix: Defensively copy context entities to async thread. `PR340 `_. * improvement: Added support for IGNORE_ERROR option when context is missing. `PR338 `_. 2.9.0 ========== * bugfix: Change logging behavior to avoid overflow. `PR302 `_. * improvement: Lazy load samplers to speed up cold start in lambda. `PR312 `_. * improvement: Replace slow json file name resolver. `PR 306 `_. 2.8.0 ========== * improvement: feat(sqla-core): Add support for rendering Database Specific queries. `PR291 `_. * bugfix: Fixing broken instrumentation for sqlalchemy >= 1.4.0. `PR289 `_. * feature: no op trace id generation. `PR293 `_. * bugfix: Handle exception when sending entity to Daemon. `PR292 `_. * bugfix: Fixed serialization issue when cause is a string. `PR284 `_. * improvement: Publish metric on distribution availability. `PR279 `_. 2.7.0 ========== * improvement: Only run integration tests on master. `PR277 `_. * improvement: Add distribution channel smoke test. `PR276 `_. * improvement: Replace jsonpickle with json to serialize entity. `PR275 `_. * bugfix: Always close segment in teardown_request handler. `PR272 `_. * improvement: Close segment in only _handle_exception in case of Internal Server Error. `PR271 `_. * bugfix: Handling condition where Entity.cause is not a dict. `PR267 `_. * improvement: Add ability to ignore some requests from httplib. `PR263 `_. * feature: Add support for SQLAlchemy Core. `PR264 `_. * improvement: Added always() to run clean up workflow. `PR259 `_. * improvement: Allow configuring different Sampler in Django App. `PR252 `_. * bugfix: Restore python2 compatibility of EC2 plugin. `PR249 `_. * bugfix: eb solution stack name. `PR251 `_. * improvement: Integration Test Workflow. `PR246 `_. * improvement: Include unicode type for annotation value. `PR235 `_. * improvement: Run tests against Django 3.1 instead of 1.11. `PR240 `_. * bugfix: Generalize error check for pymysql error type. `PR239 `_. * bugfix: SqlAlchemy: Close segment even if error was raised. `PR234 `_. 2.6.0 ========== * bugfix: asyncio.Task.current_task PendingDeprecation fix. `PR217 `_. * bugfix: Added proper TraceID in dummy segments. `PR223 `_. * improvement: Add testing for current Django versions. `PR200 `_. * improvement: IMDSv2 support for EC2 plugin. `PR226 `_. * improvement: Using instance doc to fetch EC2 metadata. Added 2 additional fields. `PR227 `_. * improvement: Added StaleBot. `PR228 `_. 2.5.0 ========== * bugfix: Downgrade Coverage to 4.5.4. `PR197 `_. * bugfix: Unwrap context provided to psycopg2.extensions.quote_ident. `PR198 `_. * feature: extension support as Bottle plugin. `PR204 `_. * bugfix: streaming_threshold not None check. `PR205 `_. * bugfix: Add support for Django 2.0 to 3.0. `PR206 `_. * bugfix: add puttracesegments to boto whitelist avoid a catch 22. `PR210 `_. * feature: Add patch support for pymysql. `PR215 `_. 2.4.3 ========== * bugfix: Downstream Http Calls should use hostname rather than full URL as subsegment name. `PR192 `_. * improvement: Whitelist SageMakerRuntime InvokeEndpoint operation. `PR183 `_. * bugfix: Fix patching for PynamoDB4 with botocore 1.13. `PR181 `_. * bugfix: Add X-Ray client with default empty credentials. `PR180 `_. * improvement: Faster implementation of Wildcard Matching. `PR178 `_. * bugfix: Make patch compatible with PynamoDB4. `PR177 `_. * bugfix: Fix unit tests for newer versions of psycopg2. `PR163 `_. * improvement: Enable tests with python 3.7. `PR157 `_. 2.4.2 ========== * bugfix: Fix exception processing in Django running in Lambda. `PR145 `_. * bugfix: Poller threads block main thread from exiting bug. `PR144 `_. 2.4.1 ========== * bugfix: Middlewares should create subsegments only when in the Lambda context running under a Lambda environment. `PR139 `_. 2.4.0 ========== * feature: Add ability to enable/disable the SDK. `PR119 `_. * feature: Add Serverless Framework Support `PR127 `_. * feature: Bring aiobotocore support back. `PR125 `_. * bugfix: Fix httplib invalid scheme detection for HTTPS. `PR122 `_. * bugfix: Max_trace_back = 0 returns full exception stack trace bug fix. `PR123 `_. * bugfix: Rename incorrect config module name to the correct global name. `PR130 `_. * bugfix: Correctly remove password component from SQLAlchemy URLs, preventing... `PR132 `_. 2.3.0 ========== * feature: Stream Django ORM SQL queries and add flag to toggle their streaming. `PR111 `_. * feature: Recursively patch any given module functions with capture. `PR113 `_. * feature: Add patch support for pg8000 (Pure Python Driver). `PR115 `_. * improvement: Remove the dependency on Requests. `PR112 `_. * bugfix: Fix psycop2 register type. `PR95 `_. 2.2.0 ===== * feature: Added context managers on segment/subsegment capture. `PR97 `_. * feature: Added AWS SNS topic ARN to the default whitelist file. `PR93 `_. * bugfix: Fixed an issue on `psycopg2` to support all keywords. `PR91 `_. * bugfix: Fixed an issue on `endSegment` when there is context missing. `ISSUE98 `_. * bugfix: Fixed the package description rendered on PyPI. `PR101 `_. * bugfix: Fixed an issue where `patch_all` could patch the same module multiple times. `ISSUE99 `_. * bugfix: Fixed the `datetime` to `epoch` conversion on Windows OS. `ISSUE103 `_. * bugfix: Fixed a wrong segment json key where it should be `sampling_rule_name` rather than `rule_name`. 2.1.0 ===== * feature: Added support for `psycopg2`. `PR83 `_. * feature: Added support for `pynamodb` >= 3.3.1. `PR88 `_. * improvement: Improved stack trace recording when exception is thrown in decorators. `PR70 `_. * bugfix: Argument `sampling_req` in LocalSampler `should_trace` method now becomes optional. `PR89 `_. * bugfix: Fixed a wrong test setup and leftover poller threads in recorder unit test. 2.0.1 ===== * bugfix: Fixed a issue where manually `begin_segment` might break when making sampling decisions. `PR82 `_. 2.0.0 ===== * **Breaking**: The default sampler now launches background tasks to poll sampling rules from X-Ray backend. See the new default sampling strategy in more details here: https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-configuration.html#xray-sdk-python-configuration-sampling. * **Breaking**: The `should_trace` function in the sampler now takes a dictionary for sampling rule matching. * **Breaking**: The original sampling modules for local defined rules are moved from `models.sampling` to `models.sampling.local`. * **Breaking**: The default behavior of `patch_all` changed to selectively patches libraries to avoid double patching. You can use `patch_all(double_patch=True)` to force it to patch ALL supported libraries. See more details on `ISSUE63 `_ * **Breaking**: The latest `botocore` that has new X-Ray service API `GetSamplingRules` and `GetSamplingTargets` are required. * **Breaking**: Version 2.x doesn't support pynamodb and aiobotocore as it requires botocore >= 1.11.3 which isn’t currently supported by the pynamodb and aiobotocore libraries. Please continue to use version 1.x if you’re using pynamodb or aiobotocore until those haven been updated to use botocore > = 1.11.3. * feature: Environment variable `AWS_XRAY_DAEMON_ADDRESS` now takes an additional notation in `tcp:127.0.0.1:2000 udp:127.0.0.2:2001` to set TCP and UDP destination separately. By default it assumes a X-Ray daemon listening to both UDP and TCP traffic on `127.0.0.1:2000`. * feature: Added MongoDB python client support. `PR65 `_. * bugfix: Support binding connection in sqlalchemy as well as engine. `PR78 `_. * bugfix: Flask middleware safe request teardown. `ISSUE75 `_. 1.1.2 ===== * bugfix: Fixed an issue on PynamoDB patcher where the capture didn't handle client timeout. 1.1.1 ===== * bugfix: Handle Aiohttp Exceptions as valid responses `PR59 `_. 1.1 === * feature: Added Sqlalchemy parameterized query capture. `PR34 `_ * bugfix: Allow standalone sqlalchemy integrations without flask_sqlalchemy. `PR53 `_ * bugfix: Give up aiohttp client tracing when there is no open segment and LOG_ERROR is configured. `PR58 `_ * bugfix: Handle missing subsegment when rendering a Django template. `PR54 `_ * Typo fixes on comments and docs. 1.0 === * Changed development status to `5 - Production/Stable` and removed beta tag. * feature: Added S3 API parameters to the default whitelist. * feature: Added new recorder APIs to add annotations/metadata. * feature: The recorder now adds more runtime and version information to sampled segments. * feature: Django, Flask and Aiohttp middleware now inject trace header to response headers. * feature: Added a new API to configure maximum captured stack trace. * feature: Modularized subsegments streaming logic and now it can be overriden with custom implementation. * bugfix(**Breaking**): Subsegment `set_user` API is removed since this attribute is not supported by X-Ray back-end. * bugfix: Fixed an issue where arbitrary fields in trace header being dropped when calling downstream. * bugfix: Fixed a compatibility issue between botocore and httplib patcher. `ISSUE48 `_. * bugfix: Fixed a typo in sqlalchemy decorators. `PR50 `_. * Updated `README` with more usage examples. 0.97 ==== * feature: Support aiohttp client tracing for aiohttp 3.x. `PR42 `_. * feature: Use the official middleware pattern for Aiohttp ext. `PR29 `_. * bugfix: Aiohttp middleware serialized URL values incorrectly. `PR37 `_ * bugfix: Don't overwrite plugins list on each `.configure` call. `PR38 `_ * bugfix: Do not swallow `return_value` when context is missing and `LOG_ERROR` is set. `PR44 `_ * bugfix: Loose entity name validation. `ISSUE36 `_ * bugfix: Fix PyPI project page being rendered incorrectly. `ISSUE30 `_ 0.96 ==== * feature: Add support for SQLAlchemy and Flask-SQLAlcemy. `PR14 `_. * feature: Add support for PynamoDB calls to DynamoDB. `PR13 `_. * feature: Add support for httplib calls. `PR19 `_. * feature: Make streaming threshold configurable through public interface. `ISSUE21 `_. * bugfix: Drop invalid annotation keys and log a warning. `PR22 `_. * bugfix: Respect `with` statement on cursor objects in dbapi2 patcher. `PR17 `_. * bugfix: Don't throw error from built in subsegment capture when `LOG_ERROR` is set. `ISSUE4 `_. 0.95 ==== * **Breaking**: AWS API parameter whitelist json file is moved to path `aws_xray_sdk/ext/resources/aws_para_whitelist.json` in `PR6 `_. * Added aiobotocore/aioboto3 support and async function capture. `PR6 `_ * Added logic to removing segment/subsegment name invalid characters. `PR9 `_ * Temporarily disabled tests run on Django2.0. `PR10 `_ * Code cleanup. `PR11 `_ 0.94 ==== * Added aiohttp support. `PR3 `_ 0.93 ==== * The X-Ray SDK for Python is now an open source project. You can follow the project and submit issues and pull requests on GitHub: https://github.com/aws/aws-xray-sdk-python 0.92.2 ====== * bugfix: Fixed an issue that caused the X-Ray recorder to omit the origin when recording segments with a service plugin. This caused the service's type to not appear on the service map in the X-Ray console. 0.92.1 ====== * bugfix: Fixed an issue that caused all calls to Amazon DynamoDB tables to be grouped under a single node in the service map. With this update, each table gets a separate node. 0.92 ==== * feature: Add Flask support * feature: Add dynamic naming on segment name 0.91.1 ====== * bugfix: The SDK has been released as a universal wheel