Python release notes

Monday, September 21, 2020 - 15:00 Download

Notes

This release of the Python agent adds instrumentation for uvicorn and asyncpg.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Adds uvicorn instrumentation

    ASGI applications are now automatically wrapped when using the uvicorn ASGI server.

  • Adds asyncdb instrumentation

    Support has been added for recording database transactions when using asyncpg database client module for PostgresSQL.

Improved Features

  • Adds db.operation attribute

    A new attribute, db.operation, was introduced for datastore traces. This value is recorded only when db.statement is not reported, and represents an operation triggered by methods other than running a DB statement.

Monday, August 31, 2020 - 15:00 Download

Notes

This release of the Python agent adds new ASGI apis and upgrades wrapt.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Adds support for ASGI applications via built in APIs

    ASGI applications can now be timed via middleware-like API calls. Browser monitoring JS is automatically injected into HTML pages by the ASGI browser monitoring middleware for instrumented applications. See the asgi_application docs for details on API usage.

  • Upgrades wrapt to 1.12.1

    This version of the agent ships with wrapt 1.12.1.

Monday, August 24, 2020 - 11:00 Download

Notes

This release of the Python agent includes bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug fixes

  • Fix invalid payloads generated when using serverless mode

    When using serverless mode on the Python Agent versions v5.16.0 and v5.16.1, invalid serverless/lambda payloads were generated. The agent now generates the proper payloads in serverless mode.

Monday, August 17, 2020 - 10:00 Download

Notes

This release of the Python agent introduces manylinux wheels and includes bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug fixes

  • Data was erroneously discarded when an HTTP protocol error occurred

    When an unexpected HTTP error occurred (such as a timeout), data was erroneously discarded. Data is now downsampled and retransmitted when an HTTP protocol error occurs.

  • Error when installing with an incompatible setuptools_scm version

    The version requirements were not correctly set for the setuptools_scm build time requirement, which may have resulted in an error at installation. The version requirements for setuptools_scm are now set appropriately.

Monday, August 10, 2020 - 13:00 Download

Notes

This release of the Python agent changes the internal http client from requests to urllib3, updates logging, and includes bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved Features

  • The NewRelicContextFormatter now records extras

    When using the NewRelicContextFormatter log formatter, extras are now automatically captured and recorded in the New Relic logs product.

  • The agent now internally uses urllib3

    The python agent previously used requests as its http client. The agent now uses urllib3 internally for HTTP communication with New Relic data ingest services.

Bug fixes

  • Fix grpc application crash when credentials are supplied

    When using the credentials argument, the agent's built in grpc instrumentation caused an application crash. This crash has been fixed.

  • Fix Tornado framework crashes when finish is called from a different task

    When finish is called from a different task, applications using the Tornado framework may crash. This crash has been fixed.

Thursday, June 18, 2020 - 10:30 Download

Notes

This release of the Python agent includes a bug fix.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug fixes

  • When using newrelic-admin run-program on Python 2.7 applications failed to start

    Using the newrelic-admin run-program on Python 2.7 with the 5.14.0 agent resulted in an application crash. Applications now start as expected on Python 2.7.

Tuesday, June 2, 2020 - 08:30 Download

Notes

This release of the Python agent includes improvements to distributed tracing, and bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Features

  • Add new span attribute transaction.name

    A new attribute, transaction.name, has been added to the root span.

Improved features

  • Transaction attributes are added to the root span

    Transaction attributes, including response attributes, are now added to the root span.

  • Custom attributes are added to the root span

    The public API methods newrelic.agent.add_custom_param and newrelic.agent.add_custom_params now add the specified custom attribute to the root span in addition to the transaction. If the maximum number of custom attributes is reached, span-level custom attributes take precedence over transaction-level custom attributes.

  • Error attributes added to each span/segment

    Error attributes error.class and error.message to all spans that exit without handling an exception.

Bug fixes

  • asyncio: application crash when a transaction that started on a completed parent task exits

    When a transaction that started on a completed parent task exited, an exception was raised. This error has been fixed.

  • Error attributes are no longer added if the error collector is disabled

    If the error collector is disabled via error_collector.enabled, error attributes error.class and error.message are not added to the currently executing span.

