Python Agent (legacy) Release Notes
AppOptics agents are no longer receiving updates. The new SolarWinds Observability libraries are regularly updated with new features and improvements. If you are still relying on the AppOptics agents and your components are supported by the new libraries, consider migrating to SolarWinds Observability.
SolarWinds Observability Libraries are not compatible with AppOptics agents. Do not use a mix of SolarWinds Observability Libraries and AppOptics agents to instrument applications that are part of a distributed trace.
5.2.0 - August 25, 2021
Fixed
- Tagging of custom metrics
Removed
- 
                                        Support for Python 2.7 and 3.4 
- 
                                        Dependency on six(Python 2/3 compatibility) module
5.1.0 - July 8, 2021
Added
- Support for instrumentation of AWS Lambda functions
- Configuration option to disable agent via the APPOPTICS_AGENT_ENABLEDenvironment variable
5.0.0 - March 3, 2021
Removed
- 
                                        Ability to force tracing by providing keyword argument forcetoContext.start_trace. This is a breaking change as the signature ofContext.start_tracehas been modified in a non-backwards compatible way.
Improved
- 
                                        Unit testing structure has been improved to eliminate mocking C-extension functionalities. This is a breaking change since the appoptics_apm_test.pymodule was removed.
- 
                                        Agent now ships with C-extension version 10.1.0 
Fixed
- 
                                        requestsinstrumentation injects invalid X-Trace into HTTP header
- 
                                        requestsinstrumentation reports events with invalid edges
- 
                                        Tornado instrumentation incorrectly injects X-Trace into HTTP header when agent is in no-op mode 
- 
                                        Tornado instrumentation injects incorrect X-Trace into HTTP header 
- 
                                        In Python2.7, agent raises TypeErrororUnicodeEncodeErrorwhen unicode objects are provided as a value to a info event
- 
                                        end_tracereturns incorrect trace ID
- 
                                        WSGI instrumentation creates duplicate edges between reported events 
- 
                                        When start_traceis provided with an invalid incoming X-trace, the agent does not report any events related to this request
- 
                                        start_traceraisesTypeErrorwhen non-string object is provided asxtrparameter
- 
                                        When adding an info event with a non-string object as a key, the agent will report an error event instead of the info event. Non-string objects can now be reported as key (and will be converted to a string when the event is reported). 
- 
                                        Agent crashes with message oboe_event_add_info: Assertion 'key' failedwhen aNoneobject is provided as a key when reporting an info event
Changed
- 
                                        Project license has changed to Apache 2.0 License 
4.4.0 - November 12, 2020
- Added: appoptics_apm is now providing Python wheels for manylinux2014 compatible platforms
- Added: Support for Python 3.9
- Added: Custom transaction name can now be set through APPOPTICS_TRANSACTION_NAMEenvironment variable
4.3.1 - September 14, 2020
- Fix: Python runtime version is now reported without build information in agent's __Initmessage, C-extension library version is reported
- Fix: Missing logging message on agent startup
- Fix: Instrumentation of Django framework under Python 3 and uWSGI breaks depending on the order of import statements. Consult the documentation for most recent instructions on how to instrument Django applications.
4.3.0 - August 31, 2020
- Fix: The end_traceSDK function now returns a trace ID with sampling flag set to 00 as expected when tracing is disabled on the service level
- Fix: The incorrect multiplication of the SampleRatevalue reported with the start event has been removed andSampleRateis now reported correctly
- Fix: Configuration of tracing_modethrough the INI configuration file is now honored
- Fix: missing metrics when request of instrumented Django application is not sampled
- Changed: Configuration values for tracing_modehave been renamed fromalwaysandnever, toenabledanddisabled, respectively (see Tracing Mode for current values)
- Added: Custom transaction filtering to control tracing on a per-request basis (see Custom Transaction Filtering (Tracing Mode per Transaction) for current configuration values)
4.2.0 - July 16, 2020
- Upgrade: agent ships with newest C-extension version 10.0.1
- Changed: CustomMetrics API functions custom_metrics_incrementandcustom_metrics_summarynow have return values
- Changed: CustomMetrics API functions custom_metrics_incrementandcustom_metrics_summaryonly accept positive integer forcountparameter
- Added: Limit maximum RPC request size to 3MB
- Added: HTTP proxy support
- Added: Support for Alpine Linux 3.9, 3.10, 3.11
- Removed: Drop support for the following operating systems (due to upgrade of C-extension):- CentOS/RHEL 6
- Ubuntu 12.04
- Debian 6, Debian 7
- Amazon Linux 2013.09
 
4.1.0 - Jun 17, 2020
- Added: Python3.8 support
- Added: Trace ID injection into log messages
- Fix: Missing __Init messages on agent startup
- Added: appoptics_apmmodule now has__version__attribute according to PEP 396
- Fix: Incorrect agent startup behaviour when APPOPTICS_DEBUG_LEVELis an empty string
4.0.0 - Apr 29, 2020
- Added: Python3.7 support
- Added: Azure app service support
- Added: Support for configurable EC2 metadata timeout
- Fix: Renamed async to aosync to support Python3.7
- Updated: agent configuration options changed - Consult official documentation for agent configuration options
3.4.9 - May 03, 2019
- Fix: upgrade to oboe 4.0.1 for agent readiness check
- Fix: unhandled exception when running inside zip archive
- Added: better startup message for unsupported platforms
- Added: PID and TID to logs
3.4.5 - Nov 23, 2018
- Added ability to set service key and hostname alias via configuration file
- Added ability to disable agent logging and better logging level control. Note APPOPTICS_APM_PYTHON_DISABLE_LOGGER is no longer supported
- Fix: middleware generating incorrect URL
3.4.4 - Nov 5, 2018
- Added safer processing of Django middleware settings
- Added Django 2.1 support
- Updated native extension which validates and automatically transformas invalid service names
3.4.2 - Oct 2, 2018
- Added: Agent-side sql sanitization
- Fix: Uincode exception processing for python2
- Updated native extension with improved network interface detection
3.4.1 - Sep 14, 2018
- Fix: DjangoORM should reraise application error
- Fix: ensure reporting of transactions for unsampled requests
3.4.0 - Aug 31, 2018
- Added ability to install on OS X in no-op mode
- Added appoptics_readySDK call to check agent readiness
- Fix: DjangoORM signature mismatch with wrapped method
- Updated configuration log for less verbosity
3.3.1 - Aug 13, 2018
- Fix: installer error for linux distros without /etc/os-release file
- Updated native extension with improved communication with AppOptics server (better host detection and optimized sending of data)
3.3.0 - Aug 13, 2018
- Added support for alpine distribution
- Fix: thread-safe middleware instrumentation
- Fix: avoid custom metrics wrong type or value caused segfault in native extension
- Fix: references to old agent logger
3.2.0 - Jul 12, 2018
- Fix: custom_metrics_summary, custom_metrics_increment SDK calls. Note this is a breaking change to the SDK API, please see the updated signature for Custom Metrics
- Fix: tornado X-trace header missing
- Fix: middleware multi-span trace error
- Fix: django exit event KV missing
3.1.0 - Jun 7, 2018
- Added support for custom transaction naming via the set_transaction_name SDK method
2.0.5 - Apr 12, 2018
- Added Django 1.7 support
- Added support for Heroku
- Fix: native extension memory leak
- Fix: swallows backtraces when Flask is in debug mode