Node.js Agent Release Notes
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