Security Updates

Note that changes were made that add attributes to the root span. Transaction-level attribute filtering via the transaction.attribute.exclude configuration setting will not filter the attribute(s) for the root span. Those attributes may unexpectedly start to appear on the root span.

Monday, May 4, 2020 - 15:00 Download

Notes

This release of the Python agent includes bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Bug fixes

  • AIOHTTP http client urls displayed as unknown.url when using YARL URLs

    When passing a YARL url object to the aiohttp client, the agent did not properly parse this URL, resulting in unknown.url being displayed in the UI. The URL is now parsed correctly in both the YARL url case and the string url case.

  • Data may not be recorded when tornado's RequestHandler.finish

    Using RequestHandler.finish in tornado caused the transaction to exit before all traces (inserted by automatic instrumentation) were complete, resulting in missing data. All traces now exit when RequestHandler.finish is called.

  • asyncio.ensure_future / asyncio.create_task is unable to spawn new transactions

    Calling asyncio.create_task / asyncio.ensure_future was unable to spawn a new transaction if these methods were called from within an existing transaction. New transactions can now be created when ensure_future/create_task is called from within an existing transaction and no traces have been started on the spawned task.

  • py3: A runtime instrumentation error may have occurred when transactions were finalized

    When transactions became garbage (if the reference to the transaction was lost as part of a circular reference for example), a runtime instrumentation error may have been logged. The error conditions have been relaxed to allow for certain states within the agent when a transaction becomes garbage.

  • Application crash when starting a transaction when one is already active

    Starting a transaction via the context manager APIs when a transaction is already active no longer causes an application crash. An error is logged when this case is detected.

  • Creating a message transaction with distributed tracing enabled may have resulted in a crash

    The agent crashed with an AttributeError when using message transactions with distributed tracing enabled when headers were not provided. This error has been fixed.

Monday, April 13, 2020 - 15:00 Download

Notes

This release of the Python agent includes support for a new product called Infinite Tracing, and it also has some bug fixes

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

New Feature

This release adds support for Infinite Tracing. Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data. With Infinite Tracing, you get examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.

Configure your agent to send traces to a trace observer in New Relic Edge. View distributed traces through New Relic’s UI. There is no need to install a collector on your network.

Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.

Bug fixes

  • Fix record transaction failure in async applications

    When the agent attempted to record information as part of event loop diagnostics, an AttributeError may have occurred during the record transaction phase causing data to not be recorded for that transaction. This issue has now been fixed.

Monday, March 9, 2020 - 11:30 Download

Notes

This release of the Python agent includes an update to the API for recording exceptions, default request attributes, optional function trace attributes, and bug fixes.

The agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.

Improved features

  • newrelic.agent.record_exception now adds attributes to spans

    The public API method newrelic.agent.record_exception now attaches exception details to the currently executing span. Spans with error details are now highlighted red in the distributed tracing UI. Also, the attributes error.class and error.message are added to the span. If multiple errors are recorded for a single span, only the final error's attributes will be added to the span.

  • Note: Exceptions recorded on spans may be double counted in the distributed tracing UI.

  • New default web request attributes.

    The previously optional attributes request.headers.accept, request.headers.host, and request.headers.userAgent are now included by default on all web transactions. These attributes can be excluded through agent configuration.

  • peer.address and peer.hostname can now be excluded from spans through configuration

    peer.address and peer.hostname may be excluded from span events through attribute.exclude options in the agent configuration.

Bug fixes

  • Fix issue which could potentially lead to missing event data

    When the agent was shutting down, event harvest may have been skipped causing any events captured in the final 5 seconds of application execution to be discarded. This has now been fixed.

  • Runtime instrumentation error messages for calling __exit__ before __enter__ were erroneously logged

    Under certain conditions, the agent may have logged an error message for trace __exit__ being called before __enter__. This error message is now printed only if that condition is true.

Known issues and workarounds

  • If a .NET agent is initiating distributed traces as the root service, you must update that .NET agent to version 8.24 or later before upgrading your downstream New Relic Python agents to this agent release.

Pages