Node.js 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.
10.2.2 - May 24, 2022
Maintenance:
- Supports Node 18
- Updated dependencies
Fixes:
- No error when using without Service Key.
- No error logging for failing to report error on an aborted connection.
Breaking changes:
- None
10.2.1 - February 22, 2022
Maintenance:
- Fixed package dependencies.
- Fixed longstanding bugs in
tedious
andoracledb
probes.
Breaking changes:
- None
10.2.0 - January 12, 2022
Features:
- Added a config option to deregister the
fs
probe
Maintenance
- Modified agent initialization to minimize usage of patched
fs
at startup - Changed prepack script to fully support install from branch
- Supports Node 17 (preview for 18)
Breaking changes
- None
10.1.0 - September 23, 2021
Maintenance:
- Published using GitHub Actions
- Supports Node 16
- Added
node-pre-gyp
distributable binaries for Node 16 - Using
oboe
c-lib v10.1.1 - Updated and trimmed dependencies
- Updated and trimmed files in package
- Code lint
Breaking changes:
- None
10.0.1 - February 11, 2021
Fixes:
- avoid triggering non-existent property warning during module.exports on Node 14
- documentation updates
10.0.0 - February 4, 2021
Features
- @appoptics/apm-bindings replaces appoptics-bindings.
- @appoptics/apm-bindings uses node-pre-gyp so that users of LTS versions of node do not need to have the c/c++ build chain installed.
- if APPOPTICS_LOG_SETTINGS is empty suppress all logging
- .eslintrc.yaml renamed to .eslintrc.json
- use shimmer instead of ximmer
- add span.runPromise() - native async span runner
- updated to Apache 2.0 license
- [breaking] removed ao.serviceKey
- [breaking] configuration file name-change
Fixes:
- pass options to koa constructor
- check if module needs patching before doing builtin lookup
- set txname when not set by frameworks
9.0.0 - December 2, 2020
Features
- lambda support
- capture agent version in init message
Breaking change
- removed ao.serviceKey property.
Bug fix
- change config file name appoptics-apm.{js|json} => appoptics-apm-config.{js|json}
8.1.0 - August 19, 2020
Features and bug fixes
- http/https probe configuration property to specify header to be used for ClientIP KV.
- an error is no longer logged when the http socket address is undefined
8.0.1 - July 6, 2020
- add support for cassandra-driver >= v4.4.0
- document proxy in configuration guide
8.0.0 - July 1, 2020
Features
- minimize span/event creation for unsampled traces
- support HTTP proxy configuration
Miscellaneous
- improve span.runAsync() and span.runSync() logic
- debounce metric send errors to maximum one per metrics interval.
- test.sh reworked to avoid mocha-created async context.
- more consistent logging
- getFormattedTraceId() uses ao.lastEvent not ao.topSpan for task ID and sample flag.
- implement messaging for collector-requested soft-disable [AO-15324]
- incorporate bindings@10 changes for RPC size [AO-16062]
- replace span.descended => span.topSpan [AO-15140]
Breaking changes
- removed Span.last and Event.last; use ao.lastSpan and ao.lastEvent
- span.exitWithError() => span.exitCheckingError()
- aob.Reporter.isReadyToSample() => aob.isReadyToSample()
- aob.Metadata no longer exists. see https://github.com/appoptics/appoptics-apm-node/blob/master/guides/migrating.md if you're using this low level class.
- removed %m metadata log format.
7.1.0 - February 20, 2020
New feature
- Run-time metrics
Testing changes
- add selectone for finer grained target range selection
7.0.0 - January 2, 2020
major changes & bug fixes
- move to ace-context with cls-hooked as backup. remove continuation-local-storage.
- add forceNewTrace option to startOrContinueTrace()
- force new context on inbound HTTP requests
- support restify v7+
- fix http RemoteURL when search/query
- exit http/s client spans correctly on socket error events
- exit http/s client spans on upgrade events
- update zlib to handle brotli compression
- don't add Database KV when database is undefined in connect
minor changes
- suppress logging of missing spans during node bootstrap phase
- add static debugging config for ace-context
- more consistent span logging messages
- optimize built-in patching
- check new http_parser values during init
testing changes
- test q and bluebird promises in custom.test.js
- fix sendReport() being called twice on outer:exit event in zlib testing
- add .mocharc with exit: true to prevent tests from hanging.
- make http/https testing use common code test/probes/http-common.js
- http/https tests now generate real socket errors.
- test/composite/request.test.js now generates a real socket error
- add forceNewTrace testing to test/custom.test.js
- add websocket tests
- clear context after pg6-plus test
- don't test zlib's brotli before node v11.7.0
- update pino to 5.15.0 for pino/flatstr intermittent failures
bookkeeping
- ignore *.log files in package root
- .eslintrc.yaml - add BigInt, ignore template literal max line length
- updated guides/api.md
- change form of license to "SEE LICENSE IN "
6.9.0 - Oct 28, 2019
Features
- new mongodb probe since v3.3.0 no longer uses mongodb-core
- allow the fs probe to ignore specific errors (ENOENT, etc.)
- disable mongodb-core versions < 3 when node version >= 11.15.0 (v8 memory leak)
- include version patched when APPOPTICS_LOG_SETTINGS include patching.
Fixes
- supply a default when there is no TransactionName.
- log only one error for each bad KV pair
- fix duplicate/incorrect logging of getTraceSettings() errors
- reset count and time-window when issuing a debounced log message
- fix bug where FileDescriptor would not be added to an exit event
- require-patch now logs the version for patched modules.
6.7.1- Sep 25, 2019
- bind context for response finalizer in instrumentHttp.
- lib/probes/zlib.js - only bind emitter when context exists.
- lib/probes/@hapi/hapi.js - consistently report template language without dot.
- test/ various - use port 3500 to avoid conflicts with commonly used 3000.
- test/probes/hapi/hapi-17-and-above.js - add zlib testing and fix when invalid vision plugin.
- update guides/configuration.md.
6.7.0 - Sep 10, 2019
- trigger trace
- replace legacy event-pre-handle with emitter.prependListener
- add ec2MetadataTimeout property to configuration file
- improve hapi TemplateLanguage detection, fix invalid type
- log invalid/unknown APPOPTICS_ environment variables
- add checks for valid logger in Debounce constructor
- add test/probes/http-trigger-trace.test.js to suite
- start to centralize env vars in lib/c-lib-env-vars.js and test/config.test.js
6.6.0 - Jul 5, 2019
- context management simplification + bindings 6.4.0
- handle more boolean environment variable variations.
- propagate FilePath KV value correctly in edge case
- add log setting 'event:create', cassandra-driver now always uses 'patching'
6.5.0 - Jun 10, 2019
- fix for node v11.10.0+ corrupted histograms
- support new @hapi/hapi and @hapi/vision packages
- improved environment variable handling
6.4.0 - May 12, 2019
- support new API token format
- update bindings to version with swoken support (v6.2.1).
- test against v12 in matrix tests (git@github.com:appoptics/node-apm-matrix.git)
- update dependencies to v12 compatible versions (level, bcrypt)
6.3.2 - May 6, 2019
- use appoptics-bindings v6.1.1
- split majority of api into separate module
- improve startup logging when errors or disabled
- additional testing for agent-disabled mode
6.3.1 - Apr 29, 2019
- Update guides/configuration.md for log insertion settings.
- Update config file example with default settings.
- Correct default log settings.
6.3.0 - Apr 29, 2019
- full log insertion support and tests (morgan, winston, pino, bunyan)
- add config property insertTraceIdsIntoLogs to insert trace IDs into all loggers except morgan.
- add config property insertTraceIdsIntoMorgan to auto-append trace IDs for morgan.
- add createTraceIdsToken config file property. Set to 'morgan' to create token ao-auto-trace-id.
- set config serviceKey to service key actually used
- improve "task IDs don't match" logging
- fix aws-sdk bad signature on retry
- correct reversed promise/non-promise API docs.
6.2.0 - Apr 9, 2019
- Add traceId insertion to bunyan logger.
- insertTraceIdsIntoLogs options are false, true, 'traced', 'sampledOnly', 'always'
6.1.0 - Apr 7, 2019
- insert trace IDs into logs
- automatic for pino, winston
- new API function getFormattedTraceId for inserting the token using code
- custom metrics via ao.sendMetric()
- fix config file path error
6.0.3 - Mar 22, 2019
- promise-based custom SDK methods pStartOrContinueTrace and pInstrument
- koa-route v3 support
- update dependencies
6.0.1 - Mar 5, 2019
try to add x-trace header back to http response if koa's error handler removes it
handle thrown exceptions in koa-router/patchAsyncHandler
6.0.0 - Mar 4, 2019
Features
- per-URL transaction filtering
- add instrumentation of routes and middleware for express, koa, and restify
- set logging with APPOPTICS_LOG_SETTINGS=error,warn as opposed to DEBUG=appoptics:error,appoptics:warn
Bug fixes
- fix koa-router probe for multiple middleware in single call
- fix incorrect library version reported in init message
Breaking changes
- API-level breaking changes in guides/migration-5to6.md
5.9.4 - Dec 19, 2018
- mongoose updates
- update probes/mongoose to handle version mongoose@5
- update tests for mongoose@4
- add support for queued queries.
5.9.3 - Dec 13, 2018
- This release supports postgres v7.
- v7 supports promises and callbacks
- v6 and before supports callbacks and events
- create extensive test suite for pg7 (split from pg6 tests)
- use testeachversion's dependencies for including pg-native
5.9.2 - Nov 29, 2018
- fix failure to trace https.get() for node 9.9.0+
- handle node 10.9.0+ signature for http/https request()
- add tests for the different request() signatures.
- move to testeachversion@8
- update devDependencies to latest versions supported under node 8.
5.9.1 - Nov 15, 2018
- redis - support through most recently released version
- cassandra-driver - change incorrect info level to patching
5.9.0 - Nov 12, 2018
- fix CLS-not-active errors in amqplib, levelup
- fix lost-context errors in cassandra-driver, mysql
- ao.bindEmitter now returns the possibly bound emitter as documented
- don't mask .native functions for fs.realpath and fs.realpathSync (node >= 9.2.0)
- implement makeLogMissing() for patching errors.
5.8.0 - Oct 24, 2018
- Handle malformed service keys by transforming them if possible.
- Use appoptics-bindings@5.7.1 for improved network interface handling.
- Fix invalid FilePath error when setting KVs.
- Fix invalid Port error when setting KVs.
- Don't allow KV value to be NaN.
- Update API docs on how to report errors.
5.7.0 - Oct 16, 2018
- support hapi version 17
- add custom transaction name function for hapi. (hapi request object is single argument)
- remove babel preprocessing, use native es6
- start checking expected log messages in tests
- use shimmer fork (ximmer) until shimmer function check is fixed
- treat vision as a separate package from hapi (when it is)
5.6.0 - Sep 12, 2018
- Fixes possible file corruption by http instrumentation
- Add support for koa@2
- Use cls-hooked for node versions 8+
- Maintain context for redis pub/sub.
- Logging improvements.
- Testing improvements.
- Use appoptics-bindings@5.4.1 for host metadata changes
5.4.2 - Aug 28, 2018
- Add missing 4th argument to hapi.decorate (#21).
- Issue patching log messages whenever a hapi patch fails.
5.4.1 - Aug 21, 2018
- Update generic-pool to promise-based interface. (#15)
- Fix bindEmitter errors.
- Define missing log object in hapi probe. (#14)
5.4.0 - Aug 14, 2018
- Do not re-execute appoptics-apm require file even if cache entry is deleted.
- Do not log warning if a domain prefix is added to a custom transaction name.
- Add test to verify single execution of appoptics-apm.
5.3.1 - Aug 1, 2018
- Add diagnostic information to bind emitter errors.
- Debounce repetitive bind emitter errors.
- Improve checking when adding edges.
- Fix missing context for pg (postgres).
- Fix spurious txname changed warnings.
- Setup composite tests (multiple modules in combination).
- Add checks for bad x-trace header in response headers.
- Test improvements.
- Work towards eslint compliance.
5.2.3 - Jul 10, 2018
- Tighten checks on inbound x-trace IDs.
- Avoid expected info logging during startup.
- Don't edge to unsampled x-trace
- Avoid creating string for sampling check.
- Add tests for sampling checks.
- Incremental eslintification.
5.2.1 - Jul 3, 2018
- alpine support
- bindings 5.3.0
- improve install
- start eslint cleanup
- move oracle and pg installs to deps.sh
- log warning on library transaction name change
- bluebird update for v3
- update "bash" test configuration
- move levelup test-db location
- change README to reflect node 4 no longer in LTS window
5.0.0 - Jun 11, 2018
- Fix bindEmitter test.
- Support appoptics-bindings@5
- add domainPrefix support
- add custom transaction name support
- add isReadyToSample function
- Update documentation
- move from yuidoc to jsdoc via jsdoc2md
- provide more examples in api doc
- Breaking changes from previous v4.3.2-beta release
- log.force has been removed
- enabled now defaults to true in options arg to instrument or startOrContinueTrace
- some testing may require setting APPOPTICS_TOKEN_BUCKET_* environment variables.
- Dependency update: appoptics-bindings@4.6.2 fixes std::isnan reference error.
- mongodb-core support through version 3 (replica-sets not yet supported)
- remove support for node versions less than 4
- config file env var now APPOPTICS_APM_CONFIG_NODE
- remove node-cassandra-cql support
- bin/node-ao updated
- remove dev-only files from npm package
- add hostname alias support