UNPKG

204 kBMarkdownView Raw
1### v7.3.1 (2021-04-14)
2
3* Fixed issue with 'new_promise_tracking' feature flag functionality where segments for ended transactions would get propagated in certain cases by promises that had no continuations scheduled (via await or manually).
4
5 If you are experiencing high overhead levels with your promise usage and the agent attached, we recommend testing your application with 'new_promise_tracking' set to true to see if overhead is reduced. You'll also want to verify your data is still being captured correctly in case it falls into a known or unknown limitation of this approach. **NOTE: chaining of promise continuations onto an already resolved promise across an async hop (scheduled timer) will result in state-loss with this new functionality turned on. This is a less-common use-case but worth considering with your applications.**
6
7**Deprecation Warning:** The certificate bundle automatically included by New Relic when using the 'certificates' configuration (commonly with proxies) will be disabled by default in the next major version. This is currently targeted for sometime in May. The bundle will be fully removed in later major versions. We recommend testing with the 'certificate_bundle' feature flag set to `false` to determine if you will need to modify your environment or setup your own appropriate bundle. Example configuration: `feature_flag: { certificate_bundle: false }`.
8
9### v7.3.0 (2021-04-06)
10
11* Added new feature-flag 'new_promise_tracking' which enables cleaning up of segment references on native promise resolve instead of destroy. Includes usage of async-await. This can be enabled via `feature_flag: { new_promise_tracking: true }` in the config file or `NEW_RELIC_FEATURE_FLAG_NEW_PROMISE_TRACKING=1` in your ENV vars.
12
13 Applications with heavy promise usage or high-throughput applications with some promise usage should see moderate to high reduction in memory usage and may see a slight reduction in CPU usage. A bump in throughput may also be noticed in some cases. Results will vary by application.
14
15 If you are experiencing high overhead levels with your promise usage and the agent attached, we recommend testing your application with 'new_promise_tracking' set to true to see if overhead is reduced. You'll also want to verify your data is still being captured correctly in case it falls into a known or unknown limitation of this approach. **NOTE: chaining of promise continuations onto an already resolved promise across an async hop (scheduled timer) will result in state-loss with this new functionality turned on. This is a less-common use-case but worth considering with your applications.**
16
17* Fixed memory leak introduced when Infinite Tracing is enabled.
18
19 When Infinite Tracing endpoints reconnected they would instantiate a new gRPC client prior to calling `client.recordSpan()`. It appears several objects created by grpc-js (`ChannelImplementation` and child objects, promises, etc.) are held in memory indefinitely due to scheduled timers even when the client is no-longer referenced and the associated stream closed. We now avoid this situation by only creating the client once and then reusing it to establish new stream connections.
20
21### v7.2.1 (2021-03-29)
22
23* Dev-only sub-dependency bump of 'y18n' to clear npm audit warnings.
24
25* Bumped @grpc/grpc-js to ^1.2.11.
26
27* Bumped @grpc/proto-loader to ^0.5.6.
28
29* Agent no longer propagates segments for promises via async-hooks when the transaction associated with the parentSegment has ended.
30
31 This change reduces the amount of context tracking work needed for certain rare edge-case scenarios involving promises.
32
33* Fixed issue where capturing axios request errors could result in a memory leak.
34
35 The agent now clears error references on transaction end, which are not used for later processing. Errors returned from 'axios' requests contain a reference to the request object which deeper down has a handle to a promise in `handleRequestError`. The TraceSegment associated with that promise has a handle to the transaction, which through the error capture ultimately kept the promise in memory and prevented it from being destroyed to free-up the TraceSegment from the segment map. This change also has the benefit of freeing up some memory early for transactions held onto for transaction traces.
36
37* Added active transaction check to `wrappedResEnd` to prevent unecessary work for ended transactions in the case of multiple `Response.prototype.end()` invocations.
38
39### v7.2.0 (2021-03-23)
40
41* Added feature flag to allow disabling of certificate bundle usage.
42
43 **Deprecation Warning:** The certificate bundle included by New Relic will be disabled by default and then fully removed in later major versions. We recommend testing with the certificate_bundle feature flag set to `false` to determine if you will need to modify your environment or setup your own appropriate bundle. Example configuration: `feature_flag: { certificate_bundle: false }`.
44
45* The `NEW_RELIC_NO_CONFIG_FILE` environment variable is no longer needed to run the agent without a configuration file.
46
47 * If a configuration file is used with agent configuration environment variables, the environment variables will override the corresponding configuration file settings.
48
49* Fixed bug where applications with multiple names on a dynamically named host (UUID like) would have instances consolidated, losing per-host breakdowns.
50
51 Removed 'host' from agent 'identifier' override to prevent server safety mechanism from kicking in. Host will still be used to identify unique agent instances, so was unnecessary to include as part of the identifier. This also resulted in additional processing overhead on the back-end. The identifier override is still kept in place with multiple application names to continue to allow uniquely identifying instances on the same host with multiple application names where the first name may be identical. For example `app_name['myName', 'unique1']` and `app_name['myName', 'unique2']`. These names would consolidate down into a single instance on the same host without the identifier override.
52
53* Fixed bug where truncated http (external) or datastore segments would generate generic spans instead of appropriate http or datastore spans.
54
55* Set distributed tracing to enabled in the `newrelic.js` template configuration file supplied with the agent.
56
57* Added module root to shim.require() logging to aid debugging.
58
59* Migrated from .npmignore to 'files' list in package.json to control which files are packaged.
60
61 Thank you to @JamesPeiris for the initial nudge via PR to move in this direction.
62
63* Converted remaining collector unit tests to use tap API.
64
65* Added linting to scripts in /bin folder.
66
67 Linting rules added are slightly more permissive than production rules and allow full ecma 8.
68
69* Added new developer documentation to /docs folder.
70
71 This information is ported over from private GHE wiki used prior to going open source. S/O @astorm for original versions of the function wrapping and module instrumentation docs.
72
73### v7.1.3 (2021-03-09)
74
75* Bumped @grpc/grpc-js to ^1.2.7.
76
77* Removed index-bad-config test which tested a no-longer possible use-case.
78
79* Removed license-key test logic from serverless-harvest test.
80
81 Serverless mode does not require a license key as data transfer is handled by the integration.
82
83* Added support metric to be able to track usage of cert bundle via usage of custom certificates.
84
85* Removed requirement to configure application name when running in AWS Lambda (serverless mode).
86
87 Application name is not currently leveraged by New Relic for Lambda invocations. The agent now defaults the application name in serverless mode to remove the requirement of end-user configuration while handling cases if it were to be leveraged in the future.
88
89* Stopped binding/propagating segments via `setImmediate` for ended transactions.
90
91* Fixed bug where agent would attempt to call the 'preconnect' endpoint on the redirect host returned by the previous 'preconnect' call when reconnecting to the New Relic servers.
92
93 The 'preconnect' calls will now always use the original agent configuration value. Subsequent endpoints (connect, harvest endpoints, etc.) will continue to leverage the new redirect host value returned by 'preconnect.' The original config values are no-longer overridden.
94
95* Fixed issue where a call to `transaction.acceptDistributedTraceHeaders` would throw an error when the `headers` parameter is a string.
96
97* Improved clarity of logging between 'no log file' or disabled agent startup issues.
98
99 * Logs no-config file error to initialized logger (stdout) in addition to existing console.error() logging.
100 * Adds specific message to no config file separate from being disabled.
101
102* Removed aws-sdk versioned test filtering.
103
104* Removed unused Travis CI scripts.
105
106### v7.1.2 (2021-02-24)
107
108* Fixed bug where the agent failed to reconnect to Infinite Tracing gRPC streams on Status OK at higher log levels.
109
110 Node streams require all data be consumed for the end/status events to fire. We were only reading data at lower log levels where we'd use/log the data. This resulted in a failure to reconnect and 'ERR_STREAM_WRITE_AFTER_END' errors. The agent now always listens to the 'data' event, even if not logging, and will also reconnect (with 15 second delay) on any 'ERR_STREAM_WRITE_AFTER_END' error.
111
112* Removed initial harvest send() call on streaming span event aggregator to prevent warning in logs.
113
114* Bumped @newrelic/aws-sdk to ^3.1.0.
115
116### v7.1.1 (2021-02-01)
117
118* Upgrade @grpc/grpc-js to v1.2.5 to fix non-propagation of internal http2 errors
119 Now allows minor and patch auto-updates.
120
121* Added workflow for publishing to npm when a v* tag is pushed to the repo.
122
123* Fixes resolveMx test by using example.com for a valid exchange.
124
125### 7.1.0 (2021-01-05):
126
127* Fixed SQL traces being generated with invalid ID.
128* Fixed log message for minimum supported Node.js version.
129* Added Fastify v3 support.
130* Fixed empty log message for Infinite Tracing connections.
131* Upgraded grpc version.
132* Fixed bug that prevented users from changing Infinite Tracing queue size.
133
134### 7.0.2 (2020-12-01):
135
136* Fixed a bug where the `http.statusCode` attribute was not being captured for an async invoked lambda.
137* Fixed typos in code comments, documentation, and debugging logger messages.
138 Thank you @TysonAndre for the contribution.
139
140### 7.0.1 (2020-11-17):
141
142* Fixed a bug where spans queued up during backpressure situations would be improperly formatted and ultimately dropped when sent to an Infinite Tracing trace observer.
143* Updated @grpc/grpc-js to version v1.2.0.
144* Updated tap to clear up npm audit issues around lodash sub-dependency.
145
146### 7.0.0 (2020-11-09):
147
148* Added official parity support for Node 14
149
150* Dropped Node v8.x support. For further information on our support policy,
151 see: https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.
152 * Removed Node v8.x from CI
153 * Adds check that minimum Node version is >=10 and warns if >=15
154 * Sets Node engine to >=10
155 * **BREAKING** Dropped support for Node v8.x HTTP get() function signature
156 * strictly uses global.URL class in http core instrumentation
157 * removes Nodejs 8.x - 9.x checks
158 * Update New Relic Dependencies to versions with updated Node version support
159 * @newrelic/aws-sdk v3.0.0
160 * @newrelic/koa v5.0.0
161 * @newrelic/native-metrics v6.0.0
162 * @newrelic/superagent v4.0.0
163 * @newrelic/test-utilities v5.0.0
164
165* **BREAKING** Removed deprecated setIgnoreTransaction API method
166
167* **BREAKING** Removed deprecated httpResponseCode, response.status and
168 httpResponseMessage http response attributes
169
170* **BREAKING** Removed the api.custom_parameters_enabled configuration item and
171 associated environment variable NEW_RELIC_API_CUSTOM_PARAMETERS. Please use
172 api.custom_attributes_enabled instead
173
174* **BREAKING** Removed deprecated Distributed Tracing API methods,
175 createDistributedTracePayload() and acceptDistributedTracePayload()
176
177* Finalized removal of ignored_params and capture_params
178
179* Added additional logging to W3C Trace Context header creation
180
181### 6.14.0 (2020-10-28):
182
183* Updated README for consistency.
184
185* Fixed issue where gRPC connection used for infinite tracing could throw if the server
186 shutdown during disconnect of an existing connection.
187
188* Bumped @grpc/grpc-js to 1.1.7.
189
190* Bumped @grpc/proto-loader to ^0.5.5.
191
192* Infinite tracing logging and support metric improvements.
193
194 * Increased logging level of certain infinite tracing / gRPC errors.
195 * Decreased logging interval of dropped span warning for infinite tracing.
196 * Added additional support metrics and logging for infinite tracing.
197
198* Fixed bug where errors would still be collected for transactions with ignored error
199 status codes in certain situations.
200
201* Converted errors ignore unit tests to tap API.
202
203* Added Node 14 to CI test coverage.
204
205 Many thanks to @jgeurts for the contribution.
206
207### 6.13.2 (2020-10-13):
208
209* Removed lodash as a development dependency
210
211* Check for named pipe existence before each flush
212
213 This removes the cached value used in 6.13.1
214
215* Update shim documentation
216
217 Thank you to @ronen-e for the contribution!
218
219### 6.13.1 (2020-09-24):
220
221* Fixed named-pipe check for lambda invocations to avoid race-condition.
222
223 Named-pipe existence will now be checked just prior to first write and then cached.
224
225* Updated README with community-plus header.
226
227* Updated README config copy example.
228
229* Added Open Source Policy workflow.
230
231* Removed repository CoC in favor of centralized CoC at org root.
232
233### 6.13.0 (2020-08-25):
234
235* Added ability for the agent to write to a named pipe, instead of stdout, when in serverless mode.
236
237### 6.12.1 (2020-08-20):
238
239* **Security fix:** Resolves an issue where transaction traces will still capture the request URI when the Node.js agent is configured to exclude the 'request.uri' attribute. This can be problematic for certain customers in environments where sensitive information is included in the URI. See security bulletin [NR20-02](https://docs.newrelic.com/docs/security/new-relic-security/security-bulletins/security-bulletin-nr20-02).
240
241 The request URI will now be excluded from transaction traces if the 'request.uri' attribute has been set to be excluded at either the top-level 'attributes.exclude' configuration or at the 'transaction_tracer.attributes.exclude' configuration.
242
243### 6.12.0 (2020-08-11):
244
245* Fixes obfuscation of SQL queries with large data inserts.
246Special thanks to Tomáš Hanáček (@tomashanacek) for tracking down the issue and providing the fix.
247* On failed instrumentation, prevent multiple requires from re-wrapping shims.
248Special thanks to Ryan Copley (@RyanCopley) for the contribution.
249* Upgrade `async` to `v3.2.0`. Special thanks to Yohan Siguret (@Crow-EH) for the contribution
250* Bumped `@newrelic/native-metrics` to `^5.3.0`.
251* Bumped `@newrelic/aws-sdk` to `^2.0.0`.
252* Bumped `node-test-utilities` to `^4.0.0`.
253* Bumped `@newrelic/superagent` to `^3.0.0`.
254* Bumps `@newrelic/koa` to `^4.0.0`.
255* Updated `SECURITY.md` with coordinated disclosure program link.
256* Updated guidelines and templates for contributing to the project.
257
258### 6.11.0 (2020-07-07):
259
260* Updated to Apache 2.0 license
261* Added CODE_OF_CONDUCT.md file
262* Streamlined README.md file
263* Updated CONTRIBUTING.md file
264* Added additional guidance to bug report template
265* Added copyright headers to all source files
266* Added Distributed Tracing option to config file used for first time customers
267* Converted some test files to Node-tap
268* Removed "hidden" and unused code injector diagnostic capability
269* Upgraded @grpc/grpc-js from 1.0.4 to 1.0.5
270
271### 6.10.0 (2020-06-22):
272
273* Additional Transaction Information applied to Span Events
274 * When Distributed Tracing and/or Infinite Tracing are enabled, the Agent will now incorporate additional information from the Transaction Event on to the currently available Span Event of the transaction.
275 * The following items are affected:
276 * `aws-lambda` related attributes
277 * `error.message`
278 * `error.class`
279 * `error.expected`
280 * `http.statusCode`
281 * `http.statusText`
282 * `message.*`
283 * `parent.type`
284 * `parent.app`
285 * `parent.account`
286 * `parent.transportType`
287 * `parent.transportDuration`
288 * Request Parameters `request.parameters.*`
289 * `request.header.*`
290 * `request.method`
291 * `request.uri`
292 * Custom Attributes
293 * Custom transaction attributes added via `API.addCustomAttribute` or `API.addCustomAttributes` will now be propagated to the currently active span, if available.
294 * **Security Recommendation:**
295 * Review your Transaction Event attributes configuration. Any attribute include or exclude setting specific to Transaction Events should be applied to your Span Attributes configuration or global attributes configuration. Please see [Node.js agent attributes](https://docs.newrelic.com/docs/agents/nodejs-agent/attributes/nodejs-agent-attributes#configure-attributes) for more on how to configure.
296* Upgraded @grpc/grpc-js from 1.0.3 to 1.0.4
297* Modified redis callback-less versioned test to use `commandQueueLength` as indicator redis command has completed and test can continue. This is in effort to further reduce these test flickers. Additionally, added wait for client 'ready' before moving on to tests.
298* Updated force secret test runs to run on branch pushes to the main repository.
299
300### 6.9.0 (2020-06-08):
301
302* Added AWS API Gateway V2 Support to lambda instrumentation.
303
304* Added 'transaction.name' intrinsic to active span at time transaction name is finalized.
305
306 This enables finding transaction name for traces that may not have a matching transaction event.
307
308* Added 'error.expected' attribute to span active at time expected error was noticed.
309
310* Dropped errors earlier during collection when error collection is disabled.
311
312 Error attributes will no longer show up on spans when error collection has been disabled. Other unnecessary work will also be avoided.
313
314* Removed allocation of logging-only objects used by transaction naming when those log levels are disabled.
315
316* Upgraded escodegen from 1.12.0 to 1.14.1.
317
318* Upgraded readable-stream from 3.4.0 to 3.6.0.
319
320* Upgraded @grpc/proto-loader from 0.5.3 to 0.5.4.
321
322* Converted facts unit test to use tap API.
323
324* Converted transaction 'finalizeName...' unit tests to use tap API.
325
326* Added several items to .npmignore to prevent accidental publishing.
327
328* Fixed Redis client w/o callback versioned test flicker.
329
330 Doesn't end transaction until error encountered. Increases wait time for first operation which has to complete for the second operation to be successful.
331
332### 6.8.0 (2020-05-21):
333
334* Bumped @newrelic/native-metrics to ^5.1.0.
335
336 Upgraded nan to ^2.14.1 to resolve 'GetContents' deprecation warning with Node 14. This version of the native metrics module is tested against Node 14 and includes a pre-built binary download backup for Node 14.
337
338* Added whitespace trimming of license key configuration values.
339
340 Previously, when a license key was entered with leading or trailing whitespace, it would be used as-is and result in a validation failure. This most commonly occurred with environment variable based configuration.
341
342* Moved to GitHub actions for CI.
343
344* Updated PR template and added initial issue templates.
345
346* Converted most of the collector API unit tests to use the tap API. Split larger test groupings into their own test files.
347
348### 6.7.1 (2020-05-14):
349
350* Added synthetics headers to transaction event intrinsics for DT
351
352* Fixed stale comment documentation with regards to segment recording
353
354### 6.7.0 (2020-05-06):
355
356* Added a configurable-length span queue to Infinite Tracing:
357 infinite_tracing.span_events.queue_size.
358
359 The queue length can be modified to balance the needs of keeping full traces
360 against trade-off of memory usage and CPU overhead in a high-throughput
361 application.
362
363* Fixed issue where API.instrumentLoadedModule could throw an exception when it
364 failed.
365
366 Error details will now be caught and logged.
367
368* Resolved non-proxy minimist security warnings by bumping dependencies.
369
370 These updates only impact development dependencies. Thank you to @devfreddy for
371 the contribution.
372
373 * Updated minimist sub-deps to resolve most related security warnings.
374 * Updated tap to resolve remaining tap security warnings.
375 * Updated @newrelic/proxy.
376
377* Updated remaining /api unit tests to use tap API.
378
379* Updated @grpc/grpc-js to v1.0.3.
380
381### 6.6.0 (2020-04-20):
382
383* Added support for [Infinite Tracing on New Relic
384 Edge](https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/enable-configure/enable-distributed-tracing).
385
386 Infinite Tracing observes 100% of your distributed traces and provides
387 visualizations for the most actionable data so you have the examples of errors
388 and long-running traces so you can better diagnose and troubleshoot your systems.
389
390 You configure your agent to send traces to a trace observer in New Relic Edge.
391 You view your distributed traces through the New Relic’s UI. There is no need to
392 install a collector on your network.
393
394 Infinite Tracing is currently available on a sign-up basis. If you would like to
395 participate, please contact your sales representative.
396
397* Added `function_version` to lambda metadata payload.
398
399 This is pulled from an invocation's `context.functionVersion` value.
400
401### 6.5.0 (2020-03-18):
402
403* Added error attributes to spans.
404 * The public api method `noticeError()` now attaches exception details to the currently executing
405 span. Spans with error details are now highlighted red in the Distributed Tracing UI. Also, the
406 attributes `error.class` and `error.message` are added to the span. If multiple errors are
407 recorded for a single span, only the final error's attributes will be added to the span.
408
409 * Added ID of the span in which an error occurred to the corresponding transaction error event.
410
411* Added new public API methods `addCustomSpanAttribute` and `addCustomSpanAttributes` to add
412 attributes to the currently executing span.
413
414* Added new attributes to http outbound spans: `http.statusCode` and `http.statusText`.
415
416* Updated W3C Trace Context "Known Issues and Workaround" notes with latest accurate consideration.
417
418* Converted unit tests to run via `tap`. Removes `mocha` dependency.
419
420* Fixed route naming when hapi's `pre` route handlers share functions.
421
422* Fixed `child_process` instrumentation so that handlers can be effectively removed
423 when attached via `.once()` or manually removed via `removeListener()`.
424
425### 6.4.2 (2020-02-27):
426
427* Support new http[s] get/request function signature in Node v10+
428
429* Added the following Span Event attributes:
430 - http.statusCode
431 - http.statusText
432
433 The above attributes will be replacing the following *deprecated* attributes:
434 - httpResponseCode
435 - response.status
436 - response.statusMessage
437
438 The deprecated attributes will be removed with the next major release of the Agent.
439
440* Updates version check to be in alignment with [our stated support
441 policy](https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent)
442 and the version constraints in package.json
443
444* Redacts individual certificates configuration values before sending to server
445 settings. When configured, these values will now appear like: `{certificates.0: ****}`.
446
447### 6.4.1 (2020-02-20):
448
449* Bumped `@newrelic/aws-sdk` version to `v1.1.2` from `v1.1.1`.
450 https://github.com/newrelic/node-newrelic-aws-sdk/blob/master/CHANGELOG.md
451
452 Notable improvements include:
453 * Fixed issue where instrumentation would crash pulling `host` and `port` values
454 when `AmazonDaxClient` was used as the service for `DocumentClient`.
455
456* Prevented passing CI with `.only()` in mocha tests.
457
458* Removed CI restriction for Node `12.15`. Node shipped a fix for the `12.16`
459 breakage in `12.16.1`.
460
461* Removed calls to `OutgoingMessage.prototype._headers` in favor of using public
462 `getHeaders` API (thanks to @adityasabnis for bringing this to our attention).
463
464* Removed engine upper-bound to enable easier experimentation of newer Node versions
465 with the agent for customers.
466
467 Please see https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent for officially supported versions.
468 Incompatibilities are expected for odd-numbered releases, which are not supported,
469 and even-numbered releases before "official" support has been released.
470
471* Reduced "... Aggregator data send." log messages to `debug` level to reduce noise
472 of default logs.
473
474* Fixed issue where disabled agent would return an empty string instead of an empty
475 object from API#getLinkingMetadata().
476
477 This issue would cause the `@newrelic/winston-enricher` module to crash when
478 attempting to inject log metadata.
479
480* Reduced logging level of raw `x-queue-start` or `x-request-start` header values
481 to avoid logging very large values at default logging levels.
482
483### 6.4.0 (2020-02-12):
484
485* Added support for W3C Trace Context, with easy upgrade from New Relic trace
486 context.
487
488 * Distributed Tracing now supports W3C Trace Context headers for HTTP protocols
489 when distributed tracing is enabled. Our implementation can accept and emit both
490 the W3C trace header format and the New Relic trace header format. This simplifies
491 agent upgrades, allowing trace context to be propagated between services with older
492 and newer releases of New Relic agents. W3C trace header format will always be
493 accepted and emitted. New Relic trace header format will be accepted, and you can
494 optionally disable emission of the New Relic trace header format.
495
496 * When distributed tracing is enabled with `distributed_tracing.enabled: true`,
497 the Node agent will now accept W3C's `traceparent` and `tracestate` headers when
498 calling `TransactionHandle#acceptDistributedTraceHeaders` or automatically via
499 `http` instrumentation. When calling `Transaction#insertDistributedTraceHeaders`,
500 or automatically via `http` instrumentation, the Node agent will include the W3C
501 headers along with the New Relic distributed tracing header, unless the New Relic
502 trace header format is disabled using `distributed_tracing.exclude_newrelic_header:true`.
503
504 * Added `TransactionHandle#acceptDistributedTraceHeaders` API for accepting both
505 New Relic and W3C TraceContext distributed traces.
506
507 Deprecated `TransactionHandle#acceptDistributedTracePayload` which will be removed
508 in a future major release.
509
510 * Added `TransactionHandle#insertDistributedTraceHeaders` API for adding outbound
511 distributed trace headers. Both W3C TraceContext and New Relic formats will be
512 included unless `distributed_tracing.exclude_newrelic_header: true`.
513
514 Deprecated `TransactionHandle#createDistributedTracePayload` which will be removed
515 in a future major release.
516
517 Known Issues and Workarounds
518
519 * If a .NET agent is initiating distributed traces as the root service, you must update
520 that .NET agent to version `8.24` or later before upgrading your downstream Node
521 New Relic agents to this agent release.
522
523* Pins Node 12 version to `v12.15` to avoid breakages with `v12.16.0` until cause(s)
524 resolved.
525
526* AWS Lambda Improvements
527
528 * Fixed issue where lambda invocation errors were not noticed in Node 10 or Node 12 environments.
529 * Added collection of additional AWS Lambda event source meta data.
530 * Added event type detection for lambda invocation events.
531 * Expanded ARN harvest to include ALB and CloudWatch.
532
533* Improved Transaction and Trace ID generation.
534
535* Updated publish-docs script to use `npm run` instead of `make`.
536
537### 6.3.0 (2020-01-27):
538
539* Bumped `@newrelic/aws-sdk` to `v1.1.1` from `v1.0.0`.
540 https://github.com/newrelic/node-newrelic-aws-sdk/blob/master/CHANGELOG.md
541 Notable improvements include:
542 * Added official support for API promise calls, fixing two critical bugs.
543 * Added check before applying instrumentation to avoid breaking for very old
544 versions.
545
546* Added `bindPromise()` to `Shim` prototype for direct usage by instrumentation.
547 Previously, `_bindPromise()` was a private function in the `Shim` module.
548
549* Fixed spelling in configuration error.
550 Thank you to David Ray (@daaray) for the contribution.
551
552* Fixed long-log truncation issue in Serverless mode.
553
554* Updated language in agent to be in line with New Relic Standards.
555
556### 6.2.0 (2019-11-25):
557
558* Upgraded `tap` to resolve `handlebars` audit warnings.
559
560* Added `getLinkingMetadata()` method to the API.
561
562 This new method can be used to retrieve the identifying information for the
563 agent and current active span and trace. Please consult [the documentation](https://docs.newrelic.com/docs/agents/nodejs-agent/api-guides/nodejs-agent-api#getLinkingMetadata)
564 for more information.
565
566* Added `getTraceMetadata()` to the agent API.
567
568 This new method can be used to retrieve the current active Distributed Tracing
569 span and trace ids. Please consult [the documentation](https://docs.newrelic.com/docs/agents/nodejs-agent/api-guides/nodejs-agent-api#getTraceMetadata)
570 for more information.
571
572* Added an `isSampled()` method to `Transaction` and `TransactionHandle`.
573
574 This new method can be used to retrieve the sampling decision made for a given
575 transaction. Please consult [the documentation](https://docs.newrelic.com/docs/agents/nodejs-agent/api-guides/nodejs-agent-api#transaction-handle-isSampled)
576 for more information.
577
578### 6.1.0 (2019-11-05):
579
580* `@newrelic/native-metrics` module is defaulted to disabled in serverless mode.
581
582 This can reduce lambda cold-start times by up to 170ms. The `native-metrics` module
583 can rarely load in serverless environments due to differences from build environment to
584 deployed environment and offers little value in a serverless environment.
585
586* Added env var `NEW_RELIC_NATIVE_METRICS_ENABLED` to enable/disable the
587 native-metrics module
588
589* Added a test for querying poolCluster.of()
590
591* Removed unused `mysql` bootstrap test code.
592
593* Increased timeout for `index-bad-version` test to reduce flickers on Node 12.
594
595* Changed file modification to leverage `writeFile` for `watchFile` test. This
596 triggers the watcher in a reasonable amount of time much more consistently.
597
598* Added `@newrelic/aws-sdk` module to agent for auto-include on install.
599
600* Added splitting of application name using semicolons in the env var.
601
602* Removed testing of Bluebird 3.7 on Node v10 until they fix [the segfault
603 issue](https://github.com/petkaantonov/bluebird/issues/1618).
604
605* Instrumented `connection.execute` for `mysql2`.
606
607* Added HTTP method to segment attributes for external requests.
608
609* Updated the `bin/ssl.sh` such that it uses verbose output, will exit on first
610 error code, and will refuse to proceed with LibreSSL (which can't generate certs).
611
612* Added a `clear` sub-command to `bin/ssl.sh` that will allow developers to quickly
613 remove generated ssl/cert files and regenerate (useful is switch between platforms
614 via containers/docker and certs needs to be regenerated)
615
616### 6.0.0 (2019-10-29):
617
618* Added official parity support for Node 12.
619 * Exception: Errors resulting in unhandled rejections will no longer be scoped to the
620 transaction that was active when the rejected promise was created.
621
622 As of node 12, the promise responsible for triggering the init async hook will
623 no longer be passed through on the promise wrap instance. This breaks the linkage
624 used to relate a given promise rejection to the transaction it was scheduled in.
625
626* **BREAKING** Removed support for Node 6, 7, and 9.
627
628 The minimum supported version is now Node v8. For further information on our
629 support policy, see:
630 https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.
631
632 * Bumped version of `@newrelic/superagent` instrumentation to `v2.0.0`.
633 * Bumped version of `@newrelic/native-metrics` to `v5.0.0`.
634
635* **BREAKING** Bumped version of `@newrelic/koa` instrumentation to `v3.0.0`
636 `@newrelic/koa` update includes changes to transaction naming in addition to
637 dropping Node versions 6, 7, and 9. See `@newrelic/koa`release notes for what was
638 included in `v2.0.0` and `v3.0.0` updates. https://github.com/newrelic/node-newrelic-koa/blob/master/NEWS.md.
639
640* **BREAKING** `max_samples_stored` behavior has changed to replace
641 `max_samples_per_minute`. `max_samples_per_minute` is no longer a configuration
642 parameter.
643
644 The new behavior for `max_samples_stored` is as follows: "The agent will collect
645 all events up to this number per minute. If there are more than that, a statistical
646 sampling will be collected." This usage of the configuration is consistent with
647 other agents.
648
649 If your application has previously used `max_samples_per_minute` as an upper bound,
650 you may need to lower the threshold to a valid maximum to avoid data being dropped
651 on the server. No larger than 10k is recommended.
652
653* Updated utilization callback test to point to a host that can't represent a valid
654 provider. Previously, location where CI provider runs tests could cause test to
655 fail.
656
657* Added support for `Promise.allSettled()` method in Bluebird 3.7.
658
659* Bumped `mongodb` dev dependency past security warning.
660
661* Fixed `mongodb` versioned tests so they are self-contained by using version under
662 test for setup/teardown instead of agent dev-dependency version.
663
664* Forced filename resolution if not already cached on module load. This should not
665 occur in normal/non-test scenarios but provides a fall-back to maintain
666 functionality.
667
668* Refactored `restify` versioned tests to be less dependent on the order of asynchronous
669 operations.
670
671* Updated README to reference Pug rather than Jade.
672
673### 5.13.1 (2019-10-10):
674
675* Added back generation of entity stats logging and uninstrumented support metric
676 generation on metric harvests.
677
678* Removed legacy harvest code from main agent.
679
680* Updated `https-proxy-agent` to v3 for security fix.
681
682 Shoutout to @asturur for the contribution.
683
684* Added diagnostic code injector.
685
686 The agent may now be configured to make transaction state checks via code
687 injection. This may be turned on by setting `code_injector.diagnostics.enabled`
688 to `true`. While this option is enabled, code around async boundaries will be added
689 to track transactions, and log a message when they are not properly reinstated.
690
691* Fixed bug where `API.shutdown()` would not properly harvest when configured to.
692
693* `primary_application_id` now defaults to 'Unknown' in serverless mode to allow
694 Distributed Tracing to function correctly when `NEW_RELIC_PRIMARY_APPLICATION_ID`
695 is not defined.
696
697* Upgraded `tap` to latest version
698
699* Upgraded `mocha` to latest version.
700
701* Adds `--exit` flag to mocha test runs to prevent infinite runs on CI.
702
703* Fixed bug where multiple agent restarts would cause the number of 'stopped'
704 listeners to exceed limit.
705
706* Fixed inconsistent async return from collector API.
707
708 This could result in an infinite loop due to attempting to merge before clearing.
709 *This bug should not have impacted normal agent runs but was uncovered for certain
710 test cases.*
711
712* Fixed tests that leave work scheduled on the event loop.
713
714* Fixed issue that could result in vendor utilization detection failure.
715 As a part of this fix, the request that hits the timeout will immediately abort
716 instead of hanging around for the default timeout.
717
718### 5.13.0 (2019-10-01):
719
720* Same as 5.12.0
721
722### 5.12.0 (2019-10-01):
723
724* Now supports Restify 7 and 8.
725
726* Distributed Tracing is now enabled by default in serverless mode.
727
728* Maximum event limits are now enforced by the server. This includes
729 a new maximum of 10000 transaction events per minute.
730
731* Harvesting is now completed by individually scheduled harvesters per data type.
732
733* Bumps tap version to move beyond handlebars audit warning.
734
735* Bumps `restify` dev dependency past audit warning.
736
737* HTTPS connections to New Relic now use a keep alive HTTP-Agent.
738
739* Drops old odd-numbered node versions that are no longer supported by node from
740 travis testing.
741
742* Fixed bug where segment reference on the outbound request was enumerable.
743
744* Fixed bug where incorrect config information was sent to New Relic.
745
746* Updated Mocha and Docker links in CONTRIBUTING.md.
747
748* The agent will now end/serialize transactions in the event of an uncaught
749 exception while operating in serverless mode.
750
751### 5.11.0 (2019-07-29):
752
753* Implements Expected and Ignored Errors functionality
754
755* Bumps jsdoc and lodash dev dependency to avoid upstream vulnerability warning.
756
757* Added support for scoped package name introduced in hapi v18 (@hapi/hapi).
758
759 This will provide functionality at parity with instrumentation for hapi v17. Any
760 new features may not yet be supported.
761
762 Huge shoutout to Aori Nevo (@aorinevo) for this contribution.
763
764* Fixed bug where agent would count errors towards error metrics even if they were
765 dropped due to the error collector being disabled.
766
767* The agent will now properly track cached paths to files in loaded modules on Node
768 versions >10.
769
770 As of Node v11, the path to a file in a module being loaded will only be resolved
771 on the first load; subsequent resolution of that file will use a cached value.
772 The agent records this resolved path and uses it for relative file look ups in
773 order to deep link into modules using `Shim#require`. Since the agent couldn't
774 reliably get at the path on the subsequent calls to require, it now replicates
775 the caching logic and hold onto the resolved path for a given file.
776
777* Adds detailed logging through harvest/collector code to increase supportability.
778
779### 5.10.0 (2019-06-11):
780
781* The agent now allows installation on node v11 and v12.
782
783 This change relaxes the engines restriction to include Node v11 and v12. This does
784 not constitute official support for those versions, and users on those versions
785 may run into subtle incompatibilities. For those users who are interested in
786 experimenting with the agent on v11 and v12, we are tracking relevant issues
787 here: https://github.com/newrelic/node-newrelic/issues/279.
788
789* Lambda invocations ended with promises will now be recorded properly.
790
791 Previously, the lambda instrumentation was not intercepting the promise
792 resolution/rejection returned from a lambda handler. The instrumentation now
793 properly observes the promise, and ends the transaction when the promise has
794 finished.
795
796* Lambda invocations will only attempt to end the related transaction a single time.
797
798 In the event of two lambda response events (e.g. callback called, and a promise
799 returned), the agent would attempt to end the transaction twice, producing an
800 extraneous empty payload. The agent now limits itself to a single end call for
801 a given transaction.
802
803* The agent will now properly end transactions in the face of uncaught exceptions
804 while in serverless mode.
805
806* Enables ability to migrate to Configurable Security Policies (CSP) on a per agent
807 basis for accounts already using High Security Mode (HSM).
808
809 When both HSM and CSP are enabled for an account, an agent (this version or later)
810 can successfully connect with either `high_security: true` or the appropriate
811 `security_policies_token` configured. `high_security` has been added as part of
812 the preconnect payload.
813
814### 5.9.1 (2019-05-28):
815
816* moved third party notices to `THIRD_PARTY_NOTICES.md`
817
818* Shim#require will now operate as expected.
819
820 Previously, the module interception code made the faulty assumption that a module's
821 filepath would be resolved before the module load call was invoked. This caused
822 the wrap filepath to be attributed to the modules being instrumented. This meant
823 that attempted relative require calls using Shim#require would resolved from the
824 incorrect path. The logic has been changed to keep a stack of the resolved
825 filepaths, resolving the issue.
826
827* Updates error message for license check to indicate all places that need to be
828 updated.
829
830* Shim#wrapReturn now uses ES6 proxies to wrap its methods.
831
832 This will accurately propagate look up and assignment onto the underlying wrapped
833 function, while maintaining all previous functionality.
834
835* Updated versioned test configurations to reflect current engine support.
836
837### 5.9.0 (2019-05-20):
838
839* Removed older versions of Cassandra from versioned tests
840
841* For debug/test runs, shimmer will now cleanup the __NR_shim property on
842 instrumented methods. This leftover property did not result in any negative
843 behaviors but cleaning up for thoroughness and to prevent potential confusion.
844
845* `serverless_mode` feature flag is now enabled by default.
846
847* Fixes `recordMiddleware` promise parenting for certain cases where child segments
848 are created within resolving middleware `next()` promises.
849
850* Added `instrumentLoadedModule` function to the API, allowing end-users to manually
851 apply an instrumentation to a loaded module. Useful for cases where some module
852 needs to be loaded before newrelic
853
854### 5.8.0 (2019-05-06):
855
856* Modifies `MiddlewareSpec` route property to allow functions. Defers route
857 processing and segment naming until just before needed (each middleware
858 invocation).
859
860* Fixed outdated `license` ref in `package.json`.
861
862* Middleware instrumentation now honors `spec.appendPath` for more cases and will
863 not pop paths when it has not appended a path.
864
865### 5.7.0 (2019-04-24):
866
867* Added `getStatusName` to `NameState`.
868
869 Now web transactions will be named after known status code messages (404, 405,
870 and 501).
871
872* Broke apart `integration` script test globs.
873
874* Added `appendPath` option to MiddlewareSpec.
875
876### 5.6.4 (2019-04-16):
877
878* Refactored config to log warning and disable distributed tracing if enabled in
879 serverless mode, but missing required config setting.
880
881* Serverless mode no longer sets different data collection limits.
882
883* The agent will no longer crash the process in the event of unexpected calls to
884 the harvest callback.
885
886* Updated required config values when using distributed tracing in `serverless_mode`
887 to only include `account_id`.
888
889### 5.6.3 (2019-04-01):
890
891* The agent will now accurately filter out request parameters while operating under
892 CSP or HSM.
893
894 You can find more information about this change here:
895 https://docs.newrelic.com/docs/using-new-relic/new-relic-security/security-bulletins/security-bulletin-nr19-02
896
897### 5.6.2 (2019-03-25):
898
899* Agent now respects attribute type restrictions on trace/segment attributes, as
900 well as error event/trace attributes.
901
902* Fixes potential for `RangeError: Maximum call stack size exceeded` error on
903 Transaction/Trace end.
904
905* Custom events no longer accept attributes with invalid types.
906
907 The only attribute types accepted by the backend are `boolean`, `string`, and
908 `number`; any attribute assigned to a custom event outside these types would be
909 dropped on ingest. The agent now filters these attributes out, and logs out a
910 helpful message detailing the issue.
911
912### 5.6.1 (2019-03-11):
913
914* Updated log message for not adding attributes and change the log level to debug.
915
916* Fixed an issue where exclusive time would be improperly calculated in some cases.
917
918### 5.6.0 (2019-03-04):
919
920* Added `product` attribute to existing datastore instrumentations.
921
922* Added `db.collection` to datastore span event attributes.
923
924* `trusted_account_key`, `account_id`, and `primary_application_id` may now be
925 configured via a configuration file while in serverless mode.
926
927* Fixed a bug where data belonging to distributed traces starting in the Node.js
928 agent would be prioritized over data produced from traces starting in other
929 language agents.
930
931 Previously, the agent would use the same random number for both the transaction
932 priority (used for data sampling) and the Distributed Tracing trace sampling
933 decision (whether to create DT data for a given transaction). This random number
934 reuse resulted in a bias that caused data from distributed traces started in the
935 Node.js agent to be prioritized above data that belongs to distributed traces
936 started in other language agents. The agent now makes individual rolls for each
937 of these quantities (i.e. the transaction priority and trace sampling decision),
938 eliminating the bias.
939
940* Optimized exclusive time duration calculator.
941
942 Previously, the agent would spend a lot of time sorting redundant arrays while
943 calculating the exclusive time for the segments of a trace. This has been
944 refactored into a single postorder traversal over the tree which will calculate
945 the exclusive time for all segments in the subtree rooted at a given segment.
946
947* Prevent a split on undefined location under certain conditions in Memcached.
948
949 Special thanks to Ben Wolfe (@bwolfe) for this fix!
950
951### 5.4.0 (2019-02-19):
952
953* Fixed issue where `shim.createSegment()` could result in modifying the parent
954 when opaque.
955
956* Fixed issue where `http-outbound` would modify parent segments when parent is
957 opaque.
958
959* Moved processing of exclusive time attribute out of `toJSON` and into `finalize`
960 to only be calculated once.
961
962 Previously, serializing a segment would result in calculating and caching exclusive
963 time which could result in issues if serialized prior to ending.
964
965* Added `SNS` to message shim library names.
966
967* Added check for `collect_span_events` in config sent from the server on connect.
968
969 Collection of span events can be disabled from the server configuration, but not
970 enabled.
971
972* Refactored `Segment#toJSON` to be more readable.
973
974* Added a `try/catch` to config initialization to safely handle invalid setting
975 combinations.
976
977 When an error is caught the agent is marked as disabled, which ultimately returns
978 a stub API and keeps the process running.
979
980* String truncation is now done using a binary search over the byte length of the
981 string.
982
983 Previously this truncation was done using a linear search for the proper byte
984 length.
985
986* Optimized segment and span attribute filtering.
987
988### 5.3.0 (2019-02-12):
989
990* Added `span_events` and `transaction_segments` attribute destinations.
991
992 Span event and segment attributes can now be filtered using the same
993 include/exclude config rules as other types. See [agent attribute
994 configuration](https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration#node-js-attributes)
995 for more details.
996
997* Added `metadata` field to connect payload, for collecting
998 `NEW_RELIC_METADATA_`-prefixed environment variables.
999
1000* Added DynamoDB to datastores.
1001
1002* Added `opaque` option to datastore operation spec.
1003
1004* Added Kubernetes utilization detection.
1005
1006* Upgraded `concat-stream` and `readable-stream` to next major version.
1007
1008 These modules had previously been held back due to support for Node <6. Since
1009 v5.0.0 we dropped that support thus enabling these updates.
1010
1011* Added SQS as a supported messaging library name.
1012
1013* Fixed opaque segment functionality for `message-shim.recordProduce`.
1014
1015* Fixed opaque segment functionality for `message-shim.recordConsume`.
1016
1017* Enabled tracking of callback via `message-shim.recordConsume` when no
1018 messageHandler provided.
1019
1020* Replaced `make` rules with npm scripts.
1021
1022* The agent will now consistently harvest in all response cases when in serverless
1023 mode.
1024
1025 Previously, the agent's harvest was in a race with process suspension in the event
1026 of an uncaught exception, or responding without calling a callback. A synchronous
1027 harvesting process is now used to circumvent this racing issue.
1028
1029* Fixed issue with socket connection errors causing the agent to stop attempting
1030 to connect at startup.
1031
1032### 5.2.1 (2019-01-28):
1033
1034* Fixed bug where agent would stop sending data to New Relic servers when a
1035 connectivity issue was encountered.
1036
1037* Removed installation of Oracle container test scripts.
1038
1039* Replaced explicit `config.high_security === true` checks with general truthiness
1040 checks.
1041
1042 The agent will now treat any truthy value in the `high_security` config setting
1043 as if it is enabled.
1044
1045* Fixed unit test with incorrect usage of cross application tracing.
1046
1047### 5.2.0 (2019-01-23):
1048
1049* Upgraded to `@newrelic/native-metrics` v4.
1050
1051* Removed outdated config files.
1052
1053* Removed old, outdated examples.
1054
1055* Fixed an issue where old CAT headers would be injected while distributed tracing
1056 was enabled.
1057
1058 This would happen if both `cross_application_tracing.enabled` and
1059 `distributed_tracing.enabled` were set to `true` and an instrumentation disabled
1060 tracing for an outbound request.
1061
1062* Fixed access to `ConglomerateShim` in `shimmer`.
1063
1064* Added Neptune to the known database names.
1065
1066* Updated log messages for missing configuration files to point at the base
1067 configuration.
1068
1069 Previously the log messages pointed at an internal file defining default values
1070 for every configuration.
1071
1072### 5.1.0 (2019-01-16):
1073
1074* Added new shim type: `ConglomerateShim`
1075
1076 This shim class is useful for instrumenting modules which implement several service
1077 interfaces of different types.
1078
1079* Disabled logging by default when serverless_mode is enabled. Please note
1080 serverless/lambda monitoring is not yet officially released.
1081
1082* `null` trace attribute values are no longer sent to New Relic.
1083
1084 This change brings the Node agent in alignment with the behavior of other language
1085 agents.
1086
1087### 5.0.0 (2019-01-08):
1088
1089* Dropped support for Node versions less than 6.
1090
1091* Agent no longer creates transactions when in a `stopped`, `stopping` or `errored`
1092 state.
1093
1094* Removed public API methods that have been deprecated since Agent v2:
1095 `createTracer`, `createWebTransaction`, `createBackgroundTransaction`, and
1096 `addCustomParameter`/`(s)`. See the [Migration
1097 Guide](https://github.com/newrelic/node-newrelic/blob/master/Migration%20Guide.md)
1098 for more information.
1099
1100* Flagged `API#setIgnoreTransaction` as deprecated; `TransactionHandle#ignore`
1101 should be used instead.
1102
1103* Released several feature flags. These flags are no longer used:
1104
1105 - `feature_flag.custom_instrumentation`
1106 - `feature_flag.custom_metrics`
1107 - `feature_flag.synthetics`
1108 - `feature_flag.native_metrics`
1109
1110* Added `plugins.native_metrics.enabled` configuration value.
1111
1112 This configuration value controls the use of the `@newrelic/native-metrics` module.
1113 When set to `false` the agent will not attempt to load that module.
1114
1115* Custom metrics recorded via `recordMetric` and `incrementMetric` API calls now
1116 automatically have the name prepended with `'Custom/'`. Usages of these APIs that
1117 manually prepend with `'Custom/'` will need to remove the manually specified one
1118 or will end up with metrics prepended with `'Custom/Custom/'`.
1119
1120* Dropped support for `node-cassandra-cql`.
1121
1122* Removed from `ignore_server_configuration` config setting.
1123
1124* Removed deprecated configuration settings `capture_params` and `ignored_params`.
1125
1126* The agent will no longer cause a stack overflow when logging at trace level to
1127 stdout.
1128
1129 Previously, the agent would inadvertently trigger a trace level log from its trace
1130 level log (through wrapping a nextTick call), causing a stack overflow. The agent
1131 now detects this case and aborts the nested call.
1132
1133### 4.13.0 (2018-12-20):
1134
1135* Fixed clearing of active harvest via `_stopHarvester()`.
1136
1137* Fixed handling of harvest endpoints when not all fail.
1138
1139* Added agent state "connecting" to indicate when handshake with New Relic servers
1140 is starting. This can be triggered on startup and restarts.
1141
1142* Added `--no-package-lock` to `unit` and `integration` rules.
1143
1144* Released `protocol_17` feature flag.
1145
1146* The agent now reacts to failed New Relic requests based on response code, as
1147 opposed to parsing an exception message in the response body.
1148
1149* Replaced `nsp` with `npm audit` in security checks.
1150
1151* Collector now specify `application/json` content-type when data is compressed
1152 instead of `octet-stream`.
1153
1154* Bumped ecmaVersion in test .eslintrc to 8
1155
1156### 4.12.0 (2018-12-03):
1157
1158* Converted error handling in `CollectorAPI` and `RemoteMethod` to callbacks.
1159
1160 Previously many of the errors were thrown. For consistency with async errors,
1161 these are now handed to the callback instead of thrown. The old behavior could
1162 result in a crash under a few circumstances, such as when the agent exceeded a
1163 configured maximum payload size. These errors came from `RemoteMethod._safeRequest`.
1164 Since these errors are handed to the callback instead of thrown, this bug is no
1165 longer a potential.
1166
1167* Added IP address collection and forwarding of metadata headers for upcoming
1168 protocol 17.
1169
1170 These features are currently behind the `protocol_17` feature flag until all
1171 parts of protocol 17 are implemented.
1172
1173* Refactored harvest interactions in preparation for protocol 17 status codes.
1174
1175### 4.11.0 (2018-11-15):
1176
1177* Changed totalTime attribute to be in decimal seconds instead of milliseconds for
1178 transaction events.
1179
1180* Agent no longer produces spans on ignored transactions.
1181
1182 Previously, the agent would produce distributed tracing span events regardless
1183 of the ignored status of the transaction the events originated from.
1184
1185* Extended Restify instrumentation to mark possible transaction names in order to
1186 account for async response methods.
1187
1188* Added `protocol_17` feature flag.
1189
1190 Flag will be removed and protocol will be hard-coded to `17` once functionality
1191 is released on New Relic backend.
1192
1193* Added switch statement indenting standard to eslintrc
1194
1195* This release also includes changes to the agent to enable monitoring of Lambda
1196 functions. If you are interested in learning more or previewing New Relic Lambda
1197 monitoring please email lambda_preview@newrelic.com.
1198
1199* Introduced "warn" level 2 space rule to eslintrc
1200
1201* Updated `hapi@16` versioned tests to only run on Node 6 and above.
1202
1203* Upgraded `@newrelic/test-utilities` to v2.
1204
1205* Pinned mysql2 to `<1.6.2` in versioned tests.
1206
1207* Added `waitForIdle` option to `API#shutdown`.
1208
1209 This new option will make the agent wait for all active transactions to finish
1210 before actually shutting down. This does not pre-empt creation of new transactions,
1211 so care must be taken to ensure the active transaction pool drains or the agent
1212 will never shut down.
1213
1214### 4.10.0 (2018-11-01):
1215
1216* Added `DatastoreShim#getDatabaseNameFromUseQuery`
1217
1218 This new method can be used to extract the database name from `USE` SQL queries.
1219
1220* Added link to CONTRIBUTING.md file in README.md
1221
1222 Thanks to Yuri Tkachenko (@tamtamchik) for the contribution.
1223
1224* Added VS Code settings to git ignore.
1225
1226* Fixed bug preventing Distributed Tracing (DT) from fully functioning when Cross
1227 Application Tracing (CAT) was disabled.
1228
1229* The agent will no longer break express routers in the case of using regex paths
1230 in a list.
1231
1232 Previously, the agent would overwrite the regex with the source of the regex. The
1233 agent now makes a copy of the route array and mutates that instead.
1234
1235* Attributes will now be properly propagated to PageView events.
1236
1237 The agent may now be configured to pass attributes along to the browser agent.
1238 The attributes that match the include/exclude rules in the
1239 `browser_monitor.attributes` section will now be placed on PageView events.
1240
1241* Renames better-cat integration test organization to be distributed-tracing and
1242 updated some test verbiage to use DT or distributed tracing instead of CAT or
1243 cross application tracing.
1244
1245### 4.9.0 (2018-10-01):
1246
1247* Updated DT payload creation to use `primary_application_id` from connect response.
1248
1249* Added protection against functions with modified prototypes in `shim.applySegment`.
1250
1251* Replaced SQL ID hash generation algorithm with SHA1 instead of MD5 to allow usage
1252 in FIPS compliant environments.
1253
1254* Leveraged 16 hex digits for creation of SQL ID.
1255
1256* Fixed `codec.decode()` callback bug that would re-call a callback with an error
1257 thrown within the callback.
1258
1259* Added `superagent` as built-in instrumentation.
1260
1261 This instrumentation just maintains transaction state when using the `superagent`
1262 module to make HTTP requests with either callbacks or promises.
1263
1264* Updated `noticeError` API method to be partially functional in High Security Mode.
1265
1266 In HSM, any custom attributes will be ignored, but the error will still be tracked.
1267 This brings the Node agent in line with the behavior of other language agents.
1268
1269* Upgraded ejs module to get rid of Github security warnings. The ejs module was
1270 only used for tests and not in main agent code.
1271
1272* Fixed bug requiring Cross Application Tracing (CAT) to be enabled for Distributed
1273 Tracing (DT) `createDistributedTracePayload` and `acceptDistributedTracePayload`
1274 APIs to function. DT configuration will no longer consider CAT configuration.
1275
1276* Changes DT payload configuration log messages to debug level as it is not uncommon
1277 for calls to occur before server configuration has been retrieved.
1278
1279* Converted `net` instrumentation to use shim api.
1280
1281* Converted child_process instrumentation to newer shim style.
1282
1283* Converted Timers instrumentation to newer shim style.
1284
1285* Fixed bug in wrap() that would fail to wrap callbacks if the callback index was 0.
1286
1287* Added `PromiseShim` class for instrumenting promise libraries.
1288
1289* Support for setting `transaction_tracer.transaction_threshold` to 0 has been added.
1290
1291* The agent now respects `NEW_RELIC_TRACER_THRESHOLD`.
1292
1293 Previously, this environment variable was stored as a string. The environment
1294 variable is now stored as a float.
1295
1296* Converted zlib instrumentation to use shim API.
1297
1298### 4.8.1 (2018-08-27):
1299
1300* Converted File System instrumentation to use newer shim style.
1301
1302* Agent instrumentation will no longer interfere with promisification of core
1303 methods.
1304
1305 Some core methods expose pre-promisified versions of the methods as a reference
1306 on the method itself. When instrumenting these methods, it neglected to forward
1307 these references onto the wrapper function. Now the instrumentation will properly
1308 forward property look ups to the original method.
1309
1310* Converted DNS instrumentation to newer shim style.
1311
1312* Added tracking of callbacks to DNS instrumentation.
1313
1314* Converted crypto instrumentation to newer shim style.
1315
1316* Updated domains instrumentation to use an instrumentation shim.
1317
1318* Refactored the global instrumentation to use the shim API.
1319
1320* Ported inspector instrumentation to use an instrumentation shim.
1321
1322* Ported async_hooks based promise instrumentation over to using shims.
1323
1324* Added shim types for core instrumentations.
1325
1326* Fixed outbound https call to use example.com to resolve integration test issue.
1327
1328* Fixed tests for ioredis 4.0.0 and above.
1329
1330* Improved benchmark comparison output.
1331
1332* Added `http` benchmark tests.
1333
1334### 4.8.0 (2018-08-13):
1335
1336* Added JSON-formatted output to benchmarks to enable automated benchmark comparison.
1337
1338* Updated the benchmark runner to measure specifically userland CPU overhead.
1339
1340* Added DatastoreShim benchmarks.
1341
1342* Fixed MongoDB instrumentation for driver versions greater than 3.0.6.
1343
1344 Mongo 3.0.6 removed metadata the Agent relied upon to instrument the driver. This
1345 fixes that by going back to the old method of manually listing all objects and
1346 methods to instrument.
1347
1348* Implemented enforcement of `max_payload_size_in_bytes` config value.
1349
1350 Any payload during the harvest sequence that exceeds the configured limit will
1351 be discarded.
1352
1353* Updated MySQL versioned tests to run against the latest release.
1354
1355### 4.7.0 (2018-07-31):
1356
1357* Added support for distributed tracing.
1358
1359 Distributed tracing lets you see the path that a request takes as it travels
1360 through your distributed system. By showing the distributed activity through a
1361 unified view, you can troubleshoot and understand a complex system better than
1362 ever before.
1363
1364 Distributed tracing is available with an APM Pro or equivalent subscription.
1365 To see a complete distributed trace, you need to enable the feature on a set of
1366 neighboring services. Enabling distributed tracing changes the behavior of some
1367 New Relic features, so carefully consult the [transition guide](https://docs.newrelic.com/docs/transition-guide-distributed-tracing) before
1368 you enable this feature.
1369
1370 To enable distributed tracing, set `distributed_tracing.enabled` to `true` in
1371 your `newrelic.js` file, or set `NEW_RELIC_DISTRIBUTED_TRACING_ENABLED` in your
1372 environment.
1373
1374* Added a warning for too-new versions of Node.js during agent startup.
1375
1376* Appropriately obfuscated SQL statements will now be included in all transaction
1377 traces.
1378
1379 Previously, the agent would only include the SQL statements if the corresponding
1380 query was sufficiently slow.
1381
1382* Added ability to execute instrumentation functions in the context of the segment
1383 the segment descriptor is describing.
1384
1385 All `record*` methods supplied by all instrumentation shim classes now allow for
1386 a function to be executed under the context of the segment the record call will
1387 produce. This may be done by supplying a function in the `inContext` key for the
1388 segment descriptor passed to the record method.
1389
1390* Reservoirs will now respect setting their size to 0.
1391
1392### 4.6.0 (2018-07-24):
1393
1394* Added full support for Node v10.
1395
1396* Added instrumentation for `crypto.scrypt`.
1397
1398* Added instrumentation for `fs.realpath.native`.
1399
1400* Added instrumentation for `process.setUncaughtExceptionCaptureCallback`.
1401
1402* Updated tests to use `asyncResource.runInAsyncScope` instead of `emitBefore` and
1403 `emitAfter`
1404
1405* Pulled `distributed_tracing` config value from behind `feature_flag`.
1406
1407### 4.5.1 (2018-07-18):
1408
1409- The agent will now properly remerge event data on collection failure.
1410
1411 Previously, the agent wouldn't observe the correct format for remerging, causing
1412 undefined events to be pushed into the reservoir.
1413
1414### 4.5.0 (2018-07-16):
1415
1416* Feature flags may now be set from environment variables.
1417
1418 Using the naming convention `NEW_RELIC_FEATURE_FLAG_<feature flag name in upper
1419 case>`.
1420
1421* Transaction events may be harvested in two payloads now.
1422
1423 This change reduces the occurrence of harvests being rejected due to large
1424 payloads. Payloads will only be split when they are large (greater than 1/3 the
1425 maximum).
1426
1427* Updated Hapi v17 instrumentation to wrap `server` export, in addition to `Server`.
1428
1429* `ROOT` segment no longer turns into a span event.
1430
1431* Fixed span collection when transactions are `sampled=false`.
1432
1433* Removed `grandparentId` from spans.
1434
1435### 4.4.0 (2018-07-12):
1436
1437* Added config `utilization` env vars to the `BOOLEAN_VARS` set.
1438
1439 This ensures that if these boolean config values are set outside of a config file,
1440 their values are respected, particularly when they are disabled.
1441
1442* Replaced `trusted_account_ids` array with `trusted_account_key`.
1443
1444* Added node v10 to the test matrix.
1445
1446* Converted distributed trace `x-newrelic-trace` header name to `newrelic`.
1447
1448* Added support for different transport types in distributed tracing.
1449
1450* Added more tests around priority/sampled attributes on traces and events.
1451
1452* Lazily calculate transaction priority only when needed.
1453
1454* Transaction priority is now truncated to 6 decimal places on generation.
1455
1456* Adaptive sampling now uses the `sampling_target` and
1457 `sampling_target_period_in_seconds` configuration values.
1458
1459 With these configurations, the adaptive sampling window is separated from the
1460 harvest window.
1461
1462* Removed `nr.tripId` attribute from distributed trace intrinsics.
1463
1464* Default span events to enabled.
1465
1466 These are still protected behind `feature_flag.distributed_tracing` which defaults
1467 to `false`.
1468
1469### 4.3.0 (2018-07-09):
1470
1471* Added `nonce` option for `newrelic.getBrowserTimingHeader()`
1472
1473 This allows people to pass in a string to be injected as the `nonce` property of
1474 the generated script tag. Special thanks to João Vieira (@joaovieira) for
1475 contributing this feature!
1476
1477* Added check to mark Hapi `'onPreResponse'` extensions as error handlers.
1478
1479 Previously, the agent was unable to mark any Hapi errors as handled, even if they
1480 were, resulting in inaccurate reporting. This change assumes that `'onPreResponse'`
1481 extensions act as error handlers, so errors are only reported if they persist to
1482 the final response.
1483
1484* Expose the External segment on the `http` request instance for outbound calls.
1485
1486### 4.2.1 (2018-07-02):
1487
1488* Fixed issue with tracking external requests to default ports.
1489
1490 Special thanks to Ryan King for pinpointing the cause of this issue.
1491
1492* Added extra check for handling arrays of functions when wrapping middleware
1493 mounters.
1494
1495 This fixes a bug with the agent incorrectly assuming that arrays passed as the
1496 first argument in middleware would only contain route paths, causing a fatal error.
1497
1498* The agent now reports the total time of the transaction on transaction events.
1499
1500* Added more tests for transaction naming with Restify.
1501
1502### 4.2.0 (2018-06-19):
1503
1504* Refactored harvest cycle into separate class.
1505
1506 This refactoring eases managing harvested data and re-merging unharvested values
1507 on failure.
1508
1509* Added seen/sent/dropped supportability metrics for all event collections.
1510
1511* Updated `WebFrameworkShim` to handle arrays of routes when wrapping middleware
1512 mounters.
1513
1514 Previously, a transaction that hit a shared middleware (eg, `app.use(['/one',
1515 '/two'], ...)`) would always be tagged with `<unknown>` in its name, due to the
1516 agent not interpreting arrays of paths. Now transaction names will include all
1517 paths for a shared middleware, comma-delimited, followed by the current route
1518 (`'WebTransaction/Expressjs/GET//one,/two/one'`).
1519
1520* Added an option for using the `finally` method on promises for instrumentation.
1521
1522 The promise instrumentation would use `Promise#finally` if available. This change
1523 is in response to Node v10 promises calling `then` inside their `finally` method,
1524 which caused infinite recursion in the agent's promise instrumentation.
1525
1526* No longer download gcc on test suites that do not require it.
1527
1528* Added `url` parameter to `http` external segments.
1529
1530* Renamed request parameters on external segments.
1531
1532 Previously these were named just the parameter name (e.g. `/foo?bar=baz` would
1533 become the parameter `"bar": "baz"`). Now they are prefixed with
1534 `request.parameter`. (e.g. `"request.parameter.bar": "baz"`).
1535
1536* Added `EventAggregator` base class.
1537
1538 The `ErrorAggregator` class was refactored and most generic event aggregation
1539 logic was moved to the new `EventAggregator` class.
1540
1541* Added `SpanEvent` and `SpanAggregator` classes.
1542
1543* Added Span event generation to the trace `end` method.
1544
1545* Added Span events to harvest cycle steps.
1546
1547### 4.1.5 (2018-06-11):
1548
1549* Make `require()` statements explicitly reference `package.json` as a `.json` file.
1550
1551 This solves a problem when requiring/importing newrelic from a Typescript file.
1552 Thanks @guyellis for the submission!
1553
1554* Check if `process.mainModule.filename` exists before using in missing config file
1555 check.
1556
1557 When the agent is preloaded with Node's `--require` flag, `mainModule` is not yet
1558 defined when the agent checks for a config file, resulting in a `TypeError` in
1559 the event that no config file exists. Defaulting to the file path being executed
1560 in `process.argv` ensures that the app will not crash when preloaded without a
1561 config file.
1562
1563* Updated dev dependency `tap` to v12.0.1.
1564
1565* Fixed identification of errors with express.
1566
1567 Previously the call `next('router')` was considered an error. This is actually
1568 valid usage of express and will no longer generate an error.
1569
1570* Removed `debug.internal_metrics` configuration.
1571
1572 This legacy debug configuration was never used since trace-level logging provides
1573 everything this did and more.
1574
1575* Upgraded optional dependency `@newrelic/native-metrics` to v3.
1576
1577 With this update comes pre-built binaries for Node 5 and 7. GC metrics are also
1578 now aggregated in C++ until the agent is ready to harvest them instead of hopping
1579 into JS for each event.
1580
1581* Added additional checks to `uninstrumented` ensuring that files with names
1582 matching instrumented modules do not result in a false uninstrumented status.
1583
1584 For example, some users load config/env info before the agent. In that case, a
1585 file responsible for exporting DB config information (`config/redis.js`), may
1586 result in a false `uninstrumented` status, because the agent would interpret
1587 `redis.js` as the module itself.
1588
1589* Moved `computeSampled` call to `Transaction` constructor.
1590
1591 Previously it was only called in `createDistributedTracePayload`, but this
1592 gives all transactions a `sampled` value, and potentially a boosted priority.
1593
1594### 4.1.4 (2018-06-04):
1595
1596* Transaction stubs are now created properly in `api#getTransaction`
1597
1598 During a refactor to use classes for the `TransactionHandle` class, the
1599 `TransactionHandleStub` was converted into a class. This change in interface
1600 wasn't reflected in the use around the agent and would pass back the class
1601 instead of an instance.
1602
1603 Big shoutout to Roy Miloh (@roymiloh) for submitting the fix to this!
1604
1605* Upgraded dev dependency `chai` to version 4.
1606
1607### 4.1.3 (2018-05-29):
1608
1609* Fixed metric merging when using `debug.internal_metrics`.
1610
1611 The debug metrics cache would cause timestamps for harvested metrics to get stuck
1612 at agent startup. This will no longer happen, and the debug cache is reset each
1613 harvest.
1614
1615* Modularlized configuration constants to improve readability.
1616
1617* Added `distributed_tracing` feature flag.
1618
1619* Added `acceptDistributedTracePayload` method to `Transaction`.
1620
1621* Added `createDistributedTracePayload` method to `Transaction`.
1622
1623* Updated `Agent#recordSupportability` to not include `Nodejs/` in the default metric name.
1624
1625* Added distributed tracing methods to `TransactionHandle`.
1626
1627* Added distributed tracing cases for `http` and `other` metric recorders.
1628
1629* Implemented `_addDistributedTraceInstrinsics` on `Transaction`.
1630
1631 If the `distributed_tracing` feature flag is enabled, the agent will ignore old
1632 CAT attributes in favor of distributed trace–related ones.
1633
1634* Added integration tests around better CAT functionality.
1635
1636### 4.1.2 (2018-05-22):
1637
1638* Fixed access to properties on promisified methods.
1639
1640 Thanks to John Morrison (@jrgm) for pointing this out and providing a
1641 reproduction.
1642
1643* Updated use of `fs.unlink` without a callback to `fs.unlinkSync`.
1644
1645 As of Node v10, the callback is [no longer optional](https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_unlink_path_callback), which was causing a false
1646 test failure.
1647
1648### 4.1.1 (2018-05-14):
1649
1650* Logger no longer tries to create very large log messages.
1651
1652 When a message is created that would be too large to log, a process warning is
1653 emitted.
1654
1655* Optimized `unhandledRejection` reporting when using `async_hooks`.
1656
1657* The agent no longer resizes the metric timeslice start time to be the earliest
1658 start time of the transactions that finish during the timeslice.
1659
1660* Replaced all uses of `util._extend` with `Object.assign`.
1661
1662* Background transactions created may now be named through `API#setTransactionName`.
1663
1664 Previously, the agent didn't respect the transaction naming precedence for
1665 background transactions. Background transaction naming behavior is now in line
1666 with web transaction behavior.
1667
1668* Completed TODOs regarding the Node 0.10 and 0.12 deprecation.
1669
1670* Added PriorityQueue serialization benchmarks.
1671
1672* Added check for a route prefix when wrapping Hapi route handlers.
1673
1674 Previously, route prefixes specified via plugin options weren't being included
1675 in transaction names. Now, if the agent finds a route prefix associated with a
1676 given realm, it is prepended to the route path in the transaction name.
1677
1678* The agent will now respect event count limits when merging data from a failed send.
1679
1680 Previously, when merging data into an event pool the agent wouldn't maintain the
1681 size limit of the reservoir.
1682
1683### 4.1.0 (2018-04-23):
1684
1685* Updated logic around wrapping route handlers when `config` object is present.
1686
1687 Before, the agent would only attempt to wrap `config.handler` when any `config`
1688 object was present, without defaulting to the root `handler` if it didn't exist.
1689
1690* Added `PriorityQueue` class for collecting events.
1691
1692 This replaces the `Reservoir` class for event sampling. Using priority sampling
1693 allows the agent to maintain randomness across a given time period while
1694 improving the chances that events will be coordinated across Transaction, Error,
1695 and Custom event pools.
1696
1697* The agent will now allow external instrumentation modules to fail in a safe way.
1698
1699 Previously, the agent would stop running if an externally loaded instrumentation
1700 failed for any reason. Due to the way external instrumentations can be updated
1701 independently, the agent should allow them to fail and carry on after logging a
1702 warning.
1703
1704* Added the `strip_exception_messages.enabled` config option.
1705
1706 The agent can now be configured to redact error messages on collected errors.
1707
1708* Added the `attributes.include_enabled` config option.
1709
1710 The agent can now be configured to disallow attribute include patterns to be
1711 specified.
1712
1713### 4.0.0 (2018-04-12):
1714
1715* BREAKING: Updated the version of `https-proxy-agent` to v2.x - Dropped support
1716 for v0.10 and v0.12 of node.
1717
1718 The version of `https-proxy-agent` used in the agent has a known security
1719 issue you can read about here: https://snyk.io/vuln/npm:https-proxy-agent:20180402
1720 In order to resolve this issue, the dependency had to be updated to at least
1721 v2.2.0, which only supported node versions >=4. The update to this dependency
1722 forces the incompatibility of the agent with versions 0.10 and 0.12 of Node.
1723
1724 In order to use use the Node.js agent, please upgrade node to version >=4, or you can
1725 continue to use the agent on Node versions 0.10 and 0.12 by pinning the agent
1726 to v3.
1727
1728 You can read more about the issue here: https://docs.newrelic.com/docs/using-new-relic/new-relic-security/security-bulletins/security-bulletin-nr18-08
1729
1730### 3.3.1 (2018-04-10):
1731
1732* Added a type check to attribute validation, restricting values to primitive types
1733 (but not `undefined`).
1734
1735 Previously the agent was only enforcing byte limits on string values, resulting
1736 in overly large arrays being collected. This brings the agent in line with other
1737 language agents.
1738
1739* The `DatastoreShim` will now respect specified `after` handlers.
1740
1741 Previously on methods like `DatastoreShim#recordQuery` the `after` handler would
1742 be dropped. The property is now correctly propagated to the underlying
1743 `Shim#record` call.
1744
1745* The agent will now check that a specified parent segment is part of an active
1746 segment before running a method under instrumentation.
1747
1748 Previously the agent would unconditionally run a method under a specified
1749 parent. The shim expects the parent to exist and be active, and will throw
1750 errors in the case where the parent belongs to an inactive transaction.
1751
1752### 3.3.0 (2018-03-27):
1753
1754* Added `newrelic.startSegment()` which replaces `newrelic.createTracer()`.
1755
1756 This new API method allows you to create custom segments using either callbacks
1757 or promises.
1758
1759* Fixed bug in `pre` route config option in Hapi instrumentation.
1760
1761 Only applies to Hapi v16 and below. The `pre` handler wrapping was not properly
1762 returning in cases when the element was a string referring to a registered server
1763 method, and as a result these elements would be replaced with `undefined`.
1764
1765### 3.2.0 (2018-03-14):
1766
1767* Added [`@newrelic/koa`](https://github.com/newrelic/node-newrelic-koa) as a
1768 dependency.
1769
1770 This introduces instrumentation for **Koa v2.0.0** or higher. It will be treated
1771 as first-party instrumentation within the agent, but publishing it as a
1772 separate module allows it to be installed independently according to users' needs.
1773
1774* Refactored instrumentation hooks to work with modules.
1775
1776 With this change it is now possible to link against external instrumentation
1777 modules.
1778
1779### 3.1.0 (2018-03-13):
1780
1781* Promise based web framework middleware instrumentation now supports callback
1782 based sequencing.
1783
1784 Previously, a promise based middleware was assumed to continue to the next
1785 middleware once the promise it returned resolved. This assumption has been
1786 relaxed to allow for a callback to be supplied to the middleware to invoke the
1787 next middleware.
1788
1789### 3.0.0 (2018-03-06):
1790
1791* Removed the `ssl` configuration option.
1792
1793 TLS is now always used in communication with New Relic Servers. The `ssl`
1794 configuration value and `NEW_RELIC_USE_SSL` environment value are no longer
1795 used. Setting either value to anything other than `true` will result in a
1796 warning.
1797
1798* Security bulletin [NR18-05](https://docs.newrelic.com/docs/accounts-partnerships/new-relic-security/security-bulletins/security-bulletin-nr18-06):
1799
1800 Fixes issue introduced in 2.8.0 where the agent may have captured all
1801 transaction attributes, even with High Security Mode enabled on the account.
1802 This may have included sensitive data attached to transactions.
1803
1804* All request parameters now prefixed with `request.parameters.`.
1805
1806 Previously request parameters such as route and query parameters were added
1807 as attributes without any name changes. For example `/foo?bar=value` would add
1808 the attribute `bar` to the transaction. Now this attribute would be named
1809 `request.parameters.bar`.
1810
1811 Any Insights dashboards, alerts, or other NRQL queries using these attributes
1812 must be updated to use the new attribute names.
1813
1814### 2.9.1 (2018-03-05):
1815
1816* Security bulletin [NR18-05](https://docs.newrelic.com/docs/accounts-partnerships/new-relic-security/security-bulletins/security-bulletin-nr18-06):
1817
1818 Fixes issue introduced in 2.8.0 where the agent may have captured all
1819 transaction attributes, even with High Security Mode enabled on the account.
1820 This may have included sensitive data attached to transactions.
1821
1822* Removed support for agent attributes include/exclude rules.
1823
1824 These will be coming back in Node Agent v3.0.0. The fix for the above security
1825 bulletin required a backwards incompatible change to our attributes.
1826
1827* Fixed bug in Bluebird instrumentation.
1828
1829 Some methods were not instrumented correctly. This would cause a problem if a
1830 function was passed to these methods.
1831
1832 Special thanks to Andreas Lind (@papandreou) for helping us find this bug.
1833
1834### 2.9.0 (2018-02-27):
1835
1836* Added the `WebFrameworkShim#savePossibleTransactionName` method.
1837
1838 This method may be used to mark the current running middleware as a potential
1839 responder. `savePossibleTransactionName` should be used if a middleware can't
1840 be determined to be a terminal middleware while it executes, but may be
1841 responsible for responding after execution has finished.
1842
1843* Fixed `dns.resolve` results assertion.
1844
1845* Added check for `parentSegment` in `async_hooks` instrumentation, to help
1846 ensure that transaction context is maintained.
1847
1848* Expanded `async_hooks` tests around maintain transaction context.
1849
1850* Added Koa to metric naming objects.
1851
1852* Added `callback` prop to `middlewareWithPromiseRecorder` return spec.
1853
1854 While we aren't actually wrapping any callback, this is a workaround that gives
1855 us access to the active segment. This ensures that all segments inside Koa
1856 transaction traces are named correctly, particularly in cases when transaction
1857 context may be lost.
1858
1859* Updated `after` prop in `middlewareWithPromiseRecorder` return spec to set
1860 `txInfo.errorHandled = true` in cases when there is no error.
1861
1862 Because Koa has no concept of errorware in the same sense as Express or Connect
1863 (`(err, req, res, next)`), the agent now assumes if a middleware resolves, any
1864 error that may have occurred can be marked as handled.
1865
1866* Upgraded `tap` dev dependency to v10.
1867
1868* Added a check for the function's prototype in `shim#wrapReturn`.
1869
1870 The agent used to throw if a function with no prototype was passed into
1871 `wrapReturn`, then `bind` was called on the wrapper.
1872
1873### 2.8.0 (2018-02-21):
1874
1875* Added instrumentation support for MongoDB version 3.
1876
1877 Version 3 of [mongodb](https://npmjs.org/package/mongodb) is now supported.
1878 Previously datastore host information (instance metrics) was incorrectly
1879 captured by the agent with `mongodb` v3. This has been fixed and all features
1880 should be functional now.
1881
1882* Enable certain agent attributes when high security mode is enabled.
1883
1884 During the switch from the old `capture_params`/`ignored_params` to the new
1885 attribute include/exclude rules, high security mode was over-zealous in what
1886 attributes it disallowed. This has been trimmed back to be in line with other
1887 agents.
1888
1889* Updated documentation for `apdex_t` setting and removed environment variable.
1890
1891 This was never configurable on client side and the documentation was misleading.
1892
1893* Documented environment variables for `slow_sql` configurations.
1894
1895 Thanks to Olivier Tassinari (@oliviertassinari) for the update!
1896
1897* Updated `hapi/hapi-pre-17/package.json` to run `errors.tap.js` in more versions.
1898
1899* Added internal cache to unwrapped core modules for agent use.
1900
1901* Improved logging around environment facts gathering.
1902
1903### 2.7.1 (2018-02-08):
1904
1905* Change `attributes.enabled` to `true` by default.
1906
1907 In the previous version we defaulted this to `false` to maintain parity with
1908 `capture_params` which defaulted to `false`. However, this is a invalid parity
1909 because `attribute.enabled` controls more attributes than `capture_params`.
1910
1911* The agent will no longer generate browser data for ignored transactions.
1912
1913* Removed unnecessary checks around `Timer.unref()` calls.
1914
1915 `unref` has been supported since Node v0.9, meaning it will always be present
1916 in timers set by the agent (with 0.10 being the earliest supported version).
1917
1918* Expanded Hapi instrumentation to support route [`pre` handlers](https://github.com/hapijs/hapi/blob/v16/API.md#route-prerequisites).
1919
1920 This is a Hapi route config option that was previously uninstrumented, causing
1921 transaction names to become invalid. This expanded instrumentation ensures
1922 that all additional handlers are wrapped and associated with the main route.
1923
1924* Added a split in the node versions for the `mysql2` and `cassandra` versioned
1925 tests.
1926
1927 As of `mysql2` v1.3.1 and `cassandra` v3.4.0 the minimum supported version of
1928 Node is 4.
1929
1930* Replaced as many instances of `{}` as possible with `Object.create(null)`.
1931
1932* Removed extraneous logger arg in `addCustomAttribute` call.
1933
1934### 2.7.0 (2018-02-01):
1935
1936* Added agent attribute filtering via include and exclude rules.
1937
1938 Agent attributes can now be controlled using fine grained include and exclude
1939 rules. These rules, described below, replace `capture_params` and
1940 `ignored_params`. Any attributes listed in `ignored_params` will be migrated
1941 to `attributes.exclude` internally, unless `attributes.exclude` is explicitly
1942 set.
1943
1944 There are three new configuration properties added to the root config and
1945 each destination (more on destinations later). These new configurations are:
1946
1947 * `attributes.enabled` - Enables collection of attributes for the destination.
1948 * `attributes.include` - A list of attributes or wildcard rules to include.
1949 * `attributes.exclude` - A list of attributes or wildcard rules to exclude.
1950
1951 The include and exclude rules can be exact rules (for example
1952 `request.headers.contentLength`), or wildcard rules which match just the
1953 beginning of attribute keys (for example `request.headers.*` would match any
1954 request header).
1955
1956 These rules can be specified globally at the root of the configuration, or
1957 for specific destinations. These destinations are:
1958
1959 * `transaction_tracer` - Controls transaction trace attributes.
1960 * `transaction_events` - Controls transaction event attributes.
1961 * `error_collector` - Controls error event attributes.
1962 * `browser_monitoring` - Controls browser/RUM transaction attributes.
1963
1964* Renamed `addCustomParameter` to `addCustomAttribute`.
1965
1966 The `addCustomParameter` method is now deprecated and will be removed in a
1967 future release of the agent. The `addCustomAttribute` method is a drop-in
1968 replacement for it.
1969
1970* Added cache to agent attribute filtering.
1971
1972 To minimize the overhead of applying attribute rules, the agent caches results
1973 of filtering specific attribute keys and destinations. The cache is limited to
1974 1000 destination-key pairs by default but can be configured with
1975 `attributes.filter_cache_limit`. This cache offers a 10x improvement for
1976 applying filter rules for cache-hits.
1977
1978* Added limits for agent attributes to keep monitoring overhead down.
1979
1980 Attribute keys and values are limited to 255 bytes each. Keys which are larger
1981 than 255 bytes are dropped, and a warning message is logged. Values larger
1982 than 255 bytes are truncated to 255 bytes, respecting multi-byte UTF-8
1983 encoding. Custom attributes are limited to 64 per transaction. Attributes
1984 beyond the 64th are silently ignored.
1985
1986* Added `allow_all_headers` to config options and updated `http` instrumentation.
1987
1988 When set to `true`, the agent will collect all request headers. This collection
1989 respects the agent attribute include and exclude rules. A default set of
1990 exclusion rules are provided in `newrelic.js`. These rules exclude all cookies
1991 and authentication headers.
1992
1993* The agent will no longer crash when `crypto.DEFAULT_ENCODING` has been changed.
1994
1995 Previously, the agent would assume the result of `hash.digest()` was an
1996 instance of a Buffer. If `crypto.DEFAULT_ENCODING` is changed, `hash.digest()`
1997 will return a string and the agent would crash. The agent now ensures that
1998 the value is a Buffer instance before moving on.
1999
2000* Renamed `request_uri` attribute to `request.uri`.
2001
2002 This brings the attribute name in line with all other request attributes.
2003
2004* Updated `https-proxy-agent` dependency from `^0.3.5` to `^0.3.6`.
2005
2006* Updated versioned tests where applicable to ensure most minor versions of
2007 instrumented modules work as expected.
2008
2009* Fixed stalling test for v1 line of Mongo driver.
2010
2011* Added tests verifying Hapi 404 transactions result in correctly named metrics.
2012
2013 The Hapi instrumentation was doing the correct thing, but we did not have tests
2014 for this specific case.
2015
2016* Fixed error if `process.config.variables.node_prefix` missing.
2017
2018 If `process.config.variables.node_prefix` is falsey (which can happen if using
2019 electron, leading to this issue https://discuss.newrelic.com/t/new-relic-on-electron-nodejs/53601)
2020 the `getGlobalPackages` function in `lib/environment.js` will give an err when
2021 it shouldn't.
2022
2023 Thanks to Jarred Filmer (@BrighTide) for the fix!
2024
2025* Segments may now be flagged as opaque, causing internal segments to be omitted
2026 from the transaction trace.
2027
2028* Added error to collector connection failure log message.
2029
2030### 2.6.1 (2018-01-18):
2031
2032* Fixed naming bug in Restify instrumentation regarding parameters to `next`.
2033
2034 The instrumentation previously considered any truthy value passed to `next` to
2035 be an error. It is possible to pass a string or boolean to `next` in Restify
2036 to control further routing of the request. This would cause the middleware's
2037 mounting path to be erroneously appended to the transaction name.
2038
2039* Fixed access to `bluebird.coroutine.addYieldHandler`.
2040
2041 This was accidentally not copied by our instrumentation making access to the
2042 function fail. This has been resolved and tests expanded to ensure no other
2043 properties were missed.
2044
2045* Added regression test for promise instrumentation and stack overflows.
2046
2047### 2.6.0 (2018-01-09):
2048
2049* Fixed a crashing error in the hapi instrumentation.
2050
2051 When recording the execution of an extension listening to a server event
2052 (e.g. 'onPreStart') the agent would crash due to the lack of a `raw` property
2053 on the first argument passed to the extension handler. The agent now checks
2054 the event before wrapping the extension handler, and checks for the existence
2055 of the `raw` property before attempting to dereference off it.
2056
2057* Fixed an incompatibility with the npm module `mimic-response`.
2058
2059 The agent's HTTP instrumentation previously did not play well with the way
2060 `mimic-response` copied properties from an `http.IncomingMessage`. This caused
2061 modules that relied on that, such as `got`, to hang.
2062
2063* Refactored promise instrumentation.
2064
2065 This new instrumentation is far more performant than the previous and
2066 maintains a more sensible trace structure under a wider range of sequences.
2067
2068* Added `transaction_tracer.hide_internals` configuration.
2069
2070 This configuration controls the enumerability of the internal properties the
2071 agent. Making these properties non-enumerable can have an impact on the
2072 performance of the agent. Disabling this option may decrease agent overhead.
2073
2074* Added concurrent environment scanning, limited to 2 reads at a time.
2075
2076 This improves the performance of dependency scanning at agent startup,
2077 allowing the agent to connect to our services more quickly.
2078
2079* Refactored instrumentation tests to run against wide range of module versions.
2080
2081 Instrumentation tests will be run against all supported major versions of
2082 every instrumented module. For releases, we will test against every supported
2083 minor version of the modules. This vastly improves our test coverage and
2084 should reduce the instances of regressions for specific versions of modules.
2085
2086* Added tests for _all_ of bluebird's promise methods.
2087
2088 These tests ensure that we 100% instrument bluebird. Some gaps in
2089 instrumentation were found and fixed. Anyone using bluebird should upgrade.
2090
2091* Fixed naming rule testing tool to use same url scrubbing as the agent itself.
2092
2093### 2.5.0 (2018-01-03):
2094* Added hapi v17 instrumentation
2095
2096 Hapi v17 added support for promise-based middleware which broke transaction
2097 tracking in the agent. This caused issues in naming, as the agent will name
2098 the transaction after the path to the middleware that responded to a request.
2099
2100* Added instrumentation for `vision@5`
2101
2102 Due to the way `vision` is mounted to the hapi server when using hapi v17.x,
2103 the agent's instrumentation would not pick up on the middleware being mounted.
2104 This new instrumentation now correctly times rendering done in the `vision`
2105 middleware.
2106
2107* Added `unwrapOnce` method to shim object
2108
2109 This new method can be used to unwrap a single layer of instrumentation.
2110 `unwrapOnce` is useful in cases where multiple instrumentations wrap the same
2111 method and unwrapping of the top level is required.
2112
2113* Added `isErrorWare` checks around `nameState.appendPath`/`nameState.popPath`
2114 calls to avoid doubling up paths in transaction names
2115
2116 Previously, the agent would append its transaction name with the path fragment
2117 where an error handler middleware was mounted. The extraneous path fragment
2118 will now be omitted, and the transaction will be named properly after the
2119 middleware that threw the error.
2120
2121* Added `parent` property to webframework-shim segment description
2122
2123* Added support for pg-latest on Node 5 or higher
2124
2125* Fixed creating supportability metric when mysql2 goes uninstrumented.
2126
2127* Added a `segmentStack.pop`to the middleware `after` in cases when an error is
2128 caught and there is no next handler
2129
2130* Fixed determining parents for middleware segments when transaction state is
2131 lost and reinstated
2132
2133* Refactored existing hapi instrumentation for different `server.ext()`
2134 invocations
2135
2136* Refactored webframework-shim `_recordMiddleware` to construct different
2137 segment descriptions for callback- or promise-based middleware
2138
2139* Added check to `_recordMiddleware` to avoid prepending a slash if original
2140 `route` is an array
2141
2142* Changed logic in http instrumentation to attach `response.status` to the
2143 transaction as a string
2144
2145* Updated `startWebTransaction` and `startBackgroundTransaction` to add nested
2146 transactions as segments to parent transactions
2147
2148* Updated `node-postgres@^6` versioned tests to avoid deprecation warning on
2149 direct module `connect` and `end` calls
2150
2151* Fixed running domain tests on Node 9.3.0.
2152
2153* Improved logging for CAT headers and transaction name-state management.
2154
2155* All `json-safe-stringify` calls now wrapped in `try/catch`
2156
2157* Removed `lib/util/safe-json`
2158
2159### 2.4.2 (2017-12-12):
2160* Added Peter Svetlichny to the contributors list!
2161
2162* Optimized `NameState#getPath`.
2163
2164* Optimized `shim.record`.
2165
2166* Optimized `shim.recordMiddleware`.
2167
2168* Upgraded `eslint` to v4.
2169
2170* Fixed parsing SQL for queries containing newlines.
2171
2172### 2.4.1 (2017-11-28):
2173* Added promise benchmarks to test non-async_hooks instrumentation.
2174
2175* Added logging for external calls made outside of a transaction.
2176
2177* Added logging for when `unhandledRejection` is noticed.
2178
2179* Improved performance of creating and merging metrics.
2180
2181* Improved performance of `tracer.bindFunction`.
2182
2183* Moved `require` calls for vendor metadata to module-level.
2184
2185* Removed try-catch around internal property setting on older versions of Node.
2186
2187### 2.4.0 (2017-11-15):
2188* Instrumentation will now only modify the arity of wrapped functions when needed.
2189
2190 This can be controlled with the `matchArity` property on a `WrapSpec`.
2191 Disabling arity matching has a significant, positive impact on the performance
2192 of instrumentation.
2193
2194* Added benchmarks for shimmer methods.
2195
2196* Pinned hapi tests at v16 due to incompatibility in hapi v17 with Node.js
2197 versions <8.
2198
2199* The agent's parsed queries will now only hold onto the stack that the query
2200 was made at, instead of an error object instance.
2201
2202 Previously, the parsed query objects would hold onto an error instance, which
2203 would in turn hold onto references to all the functions in the stack when the
2204 error was created. This could cause memory issues if the functions were
2205 holding onto references to other pieces of data.
2206
2207* Revert wrapping of `https` for Node `^8.9.1`.
2208
2209 The original cause for this problem was reverted by Node.
2210
2211### 2.3.2 (2017-11-02):
2212
2213* Fixed a bug with Node >=8.9 that prevented https externals from being recorded.
2214
2215* Added Node 9 to test suite.
2216
2217* Removed problematic tests for ancient version of Hapi (7.1).
2218
2219* Document purpose of `throw` in tracer to prevent developer confusion.
2220
2221* Added script for running agent micro benchmarks.
2222
2223* Added benchmarks for all the `Shim` and `Tracer` methods.
2224
2225### 2.3.1 (2017-10-24):
2226* Agent will attempt to reconnect to the collector forever after backing off to
2227 5 minute delays.
2228
2229* Refactored environment scan to improve startup time and fix cyclical symlink
2230 resolving.
2231
2232### 2.3.0 (2017-10-16):
2233* The agent will now support the `await` keyword by default.
2234
2235* Added cases for omitting the agent with and without async hooks to the async
2236 hooks microbenchmark.
2237
2238* Pinned version of Mocha to 3.x due to the incompatibility of Mocha v4 and Node
2239 v0.10 and v0.12.
2240
2241* Added benchmark for performance of function wrapping.
2242
2243* Added GC information to async_hooks benchmark.
2244
2245* Improved trace-level logging for capturing queries.
2246
2247### v2.2.2 (2017-09-26):
2248* Hapi handlers will now preserve the defaults associated with them.
2249
2250 Previously when wrapping handlers, the agent would drop the associated defaults on
2251 the ground, these are now properly forwarded to the wrapper. Big thanks to Sean
2252 Parmelee (@seanparmelee) for finding the root cause of this bug and reporting it!
2253
2254* Pinned `request` version for testing old versions of Node.
2255
2256* Added tests for feature flags created at agent initialization.
2257
2258* Fixed starting the agent with an invalid process version.
2259
2260### v2.2.1 (2017-09-11):
2261* Added metrics for enabled/disabled feature flags.
2262
2263* Fixed transaction naming for Hapi plugins.
2264
2265 Thanks Marc Höffl (@KeKs0r) for providing a reproduction!
2266
2267### v2.2.0 (2017-08-22):
2268* Added support for ignoring ranges of status codes.
2269
2270 The configuration `error_collector.ignore_status_codes` can now take ranges
2271 of numbers. For example, `ignore_status_codes: ['400-404']` would ignore 400,
2272 401, 402, 403, and 404.
2273
2274* Fixed a bug when a custom collector port was provided in the configuration
2275 that prevented redirected connections from working.
2276
2277* Fixed a bug in `Shim#record` that could cause an exception when trying to
2278 create a new segment as part of an ended/inactive transaction.
2279
2280* Fixed issue with custom Hapi handlers causing an error.
2281
2282 Previously custom Hapi handlers defined using the `server.handler()` method
2283 were causing the Hapi server to return a 500 error. Now they are correctly
2284 handled and recorded as middleware functions.
2285
2286* Transaction state is now maintained in `ChildProcess` event listeners.
2287
2288* Updated examples and documentation regarding custom transaction creation.
2289
2290 All examples and documentation now point at the `newrelic.start*Transaction`
2291 methods.
2292
2293* Reducing logging verbosity in the SQL query obfuscator.
2294
2295* Experimental instrumentation for `async/await`
2296
2297 This is experimental instrumentation and has not yet been tested in a wide
2298 array of production environments. The feature is currently off by default
2299 behind a feature flag. To enable this experimental instrumentation, add
2300 `await_support: true` to the `feature_flag` setting in your agent config
2301 file.
2302
2303### v2.1.0 (2017-08-08):
2304* Improved metadata collection for AWS, Azure, GCE, and Pivotal Cloud Foundry.
2305
2306* Fixed a bug in PG query obfuscation for `$` placeholders.
2307
2308 The agent used to mis-detect `$1` value placeholders as unmatched
2309 dollar-quoted strings causing the whole query to be obfuscated to just `?`.
2310 These placeholders are now correctly detected and obfuscated.
2311
2312### v2.0.2 (2017-08-01):
2313* Improved documentation for `newrelic.start*Transaction` and `TransactionHandle.`
2314
2315 Formatting for the `startWebTransaction` and `startBackgroundTransaction`
2316 methods was fixed and documentation for the `TransactionHandle` class which
2317 `getTransaction` returns was added.
2318
2319* Fixed parsing the table name from SQL queries.
2320
2321 Quotes around the table name are now stripped after parsing the query and
2322 before constructing the metrics.
2323
2324* Fixed unhandled rejection error caused by `ioredis` instrumentation.
2325
2326### v2.0.1 (2017-07-25):
2327* Fixed issue with transaction events not including correct duration values.
2328
2329 This issue was introduced in v2.0.0, and it has affected web transactions histogram
2330 and percentile charts.
2331
2332* Fixed issue with Redis instrumentation causing the agent to crash in some cases.
2333
2334 Previously, the Redis instrumentation would crash the agent when Redis commands were
2335 called without a callback and after the transaction has ended.
2336
2337* Fixed issue with the agent crashing on Node v4.0-4.4 and v5.0-5.9.
2338
2339 This issue was caused by incorrect shim for Buffer.from(), and it affected older minor
2340 versions of Node v4 and v5.
2341
2342### v2.0.0 (2017-07-17):
2343* [The New Relic Node Agent v2 is here!](https://blog.newrelic.com/2017/07/18/nodejs-agent-v2-api/)
2344
2345 This release contains major changes to the agent instrumentation API, making
2346 it easier to create and distribute your own instrumentation for third party
2347 modules. Check out [Upgrade the Node agent](https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/upgrade-nodejs-agent)
2348 or the [Migration Guide](./Migration%20Guide.md) for more information on
2349 upgrading your application to this version.
2350
2351* BREAKING: Reversed naming and ignore rules.
2352
2353 Naming rules are now applied in the order they are defined.
2354
2355* BREAKING: De-duplicated HTTP request transactions.
2356
2357 Only one transaction is created per `request` event emitted by an HTTP server.
2358 Previously this was one transaction per listener per event emitted.
2359
2360* BREAKING: Stopped swallowing outbound request errors.
2361
2362 Errors emitted by outbound HTTP requests will no longer be swallowed by the
2363 agent.
2364
2365* BREAKING: Node v0.8 is no longer supported. Minimum version is now v0.10.
2366
2367 The v1 agent will continue to support Node 0.8 but will no longer receive
2368 updates.
2369
2370* BREAKING: npm v1 is no longer supported. Minimum version is now v2.0.0.
2371
2372* Added API for writing messaging framework instrumentation.
2373
2374 Introduced new `MessageShim` class for writing instrumentation. This shim
2375 can be accessed using the `newrelic.instrumentMessages()` API method.
2376
2377* Added `amqplib` instrumentation.
2378
2379 Applications driven by `amqplib` consumers will now have transactions
2380 automatically created for consumed messages. See
2381 [Troubleshoot message consumers](https://docs.newrelic.com/docs/agents/nodejs-agent/troubleshooting/troubleshoot-message-consumers)
2382 for more information on this instrumentation and its limitations.
2383
2384* Advanced instrumentation API is now generally available.
2385
2386 New methods for instrumenting common modules were introduced during the Agent
2387 v2 beta. These APIs are now available to everyone:
2388
2389 * `newrelic.instrument()`/`Shim`: This method can be used to instrument
2390 generic modules, such as connection pooling libraries, task schedulers, or
2391 anything else not covered by a specialized class.
2392
2393 * `newrelic.instrumentDatastore()`/`DatastoreShim`: This method is good for
2394 instrumenting datastore modules such as `mongodb`, `mysql`, or `pg`.
2395
2396 * `newrelic.instrumentWebframework()`/`WebFrameworkShim`: This method is
2397 used for instrumenting web frameworks like `restify` or `express`.
2398
2399 Documentation and tutorials for the new API can be found on our GitHub
2400 documentation page: http://newrelic.github.io/node-newrelic/docs/
2401
2402* Rewrote built-in instrumentation using the new `Shim` classes.
2403
2404 The following instrumentations have been rewritten:
2405 * Datastores
2406 * `cassandra-driver`
2407 * `ioredis`
2408 * `memcached`
2409 * `mongodb`
2410 * `mysql`
2411 * `node-cassandra-cql`
2412 * `pg`
2413 * `redis`
2414 * Web frameworks
2415 * `director`
2416 * `express`
2417 * `hapi`
2418 * `restify`
2419
2420* The `@newrelic/native-metrics` module is now included as an optional dependency.
2421
2422 This module will be installed automatically with Agent v2. If it fails to
2423 install the agent will still function.
2424
2425### v1.40.0 (2017-06-07):
2426* Node v8 is officially supported with exception of `async`/`await`.
2427
2428 Support for the new [`async`/`await`][mdn-async-function] keywords is coming
2429 in a future release. Until this support is added, using the agent with
2430 applications that utilize async/await is unsupported and highly discouraged as
2431 it could result in transaction state loss and data being mixed between
2432 transactions.
2433
2434 Fixed issues related to changes in the core networking modules that resulted
2435 in transaction state loss. Also instrumented new asynchronous API methods in
2436 crypto and [inspector](https://nodejs.org/dist/v8.0.0/docs/api/inspector.html).
2437
2438### v1.39.1 (2017-05-11):
2439* Fixed a transaction state loss introduced in Node 7.10.0 when using
2440 `net.createConnection`.
2441
2442 Added a new segment for `net.connect`, `net.createConnection`, and
2443 `http.Agent#createConnection`. Sockets created within a transaction also have
2444 their `emit` bound to the segment.
2445
2446* Fixed a typo about the name of the default configuration file. Thanks Jacob
2447 LeGrone (@jlegrone)!
2448
2449### v1.39.0 (2017-05-01):
2450* Updated the default value for `transaction_tracer.record_sql` to `obfuscated`.
2451
2452 This value was previously `off` by default. This change brings the New Relic
2453 Node Agent defaults in line with other New Relic Agents.
2454
2455* Our when instrumentation better detects when a module is actually `when`.
2456
2457 Thanks to Pasi Eronen (@pasieronen) for the contribution!
2458
2459* Quiet a warning in our native promise instrumentation on Node 0.10.
2460
2461* Error messages are redacted in High Security Mode now.
2462
2463* New configurations were added for disabling some New Relic API methods. These
2464 default to enabled and are all disabled in High Security Mode.
2465
2466 * `api.custom_parameters_enabled` controls `newrelic.addCustomParameters()`
2467 * `api.custom_events_enabled` controls `newrelic.recordCustomEvent()`
2468 * `api.notice_error_enabled` controls `newrelic.noticeError()`
2469
2470* Fixed a bug in the generic pool instrumentation affecting version 3.
2471
2472### v2.6.0 / beta-47 (2017-05-03):
2473* Incorporated fixes and features from 1.38.0, 1.38.1, and 1.38.2.
2474
2475* Fixed the beta sign up link in the [readme](README.md).
2476
2477* Improved API for writing web framework instrumentation.
2478
2479 Introduced a new `WebFrameworkShim` class for writing instrumentation. This
2480 shim can be accessed using the `newrelic.instrumentWebframework` API method.
2481
2482* Rewrote instrumentation for Connect, Director, Express, Hapi, and Restify.
2483
2484 These instrumentations were rewritten using the new `WebFrameworkShim`. As a
2485 consequence of this rewrite, all our instrumentations now have feature parity,
2486 meaning every instrumentation will create Middleware metrics for your server.
2487
2488 Tutorials on using the new instrumentation shim can be found on our API docs:
2489 http://newrelic.github.io/node-newrelic/docs/.
2490
2491* Removed `express_segments` feature flag.
2492
2493 This configuration previously controlled the creation of middleware metrics in
2494 our Express instrumentation. With the move to the WebFrameworkShim this was
2495 dropped.
2496
2497* Only one transaction is created for each request emitted by a server.
2498
2499 Previously we created a transaction for each _listener_ on the `request` event.
2500
2501* Dropped support for Express <4.6.
2502
2503### v1.38.2 (2017-03-29):
2504* When.js hooks similar to `Promise.onPotentiallyUnhandledRejection` now function
2505 as intended.
2506
2507 Previously, hooks like `Promise.onPotentiallyUnhandledRejection` would not
2508 work due to the way the agent wraps the promise constructor. When.js expects
2509 these handles to be assigned directly onto the promise constructor, and our
2510 wrapper was intercepting the assignment. The wrapper will now properly proxy
2511 these values and assign them onto the original constructor, restoring the
2512 proper behavior.
2513
2514* Express route parameters will now be properly attached to the corresponding
2515 transaction.
2516
2517 Previously, our express instrumentation would read the route parameters and
2518 place them on the segment responsible for matching the parameters. This
2519 behavior did not place the parameters on the transaction that the segments
2520 belonged to, causing the parameters to not show up properly on transaction
2521 traces and transaction events.
2522
2523### v1.38.1 (2017-03-17):
2524* Fixed issue with when.js instrumentation not preserving all properties on wrapped
2525 Promise constructor.
2526
2527 Previously, the when.js instrumentation would cause an unhandled exception when private
2528 methods on the Promise constructor were called (e.g. when adapting functions that do
2529 not use promises).
2530
2531### v1.38.0 (2017-03-16):
2532* We're excited to announce the addition of a new Node VMs page to the UI that provides a
2533 curated view of the cpu, memory, garbage collection, and event loop metrics that we have
2534 added over the past several releases of the node agent and native-metrics module.
2535
2536 For more information, see [our documentation.](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/node-vms-statistics-page)
2537
2538* Added instrumentation of When.js promise library.
2539
2540 Previously, the transaction state could get lost when multiple promises resolved close
2541 to each other.
2542
2543* Fixed name of environment variable in error message when configuration file cannot be found.
2544 Thanks to @Maubic for the contribution!
2545
2546* Updated tests to work with the latest version of Node 7.
2547
2548### v2.5.0 / beta-46 (2017-02-22):
2549* Incorporated fixes and features from 1.36.2, 1.37.0, and 1.37.1.
2550
2551* Domains are no longer preemptively instrumented, thus applications that do not
2552 use domains will not load the domain module.
2553
2554 Including the domain module causes a small amount of extra overhead in other
2555 core libraries that must keep the domain state set correctly.
2556
2557* Added support for recording interfaces that return promises instead of taking
2558 callbacks. See `RecorderSpec.promise` for more details.
2559
2560 Thanks to Gert Sallaerts (@Gertt) for this contribution.
2561
2562### v1.37.1 (2017-02-16):
2563* Agent now wraps `emit` on http request/response objects instead of relying
2564 on listeners.
2565
2566* Fixed a bug in normalization rules when replacements do not maintain initial `/`.
2567
2568* Removed unused `yakaa` dependency.
2569
2570* Better de-duplication of errors when the same error instance is used multiple
2571 times.
2572
2573* Server-side naming rules are now applied even when user defined ones have
2574 matched.
2575
2576* Improved documentation for `newrelic.noticeError()` and `ignore_status_codes`
2577 configuration.
2578
2579 The documentation now makes it clear that errors recorded using `noticeError()`
2580 do not obey the `ignore_status_codes` configuration value.
2581
2582* Errors reported outside of a transaction now include their stack trace on the
2583 error analytics page.
2584
2585* A potential stack overflow in trace serialization has been removed.
2586
2587* Fixed an issue with our Express and domain instrumentation related to a loss
2588 of transaction state that could result in incorrect transaction names, traces,
2589 and events.
2590
2591* Nested background transactions now report the correct number of metrics.
2592
2593### v1.37.0 (2017-02-08):
2594* The agent now reports event loop metrics on supported platforms.
2595
2596 On node versions 0.12, 4, 6, and 7 the agent will now record the number of event loop
2597 ticks per minute, and CPU time spent in each tick. You can read more about it on
2598 [our docs site!](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/node-vm-measurements)
2599
2600* The agent no longer creates a segment for each row returned from a PG query when the
2601 pg-query-stream module is used.
2602
2603* Removed io.js from our test suite, since it has not been supported for some time.
2604
2605* Internal properties used in our promise instrumentation are now non-enumerable to
2606 prevent unexpected keys showing up for clients.
2607
2608* Agent now uses safe stringification when encoding payloads in order to prevent an issue
2609 with circular references.
2610
2611* Fixed issue with the agent holding the process open when retrying to connect to the
2612 collector.
2613
2614* Quieted a log message warning users about their own settings.
2615
2616* Fixed typo in a log message. Thanks to Dave Bobak (@davebobak) for the contribution.
2617
2618### v1.36.2 (2017-01-26):
2619* Fixed issue with timing Redis operations when called without a callback.
2620
2621 Previously these operations would continue to be timed until the transaction ended, and
2622 as a result reported incorrect times.
2623
2624* Transactions that result in a 404 HTTP error are now named "(not found)".
2625
2626 Previously these transactions were reported with no name (e.g. get /).
2627
2628* When the newrelic.js configuration file is not present, the agent now logs a message
2629 to the console and no longer prevents the app from starting up.
2630
2631### v2.4.0 / beta-45 (2017-01-25):
2632* Rewrote the `cassandra-cql` and `memcached` instrumentations using the
2633 `DatastoreShim`.
2634
2635* Improved instrumentation matching.
2636
2637 Previously, the agent would determine which instrumentation would run for a
2638 given module being loaded using the basename of the file path. This lead to
2639 false positives (e.g. `myapp/lib/express.js` would trigger the express
2640 instrumentation) which we previously just ignored. Matches are now determined
2641 using the string passed to `require`. This means you can now match local
2642 relative paths (`./lib/something`) as well as package-relative paths
2643 (`amqplib/callback_api`).
2644
2645### v2.3.1 / beta-44 (2017-01-12):
2646* Incorporated fixes from 1.36.1
2647
2648### v1.36.1 (2017-01-12):
2649* Stop collecting URL parameters from the HTTP referer header
2650
2651 The Node agent collects the request headers during an error trace to help determine
2652 the root cause of problems. The referer header is the URI that identifies the address
2653 of the webpage that linked to the resource being requested. It is possible that
2654 the referer URI may contain sensitive information in the request query parameters.
2655 New Relic has found that the query parameters are not properly stripped during
2656 the error trace. This update fixes this by stripping the query parameters from
2657 the referer in the request header before sending this data to New Relic.
2658
2659 This release fixes [New Relic Security Bulletin NR17-01](https://docs.newrelic.com/docs/accounts-partnerships/accounts/security-bulletins/security-bulletin-nr17-01).
2660
2661* Improved logging of modules that did not get instrumented.
2662
2663### v2.3.0 / beta-43 (2017-01-04):
2664* Incorporated new features and fixes from 1.34.0, 1.35.1, and 1.36.0
2665
2666* The `@newrelic/native-metrics` module is now an optional dependency of the
2667 agent.
2668
2669 Now npm will attempt to install the module when the agent is installed. If it
2670 fails for whatever reason, the agent itself will still be installed correctly
2671 and the rest of the npm install will finish normally.
2672
2673### v1.36.0 (2016-12-21):
2674* Added CPU metric gathering to Node.js versions <6.1
2675
2676 As of this release the agent will attempt to gather CPU usage metrics via the
2677 optional `@newrelic/native-metrics` module.
2678
2679* Added additional memory usage classification metrics.
2680
2681 The agent will now report memory metrics that break down memory by its current
2682 use.
2683
2684 For more information on these features, see [our documentation.](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/node-vm-measurements)
2685
2686### v1.35.1 (2016-12-13):
2687* Removed automatic installation of `@newrelic/native-metrics`.
2688
2689 Due to the way npm v3+ flatten dependencies, a bug in the version of npm
2690 packaged with Node v5, and npm v1's ungraceful handling of scoped packages
2691 we have opted to not automatically install this module.
2692
2693 If you would like to see native metrics for your application, you can add the
2694 `@newrelic/native-metrics` module to your `package.json` and the Node Agent
2695 will automatically pick it up.
2696
2697* Corrected attribution of the Bluebird patch in the last release's notes.
2698
2699 Thanks to Matt Lavin (@mdlavin) for this correction!
2700
2701### v1.35.0 (2016-12-12):
2702* The agent will now report garbage collection statistics on supported
2703 platforms.
2704
2705 On node versions 0.10, 0.12, 4, 6, and 7 the agent will now record the time
2706 spent in, the number of, and type of garbage collection cycles. You can read
2707 more about it on [our docs
2708 site!](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/node-vm-measurements)
2709
2710* The agent no longer double counts MySQL query times when using a connection
2711 pool.
2712
2713 Previously, when using a pool of connections a query done through the pool
2714 would be recorded as the time it took on the pool, as well as the connection,
2715 effectively counting the time twice. This is no longer the case.
2716
2717* The agent will no longer lose transaction state across Bluebird's `promise.nodify`.
2718
2719 Thanks to Matt Lavin (@mdlavin) for this contribution!
2720
2721### v1.34.0 (2016-11-10):
2722
2723* The agent now collects CPU metrics when running under Node 6.1.0 and higher.
2724
2725 Node 6.1.0 introduced an API to get CPU time usage of the running Node process.
2726 We are now collecting this data as new metrics.
2727
2728* The agent now has a separate configuration for audit logging.
2729
2730 Previously the data that the agent sends to the collector was logged only in trace
2731 logging mode, making the logs unnecessarily large and noisy. The agent can now include
2732 this data independent of the logging level using separate configuration settings.
2733
2734* A new API method addCustomParameters() has been added to allow adding multiple custom
2735 parameters at once. Thanks to Austin Peterson (@AKPWebDesign) for this contribution!
2736
2737* The shutdown() API now waits for connection to collect pending data.
2738
2739 When a flag to collect pending data is provided to the shutdown() method, the agent now
2740 ensures a connection to the collector has been established. This is useful when
2741 the Node process is short-lived, such as in AWS Lambda.
2742
2743* Updated tests to run on Node 7.
2744
2745 Node 7 is officially supported as of the previous release, v1.33.0.
2746
2747* The setIgnoreTransaction() API now works for background transactions.
2748
2749* Fixed issue with Synthetics result not displaying a link to the corresponding
2750 transaction trace.
2751
2752* Added running the nsp (Node Security Platform) tool to the test suite to help with
2753 detecting security-related vulnerabilities.
2754
2755### v2.2.0 / beta-42 (2016-11-09):
2756
2757* Incorporated new features and fixes from v1.30.4, v1.30.5, v1.31.0, v1.32.0,
2758 and v1.33.0.
2759
2760### v1.33.0 (2016-10-31):
2761
2762* The agent now collects database instance information for Memcached operations.
2763 This information (database server and database name) is displayed in transaction
2764 traces and slow query traces.
2765
2766* socket.io long-polling requests are now ignored by default.
2767
2768 Collecting metrics for these requests is typically not desirable since they are
2769 frequent and do not represent business transactions. Previously we recommended adding
2770 an ignore rule manually. Now it is included by default.
2771
2772* Improved test coverage for Postgres and MongoDB instrumentations.
2773
2774### v1.32.0 (2016-10-20):
2775
2776* The agent now collects database instance information for MySQL and MongoDB
2777 operations. This information (database server and database name) is displayed in
2778 transaction traces and slow query traces.
2779
2780* Datastore instance configuration can now be done through environment
2781 variables. These can be set through `NEW_RELIC_DATASTORE_INSTANCE_REPORTING_ENABLED`
2782 and `NEW_RELIC_DATASTORE_DATABASE_NAME_REPORTING_ENABLED`
2783
2784* The agent will no longer crash the process when an express param handler is
2785 executed when a transaction is not active.
2786
2787### v1.31.0 (2016-10-12):
2788
2789* The agent now collects database instance information for PostgreSQL and Redis
2790 operations. This information (database server and database name) is displayed in
2791 transaction traces and slow query traces.
2792
2793### v1.30.5 (2016-10-04):
2794
2795* Fixed issue with aborted requests causing the agent to crash in some cases.
2796
2797 Previously the agent would crash when the client request aborted before Express server
2798 sent a response and encountered an error.
2799
2800* Upgraded integration tests to work with the latest version of node-tap.
2801
2802### v1.30.4 (2016-09-27):
2803
2804* Improved instrumentation of native promises.
2805
2806 Native promises now use the same instrumentation as Bluebird, making
2807 instrumentation easier to maintain and more consistent across libraries.
2808
2809* Fixed issue with reloading normalization rules from the server.
2810
2811 Upon reset, the agent will clear the existing naming rules, removing any
2812 vestigial rules that may have changed or been disabled.
2813
2814* Fixed issue with key transactions Apdex metric.
2815
2816 Key transactions now effect the global Apdex metric according to their own
2817 ApdexT instead of the default ApdexT value.
2818
2819* Fixed issue with closing transactions when the request is aborted.
2820
2821 Previously, aborted requests would result in the transaction remaining open
2822 indefinitely. Now the transaction will be correctly finished and its resources
2823 freed.
2824
2825* Fixed format of external calls metric.
2826
2827 External service URLs will now be formatted the same as they are in the
2828 originating application.
2829
2830### v2.1.1 / beta-41 (2016-09-15):
2831
2832* Incorporated fixes from v1.30.1, v1.30.2, and v1.30.3.
2833
2834### v1.30.3 (2016-09-14):
2835
2836* Published with npm v2.
2837
2838### v1.30.2 (2016-09-13):
2839
2840* Added instrumentation of the param() function in Express.
2841
2842 The agent will now create metrics and transaction segments when the Express param()
2843 function is called as a part of a route. This also fixes an issue with transaction
2844 naming when the HTTP response is ended within a param() method.
2845
2846* Fixed an issue with naming Express transactions that result in 404 errors.
2847
2848 Previously transactions were not always correctly normalized for URLs that caused
2849 404 errors. The transactions will now always be reported with the same normalized name
2850 (e.g. "get /").
2851
2852* Fixed instrumentation of Express v4.0 - v4.5.
2853
2854 Previously transactions were not correctly named on older versions of Express 4.
2855
2856* Minor updates to logging.
2857
2858### v1.30.1 (2016-09-01):
2859
2860* The `shutdown` method is now on the stub API.
2861
2862 Previously when the agent was disabled the stub API passed back on require
2863 did not have the `shutdown` method. Thanks goes to Vlad Fedosov (@StyleT) for
2864 this contribution!
2865
2866* Global timers will now be wrapped correctly regardless of being wrapped by
2867 something else.
2868
2869 The logic to check whether to wrap the `global` timers was looking to see if
2870 the `global` timers were the same function reference as the ones in the
2871 `timers` module. This would break in cases where either the `global` or
2872 `timers` functions had been wrapped.
2873
2874* Director instrumentation now correctly handles the case of null route handlers
2875 being passed in.
2876
2877 Previously the agent's director instrumentation would crash in cases of null
2878 route handlers in director.
2879
2880### v2.1.0 / beta-40 (2016-08-29)
2881
2882* Incorporated fixes from v1.30.0
2883
2884* Added `rowCallback` property to datastore segment descriptors.
2885
2886 With this parameter the shim will record the given function/parameter as a
2887 per-row callback which may be called multiple times. These calls will be
2888 counted up for traces.
2889
2890* Rewrote PostgreSQL instrumentation using new `DatastoreShim` class.
2891
2892* Reversed `reverse_naming_rules` default.
2893
2894 Naming rules now default to evaluating in forward order.
2895
2896### v1.30.0 (2016-08-25):
2897
2898* A number of improvements and fixes to transaction naming rules.
2899
2900 Added attributes `terminate_chain`, `replace_all`, and `precedence` to allow more
2901 control over how naming rules are executed. Please see the updated documentation in
2902 our README file.
2903
2904 The order in which naming rules are executed can now be reversed with a feature flag
2905 `reverse_naming_rules`.
2906
2907 When applying naming rules, the regular expression matching is now case insensitive.
2908
2909 We have added a tool for testing naming rules. When the agent is installed, the tool
2910 can be run in terminal by executing `node node_modules/.bin/newrelic-naming-rules`.
2911
2912 We have also improved our trace logging around transaction naming.
2913
2914* Fixed issue with reporting errors from domains.
2915
2916 When an error is handled by using the `error` event of the domain, it is no longer
2917 reported as an uncaught exception.
2918
2919* Added trace logging to track number of transactions and segments in progress, and to
2920 better track segments created with the Express instrumentation.
2921
2922* Fixed mysql2 tests that were not being run correctly.
2923
2924### v2.0.0 / beta-39 (2016-08-04):
2925
2926* Dropped support for Nodejs < 0.10.
2927
2928 Starting with agent 2.0.0 we are no longer testing or supporting the agent on
2929 Node.js prior to 0.10. Customers are strongly encouraged to follow best
2930 practices and run supported versions of the Node.js runtime so that you can
2931 get the latest and greatest New Relic features. For legacy Node support, agent
2932 versions 1.x will continue to work, but we have no plans to backport any
2933 future features or fixes.
2934
2935* Dropped support for `node-mysql` < 1.0.0.
2936
2937 Support for versions of the MySQL driver <1.0.0 has been removed. They will
2938 not work with the agent versions >=2.0.0.
2939
2940* Improved API for writing instrumentation.
2941
2942 Introduced new classes for writing instrumentation, `Shim` and `DatastoreShim`.
2943 These classes along with the new `newrelic.instrument` and
2944 `newrelic.instrumentDatastore` methods make writing 3rd party instrumentation
2945 much easier.
2946
2947* Rewrote instrumentation for Cassandra, Redis, ioredis, MySQL, and MongoDB.
2948
2949 These instrumentations were rewritten using the new `DatastoreShim` interface.
2950 Their functionality is largely unchanged but the new code should be easier to
2951 maintain and extend.
2952
2953* Added public API documentation.
2954
2955 Documentation for the New Relic agent API has been generated using JSDoc and
2956 is now hosted on GitHub at https://newrelic.github.io/node-newrelic. There you
2957 can find documentation on the new classes as well as the pre-existing API
2958 methods.
2959
2960### v1.29.0 (2016-08-03):
2961
2962* Reworked the SQL parser to handle new lines in the query.
2963
2964 Previously the agent would have difficulty classifying queries with new lines
2965 in them. Thanks to Libin Lu (@evollu) for the fix!
2966
2967* Postgres instrumentation is now compatible with inputs with text getter attributes.
2968
2969 Thanks again to Libin Lu (@evollu) for the fix!
2970
2971* Domain error handlers will now be scoped to the transaction the error occurred in.
2972
2973 Previously, the `'error'` event handlers would not be scoped to a transaction causing
2974 our API methods to not associate data correctly (e.g. using `noticeError`
2975 would not associate the error with the transaction and would instead be
2976 unscoped).
2977
2978### v1.28.3 (2016-07-13):
2979
2980* Removed excessive segment creation from PG instrumentation.
2981
2982 For queries with many results we would create a segment for each result. This
2983 would result in excessive object allocation and then cause harsh GC thrashing.
2984
2985* Improved agent startup speed by ~10% by simplifying environment checks.
2986
2987 Removed prolific `fs.exists` and `fs.stat` checks, instead simply handling the
2988 error for mis-used files which greatly reduces disk access.
2989
2990* Fixed a bug in agent connect that could cause an identity crisis under
2991 specific use cases.
2992
2993 When using the agent with multiple app names, transaction information could be
2994 misattributed to other services if they share the same first app name. This
2995 resolves that by using all of the host names to uniquely identify the agent.
2996
2997* Added slightly more trace-level logging around the creation of segments.
2998
2999* Added examples for using the `newrelic.createBackgroundTransaction` method in
3000 a number of different use cases.
3001
3002### v1.28.2 (2016-07-07):
3003
3004* Director instrumentation that will now name the transaction correctly,
3005 as well as create segments corresponding to the handlers registered
3006 with director.
3007
3008* Transaction naming refactor - this should clear up some inconsistent naming
3009 issues in our router instrumentations.
3010
3011 Previously the instrumentation was tasked with the maintenance of the
3012 transaction state name, now this has been abstracted into its own class to be
3013 used by instrumentations.
3014
3015* Express instrumentation refactored to scope transaction storage to the
3016 incoming request object.
3017
3018 Previously the express instrumentation used a stack to track which router was
3019 expecting middleware to finish and keep track of which transaction is being
3020 executed. The new implementation has a stronger guarantee on scoping work to
3021 the correct transaction.
3022
3023* The agent now uses the correct units for slow queries - this fixes and issue
3024 where query traces in the databases tab were slower than the reported maximum.
3025
3026### v1.28.1 (2016-06-15):
3027
3028* The following attributes are now sent to Insights along with transaction events: databaseDuration, databaseCallCount.
3029
3030* Fixed a few issues with the Express instrumentation.
3031
3032 Middleware functions mounted with a path variable now generate the correct middleware metrics. Routers mounted using route methods now generate the correct trace segments and times. Routers mounted on root path are now not included in trace when they contain no matching routes.
3033
3034* Updated Redis instrumentation to work with version 2.x of the redis module.
3035
3036* Improvements to error tracking on systems that have a lot of errors.
3037
3038* Other minor changes to tests and logging.
3039
3040### v1.28.0 (2016-05-25):
3041
3042* Express middleware metrics are now enabled by default.
3043
3044* The following attributes are now sent to Insights along with transaction events:
3045 externalDuration, externalCallCount, and queueDuration.
3046
3047* Custom SSL certificates (from the agent configuration) are now used even when a proxy
3048 is not explicitly defined. This is useful in some environments that use an implicit
3049 proxy for all network traffic.
3050
3051### v1.27.2 (2016-05-05):
3052
3053* Fixed duplicated external transactions for `https` requests in Node > 0.10.
3054
3055 Any external transaction that used the `https` module to make the request
3056 would appear twice in transaction traces due to `https.request` internally
3057 using `http.request`. This has now been resolved.
3058
3059* Updated eslint dev dependency to 2.9.0 (was 0.24.1).
3060
3061* Fixed an issue with transaction naming precedence.
3062
3063 Custom naming of transactions will no longer be replaced by names generated by
3064 the instrumentation.
3065
3066* Fixed tests which broke under Node 6.0.
3067
3068 Node 6.0.0 changed some messaging and internal functionality which our tests
3069 were asserting on. These tests have been updated to work with either the new
3070 version or the older ones.
3071
3072* Fixed installing GCC 5 in Travis for testing native modules in Node >= 3.0.
3073
3074 Starting in Node 3.0, native modules were compiled with C++11 features
3075 enabled. The version of GCC preinstalled on Travis was too old to support that
3076 so we now manually install GCC 5 and set it as the system compiler.
3077
3078* Fixed metrics that were being scoped to themselves.
3079
3080 Some metrics were scoped to themselves causing a strange visual glitch in the
3081 RPM UI. This self-scoping has been removed.
3082
3083* Added tests for transaction naming with parallel requests in Express.
3084
3085### v1.27.1 (2016-05-03):
3086
3087* Fixed issue with checking listener count for uncaughtException and unhandledRejection
3088 global events.
3089
3090* Fixed a number of issues with promise instrumentation of Bluebird.
3091
3092### v1.27.0 (2016-04-21):
3093
3094* Added a .npmignore file to exclude non-essential files.
3095
3096 The agent will now omit tests and examples on install from npm, drastically
3097 improving download times. Thanks to Serge Havas (@Sinewyk) for the
3098 contribution!
3099
3100* The agent now properly checks for custom SSL certificates.
3101
3102 The check previously was falsely positive if there was an empty list of custom
3103 certificates. This caused red herrings to be admitted into the debug logs.
3104 Thanks to Seth Shober (@sethshober) for the fix!
3105
3106* Reworked promise instrumentation to be more reliable and reusable.
3107
3108 Promise instrumentation has been rewritten to be applicable to any A+
3109 compliant promise library. This change brings more consistent
3110 instrumentation of Bluebird promises.
3111
3112 This change also allows users to see the execution order of chained promises
3113 in their Transaction Traces. This is an opt-in process and can be achieved by
3114 setting `feature_flag.promise_segments` to true in the agent config.
3115
3116* Promise error handling is now more consistent.
3117
3118 Previously the agent would notice errors being emitted on 'unhandledRejection'
3119 regardless of other listeners. Errors coming in on the 'unhandledRejection'
3120 event will not be recorded if there are handlers for the event - this is more
3121 in line with our error handling practices in other instrumentations.
3122
3123* Logging has been reworked to reduce CPU overhead.
3124
3125 The check to see if a logging call was valid happened fairly late in the
3126 logic, causing unnecessary work to be done regardless of logger state. This
3127 has been rectified, netting a large decrease in CPU overhead.
3128
3129### v1.26.2 (2016-04-07):
3130
3131* Added ioredis instrumentation.
3132
3133 Big thanks to Guilherme Souza (@guilhermef) for the contribution!
3134
3135* Added a new shutdown call to the public API.
3136
3137 Thanks to @echmykhun for the contribution!
3138
3139 The new shutdown API call will gracefully stop the agent. It can optionally
3140 harvest any pending data waiting to be sent to the New Relic servers before
3141 shutting down.
3142
3143 To read more about this new API, please read our README, or visit our
3144 [docs page](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/nodejs-agent-api#shutdown).
3145
3146* Fixed an issue in the express instrumentation related to inactive/lost
3147 transaction state.
3148
3149 Thanks to Jacob Page (@DullReferenceException) for submitting this fix.
3150
3151 Previously, the agent would crash if there was no active transaction when
3152 an Express middleware would handle the request.
3153
3154* Added support for truncated segment notifiers.
3155
3156 Segments related to work that happens after a transaction has finished will
3157 now be labeled as Truncated in the UI.
3158
3159* The agent now uses MongoDB's APM API for its instrumentation.
3160
3161 Method discovery for instrumentation is now done through MongoDB's APM API in
3162 newer versions of the MongoDB driver.
3163
3164### v1.26.1 (2016-03-30):
3165
3166* Added capturing errors from the unhandledRejection global event.
3167
3168 If a promise is rejected with an error, and the error is not handled, the error
3169 will now be reported to New Relic.
3170
3171* Fixed issue with attaching an event handler every time Express was required.
3172
3173* Fixed issue with chained promises losing context.
3174
3175 Previously the transaction state was getting lost when an error was thrown early in
3176 a promise chain.
3177
3178* Fixed issue with the agent crashing when an http Server did not have
3179 the address() getter.
3180
3181* Fixed issue with Express instrumentation when a wrapped layer object was
3182 missing a method.
3183
3184* Added more logging around the CAT feature.
3185
3186### v1.26.0 (2016-03-23):
3187
3188* Express instrumentation has been fundamentally reworked.
3189
3190 This refactor includes a few bug fixes around error handling and transaction
3191 naming, as well as optional higher resolution traces.
3192
3193 The agent will not report errors handled in an error handler it is monitoring - this
3194 is more in line with how the agent does error handling in other contexts.
3195
3196 The agent will now name transactions correctly when an application responds
3197 from a middleware.
3198
3199 Setting `feature_flag.express_segments` to true in the agent config will
3200 make the agent report the amount of time spent in each individual middleware per request
3201
3202### v1.25.5 (2016-03-09):
3203
3204* Added instrumentation of Bluebird promises.
3205
3206 Previously, the transaction state could get lost when multiple promises resolved
3207 close to each other.
3208
3209* Fixed issue with PostgreSQL native instrumentation.
3210
3211 Previously, calling `require('pg').native` more than once was causing
3212 the agent to crash.
3213
3214* Fixed issue with hapi instrumentation not returning value from Server.connection().
3215
3216* Various improvements to tests to make them more stable.
3217
3218### v1.25.4 (2016-02-24):
3219
3220* Added more HTTP request/response parameters to transactions.
3221
3222 The agent now collects additional request/response HTTP headers (e.g. contentType, HTTP method, response status code). These can be used to filter and group errors in the Error analytics page, as well as events in Insights.
3223
3224* Fixed an issue with collecting errors when an Express error handler removed message and stack properties from the error object.
3225
3226### v1.25.3 (2016-02-18):
3227* Fixed crashing bug on unhandled rejections in Q.
3228
3229 Previously, the agent would cause the process to crash in the event of an
3230 unhandled rejection.
3231
3232 Thanks to @mdlavin for this fix!
3233
3234### v1.25.2 (2016-02-17):
3235* Added Q instrumentation.
3236
3237 The node agent now accurately records programs using Q for promises.
3238
3239 Thanks to @mdlavin for the contribution!
3240
3241* Added node-mysql2 support.
3242
3243 Thanks to @jhollingworth for adding node-mysql2 support to the agent.
3244
3245* Query streaming in node-mysql now works while using the agent.
3246
3247 Previously, due to the way node-mysql was instrumented query streaming would
3248 be forced off when the agent was collecting data. This is no longer the case
3249 and query streaming will work and be recorded as expected.
3250
3251### v1.25.1 (2016-01-26):
3252
3253* Corrected an issue where the agent would sometimes crash looking up the port
3254 of the HTTP server that a request came from.
3255
3256 Previously, the agent assumed the HTTP server would always have an address,
3257 unfortunately this isn't the case if the HTTP server's `.close()` has been
3258 called.
3259
3260
3261### v1.25.0 (2016-01-20):
3262
3263* Added support for the new [Response Time Line](https://docs.newrelic.com/docs/data-analysis/user-interface-functions/response-time) and better representation of asynchronous data.
3264
3265 This has many implications in the UI. The first is the
3266 [Application Overview](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/apm-overview-page),
3267 in the past we've always just shown "node" and maybe
3268 "[request queueing](https://docs.newrelic.com/docs/apm/applications-menu/features/request-queuing-tracking-front-end-time)"
3269 on the response time graph. We now show you an application breakdown like our
3270 other language agents! This means you'll be able to see how much time was in
3271 HTTP externals, your various datastores, or spent in node itself. Overlaid on
3272 this will be your response time as a blue line.
3273
3274 Next page that has been affected is our
3275 [Transaction Overview](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/transactions-page)
3276 page. Specifically when you click into a Transaction to see more detail.
3277 Previously we showed you a breakdown of the top time consumers in that
3278 transaction, both as a graph and as a table. Unfortunately that graph didn't
3279 show response time and the table would show percentages over 100%. Now, like
3280 the Application Overview, you will get a blue response time line and the
3281 breakdown table will have numbers that add up much more intuitively!
3282
3283 Finally, our
3284 [Transaction Trace](https://docs.newrelic.com/docs/apm/transactions/transaction-traces/viewing-transaction-traces)
3285 view has also been updated. The change is very similar to the changes
3286 mentioned above for the breakdown table in the Transaction Overview page. You
3287 should no longer see percentages over 100% here either.
3288
3289* Transaction trace serialization is now 4x faster than before.
3290
3291 This speedup will primarily affect those with large, deeply nested
3292 transactions. Though small transactions have seen some improvement as well.
3293
3294### v1.24.1 (2015-12-30):
3295
3296* Error totals are now reported.
3297
3298 The agent now reports metrics that reflect the total number of errors that
3299 have occurred in web and background transactions.
3300
3301* Disabling SSL no longer requires the setting of a port.
3302
3303 Previously, the agent required changing `port` in the config to `80` when
3304 disabling SSL. The agent will now default to port 80 if a port is not supplied and SSL
3305 is turned off.
3306
3307* Logging functions have been improved.
3308
3309 The agent will now properly log error stack traces and can rate limit logging
3310 messages. To aid in debugging we have provided more logging about the public API.
3311
3312### v1.24.0 (2015-11-18):
3313
3314* Advanced Analytics for APM Errors
3315
3316 With this release, the agent reports [TransactionError events](https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights). These new events power the beta feature [Advanced Analytics for APM Errors](https://docs.newrelic.com/docs/apm/applications-menu/events/view-apm-errors-error-traces) (apply [here](https://discuss.newrelic.com/t/join-the-apm-errors-beta-of-real-time-analytics/31123) to participate). The error events are also available today through [New Relic Insights](http://newrelic.com/insights).
3317
3318 Advanced Analytics for APM Errors lets you see all of your errors with
3319 granular detail, filter and group by any attribute to analyze them, and take
3320 action to resolve issues through collaboration.
3321
3322* `NEW_RELIC_LOG_ENABLED` environment variable is now treated as a boolean.
3323
3324 Previously, this option was treated as a string, causing it to not work for
3325 some use cases. Thanks to @jakecraige for contributing this fix!
3326
3327### v1.23.1 (2015-11-05):
3328
3329* `newrelic.getBrowserTimingHeader()` API now includes the full transaction name.
3330
3331 Previously, the agent would use a fragment of the transaction name, causing
3332 Browser Monitoring transactions and APM transactions to not be cross linked.
3333 This change makes the cross linking work correctly.
3334
3335### v1.23.0 (2015-10-29):
3336
3337* The New Relic Node Agent now officially supports Node v4!
3338
3339 We are excited to announce that the New Relic Node Agent officially supports
3340 Node v4.x! We've tested the agent across all major versions of Node used by New
3341 Relic customers to ensure a quality Node APM experience. New Relic recommends
3342 upgrading to Node v4.x for best Node Agent performance.
3343
3344* Corrected a parsing issue in the slow sql query parsing step.
3345
3346 Previously, the agent would not be able to parse inputs to database libraries
3347 that specified sql as an option param. This was an issue with node-mysql,
3348 namely. The agent now correctly handles this case and registers the queries as
3349 expected.
3350
3351### v1.22.2 (2015-10-14):
3352
3353* Removed client support of the RC4 stream cipher for communicating with the New
3354 Relic servers.
3355
3356 The RC4 cipher is considered unsafe and is generally being deprecated.
3357
3358* Fix for logging version number in Express instrumentation. Thanks @tregagnon.
3359
3360 When an unsupported version of Express is detected, we log a message that
3361 contains the Express version number. The version is a string and was being
3362 logged as a number, resulting in NaN in the log message.
3363
3364* Agent is now more safe when recording memory stats.
3365
3366 Previously, the agent would crash the process as it was gathering memory usage
3367 information (i.e. when process.memoryUsage threw an error). This defect is now
3368 guarded against with a try-catch.
3369
3370### v1.22.1 (2015-08-20):
3371
3372* Express and Connect instrumentation will no longer crash on Node 4
3373
3374 As of ES6, the `Function.name` attribute will track if the function
3375 is a getter/a setter/is bound to (i.e. `fn.bind().name ->` `'bound ' +
3376 fn.name`). This new behavior caused the agent to crash on start up due to the
3377 way connect and express are instrumented. The agent is now more defensive of
3378 future implementations of ES6.
3379
3380### v1.22.0 (2015-08-20):
3381
3382* Errors will now respect its transaction's ignore state.
3383
3384 When ignoring transactions, related errors will now also be ignored.
3385
3386* The agent can now handle immutable and frozen error objects.
3387
3388 In rare cases the agent gets passed an immutable error object. The
3389 agent would then crash when trying to tag the error object with the
3390 current transaction. We now handle these errors properly.
3391
3392### v1.21.2 (2015-08-06):
3393
3394* Corrected a defect in the handling of uncaught exceptions
3395
3396 This defect was surfaced in versions of node that did not have
3397 `process._fatalException`, namely v0.8. When an uncaught exception
3398 occurs, the agent now records the error and passes it along to the other
3399 uncaught exception handlers that have been registered. This was
3400 inverted before, passing along errors when there were no other error
3401 handlers present and rethrowing otherwise.
3402
3403### v1.21.1 (2015-07-13):
3404
3405* Moved `concat-stream` from dev dependencies to production dependencies.
3406
3407 Last week we released v1.21.0 but forgot to move a dependency. We've
3408 removed v1.21.0 from npmjs.org and this release contains the changes
3409 from that version.
3410
3411### v1.21.0 (2015-07-10):
3412
3413* Added configurable host names.
3414
3415 The agent now has configuration settings to allow configuration of
3416 custom host names. Set `process_host.display_name` to enable this.
3417
3418 If this conifig is not set, the agent will continue to use the host
3419 name found through an `os.hostname()` call. Should this lookup fail
3420 somehow, `process_host.ipv_preference` can now be set to `4` or `6`
3421 to configure the type of ip address displayed in place of the host
3422 name.
3423
3424
3425
3426### v1.20.2 (2015-06-23):
3427
3428* Fixed a bug where custom events weren't being sent.
3429
3430 In a refactor of our data collection cycle, we omitted the custom
3431 events from the list of commands, this is now fixed.
3432
3433* Fixed a very rare bug where the custom event pool could be set to 10
3434 instead of the user config value. This patch was contributed by
3435 [shezarkhani](https://github.com/shezarkhani), thanks!
3436
3437 This case would only be hit if you disabled custom events via server
3438 sent config while there were custom events ready to be sent. Then
3439 you later reenabled it via server sent config. It would only occur
3440 for one data collection cycle then reset back to the correct size.
3441
3442
3443
3444### v1.20.1 (2015-06-11):
3445
3446* Fixed a bug in custom event recording limits.
3447
3448 Previously, the agent would use the config value for max events
3449 (default of 1000) for the first harvest of custom events, then would
3450 use an internal default for the reservoir with max of 10 events for
3451 each harvest after that, resulting in less than the expected number
3452 of events being sent.
3453
3454* Exposed the `custom_insights_events` settings in the user config.
3455
3456 You can now set `custom_insights_events.enabled` and
3457 `custom_insights_events.max_samples_stored` in your `newrelic.js`.
3458
3459 Read more about these settings in our
3460 [documentation](https://docs.newrelic.com/docs/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration#custom_events).
3461
3462### v1.20.0 (2015-06-05):
3463
3464* Triaged a defect in native promise instrumentation
3465
3466 Transactions used to be lost acrossed chained `.then` calls. The way
3467 promises are wrapped has been changed to fix this issue.
3468
3469* Added support for Slow Queries
3470
3471 Slow Query information will now appear in the UI for Node agent users.
3472 This feature allows you to see a trace for slow datastore queries.
3473 Read more about this feature in our
3474 [documentation](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details)
3475
3476### v1.19.2 (2015-05-21):
3477
3478* Fixed an issue with Error tracing
3479
3480 Previously the agent could sometimes cause issues with user serialization
3481 of error objects after they passed through the error tracing code.
3482
3483* MongoDB cursor count method is now instrumented
3484
3485 The `count` method on MongoDB cursors is now instrumented. Previously, count
3486 would not be included in transaction traces.
3487
3488* Fixed a typo in NEWS.md
3489
3490 Previously the release notes for v1.19.1 were included as notes for 1.19.0.
3491 This has now fixed thanks to @bruun
3492
3493### v1.19.1 (2015-05-14):
3494
3495* Fixed a bug in native ES6 Promise instrumentation.
3496
3497 Previously the Promise instrumentation would cause `instanceof Promise`
3498 to return false even if the object was a promise. This also caused an
3499 incompatibility with async-listener. `instanceof` checks will now work on
3500 both the wrapped and unwrapped Promise object.
3501
3502### v1.19.0 (2015-05-06):
3503
3504* Fixed a bug with error handling.
3505
3506 Previously the agent could crash applications in certain situations
3507 where `null` was thrown rather than an `Error` object.
3508
3509* Filesystem interactions are now recorded in metrics
3510
3511 The time spent in filesystem functions during a transaction will now
3512 be displayed in the transaction overview page per operation.
3513
3514### v1.18.5 (2015-05-01):
3515
3516* Fixed a bug in environment variable based configuration.
3517
3518 Previously the agent would parse the `NEW_RELIC_APDEX` environment
3519 variable as a string rather than a float this could cause data to be
3520 sent to New Relic servers in an invalid format, preventing the data
3521 from being collected.
3522
3523* Fixed a bug with the error collector's handling of ignored status codes.
3524
3525 Previously the agent would not properly ignore status codes if the
3526 status code was set using a string rather than a number.
3527
3528* Fixed a bug in mysql instrumentation.
3529
3530 Previously the mysql instrumentation could cause errors when making
3531 mysql queries using an options object rather than a SQL string. The
3532 agent now handles arguments to the query method in a more robust
3533 way.
3534
3535### v1.18.4 (2015-04-22):
3536
3537* Fixed an inverted `if` in config loading.
3538
3539 Previously, the config loader would log a warning on success, rather
3540 than failure. Configuration loading works as expected now.
3541
3542* Fixed a bug in `process.nextTick` instrumentation for io.js 1.8.1.
3543
3544 Previously the agent would only pass the callback argument to
3545 `process.nextTick`. This did not cause issues in Node.js and older
3546 version of io.js, since additional arguments were ignored. In a
3547 recent change to io.js, `process.nextTick` was changed to pass any
3548 additional arguments to the callback, the same way `setImmediate`
3549 does. This change ensures all arguments are handled as expected.
3550
3551### v1.18.3 (2015-04-16):
3552
3553* Wrapped all our calls to `JSON.parse` in try/catch.
3554
3555 Previously, only calls that were considered unsafe due to external
3556 data input were wrapped. We are taking a more defensive stance and
3557 wrapping them all now.
3558
3559* Timers attached to `global` are now instrumented correctly in all version
3560 of io.js.
3561
3562 As of v1.6.3 of io.js, timers are no longer lazily loaded from the timers
3563 module, and are placed directly on the global object. The agent now takes
3564 this change into account and accurately wraps the timer methods.
3565
3566* Improved handling of cross-application tracing headers.
3567
3568 Paths that include multibyte characters will now show up correctly in cross
3569 application maps
3570
3571### v1.18.2 (2015-04-09):
3572
3573* Wrapped all our calls to `JSON.stringify` in try/catch.
3574
3575 Previously, only calls that were considered unsafe due to external
3576 data input were wrapped. We are taking a more defensive stance and
3577 wrapping them all now.
3578
3579### v1.18.1 (2015-04-02):
3580* Names assigned to errors via `Error.name` now appear in the UI.
3581
3582 Previously, the name of an error in the UI appeared as `Error.constructor.name`
3583 or with a default of `Error`. Now the common pattern of `Error.name`
3584 is respected and takes precedence.
3585
3586* Child segments of external calls will now be nested correctly.
3587
3588 This change causes segments that make up external calls to nest
3589 under the call correctly. Previously, the child segments appeared
3590 as siblings to external calls.
3591
3592* The `request_uri` attribute on errors will now only include the path
3593 without any parameters.
3594
3595 This behavior now matches the other New Relic agents.
3596
3597### v1.18.0 (2015-03-26):
3598* Reduce agent CPU overhead by omitting `setImmediate` from traces.
3599
3600 The change to `setImmediate` makes that function behave the same way
3601 as `nextTick` and other frequently-called functions that are already
3602 elided from Transaction Traces.
3603
3604* Mitigate a Node.js memory leak that can occur during TLS connections.
3605
3606 There is an outstanding Node.js Core memory leak involving TLS
3607 connections. Clients specifying certificates, such as the New Relic
3608 Agent, quickly reveal this leak. We now mitigate this issue by using
3609 the default client certificates where possible. A new log message
3610 will be printed when the TLS memory leak workaround can not be used,
3611 such as when using a custom certificate with an HTTPS proxy.
3612
3613### v1.17.3 (2015-03-19):
3614* Fixed a bug where external requests report times longer than the
3615 transactions that initiated them.
3616
3617 External request segments are now always ended when an error occurs.
3618
3619* Fixed a bug that produced incorrect transaction names for some routes
3620 in express2 and express3.
3621
3622### v1.17.2 (2015-03-12):
3623* Fixed a bug that interfered with listing the routes in Express apps.
3624* Fixed a bug that caused custom transaction names to appear as "unknown".
3625* Added more log detail when instrumentation fails to load.
3626
3627### v1.17.1 (2015-03-05):
3628* Added instrumentation support for Postgres 4.x.
3629* Added instrumentation support for Datastax's Cassandra driver.
3630* Updated Oracle instrumentation to collect new datastore metrics.
3631
3632### v1.17.0 (2015-02-25):
3633
3634* Added instrumentation for modules in node core.
3635* Added support for native Promises in Node.js 0.12 and io.js 1.x.
3636* Traces will now contain separate segments for async waits and callbacks.
3637* Updated instrumentation for MongoDB to support previously un-instrumented
3638 methods for 1.x and 2.x versions of the node-mongodb-native driver.
3639* Fixed a bug in the recording of transaction metrics. Previously this would
3640 cause a duplicate of the transaction metric to be displayed in the
3641 transaction breakdown chart
3642
3643
3644### v1.16.4 (2015-02-20):
3645
3646* Fixed a bug in the logger to respect the configured log level in all cases.
3647
3648### v1.16.3 (2015-02-20):
3649
3650* Fixed a bug in hapi 8 view segments. Previously, the segments weren't being
3651 ended when the view ended.
3652
3653* Added a configuration option to completely disable logging. `logger.enabled`
3654 defaults to true, if set to false it won't try to create the log file.
3655
3656### v1.16.2 (2015-02-13):
3657
3658* Enable http/https proxy features on all supported Node versions.
3659
3660 Supported versions: Node.js 0.8, 0.10, 0.12 and io.js 1.x.
3661
3662* Fixed a bug in vhost detection in Hapi 8. This bug would result in a crash for
3663 users of vhosts.
3664
3665### v1.16.1 (2015-02-06):
3666
3667* Now New Relic Synthetics transaction tracing is on by default.
3668
3669 The previous release had the Synthetics transaction tracing feature turned off
3670 by default.
3671
3672### v1.16.0 (2015-02-06):
3673
3674* Added support for New Relic Synthetics transaction tracing.
3675
3676 New Relic Synthetics monitors your site from around the world. When you use
3677 Synthetics to monitor your Node application, up to 20 detailed transaction
3678 traces will now be captured every minute when the application is probed from
3679 Synthetics. To learn more about this feature, visit our
3680 [documentation](https://docs.newrelic.com/docs/synthetics/new-relic-synthetics/using-monitors/collecting-synthetic-transaction-traces).
3681
3682### v1.15.1 (2015-01-30):
3683
3684* Preliminary Node.js 0.12 support.
3685
3686 HTTP proxies are not supported on 0.12 yet. We don't recommend running the
3687 Agent on Node.js 0.11.15+ in production, but if you are testing on it, please
3688 let us know of any issues you encounter.
3689
3690### v1.15.0 (2015-01-23):
3691
3692* Added an API for recording custom Insights events. Read more about this in our
3693 [documentation](https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/nodejs-agent-api#custom-events-api)
3694
3695### v1.14.7 (2015-01-16):
3696
3697* Fixed a crash in express instrumentation in the handling of sub-routers.
3698
3699* Fixed a crash in http outbound connections when CAT is enabled and another
3700 library has frozen the http request headers.
3701
3702* Updated version checking to allow versions of the runtime >= 1.0.0. Thanks to
3703 [Mark Stosberg](https://github.com/markstos) for this patch!
3704
3705### v1.14.6 (2015-01-09):
3706
3707* The agent now logs the actual error when log file parsing fails. Thanks to
3708 [knownasilya](https://github.com/knownasilya) for this patch!
3709
3710* Fixed a crash where if domains were enabled config serialization would fail
3711 due to circular objects.
3712
3713### v1.14.5 (2014-12-30):
3714
3715* Errors that occur in background transactions now have custom parameters copied
3716 onto them in the same manner as web transactions.
3717
3718* Memcached instrumentation updated to account for additional arguments that
3719 might be passed to the command function that the agent wraps.
3720
3721### v1.14.4 (2014-12-22):
3722
3723* Custom web transactions can have their names changed by `nr.setTransactionName()`.
3724 Thanks to [Matt Lavin](https://github.com/mdlavin) for this patch!
3725
3726* Fixed a bug where Express instrumentation could crash if transaction state was
3727 lost in a sub-router.
3728
3729### v1.14.3 (2014-12-18):
3730
3731* Improved the Express instrumentation to be more defensive before doing
3732 property lookups, fixing a crash that could happen in an exceptional state.
3733
3734* Improved logging when the New Relic agent cannot connect to New Relic servers.
3735
3736* Make Cross Application Tracer header injection less aggressive fixing
3737 interaction with other libraries such as riak-js.
3738
3739### v1.14.2 (2014-12-11):
3740
3741* Added support for Hapi v8.
3742
3743* [briandela](https://github.com/briandela) contributed a fix for an crash that
3744 would occur when using hapi with vhosts.
3745
3746### v1.14.1 (2014-12-05):
3747
3748* Fixed a bug that caused some outbound http requests to show up in the
3749 New Relic UI as requests to `localhost` rather than the specified domain.
3750
3751* The agent no longer reports errors from outbound http requests if they were
3752 handled by the user's application
3753
3754### v1.14.0 (2014-11-25):
3755
3756* The node agent now instruments connections to Oracle Databases using the
3757 `oracle` driver. This patch was contributed by
3758 [ryanwilliamquinn](https://github.com/ryanwilliamquinn)
3759
3760* Fixed an issue that would break kraken apps when the node agent was enabled.
3761 This patch was contributed by [Lenny Markus](https://github.com/lmarkus)
3762
3763### v1.13.4 (2014-11-20):
3764
3765* Added support for the the aggregate method on mongodb collections. This patch
3766 was contributed by [taxilian](https://github.com/taxilian)
3767
3768### v1.13.3 (2014-11-13):
3769
3770* Fixed a bug in Cross Application Tracing where the agent would sometimes
3771 attempt to set a header after headers had already been sent.
3772
3773* Replaced the logger with one that is handles file writes properly lowering
3774 overall resource usage.
3775
3776 This is a small change with a large impact. `fs.createWriteStream` returns
3777 whether data was queued or not. If it is queued it is recommended to wait on a
3778 `drain` event but this isn't manditory. Most loggers we've found ignore this
3779 event which leads to many writes getting buffered and a rapid increase in
3780 native heap size as well as lowering the process's ability to respond to
3781 requests.
3782
3783### v1.13.2 (2014-11-06):
3784
3785* Updated support for hapi 7.2 and higher.
3786
3787 Hapi refactored how the server is instantiated and caused the agent to not be
3788 able to get transaction names. This release accounts for the update and
3789 enables full instrumentation.
3790
3791### v1.13.1 (2014-11-06):
3792
3793* This release was unpublished as it got packaged incorrectly.
3794
3795### v1.13.0 (2014-10-31):
3796
3797* Added support for Custom Metrics
3798
3799 Custom metrics provides a way to send additional metrics up to New Relic APM,
3800 which can be viewed with Custom Dashboards. We have two APIs for this,
3801 recordMetric(name, value) and incrementMetric(name[, value]). Read more about
3802 this in our docs:
3803 https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/nodejs-custom-metrics
3804
3805* Fixed a bug in deeply nested transactions.
3806
3807 Previously we allowed transactions to be nested to any depth. We've found in
3808 some cases this causes stack depth problems and are now limiting to 900
3809 segments per transaction. We will still collect metrics on all segments, but
3810 transaction traces will only show the first 900.
3811
3812* Fixed a bug where custom tracers would show 0 time if the transaction ended n
3813 them.
3814
3815 This may change the times you see for other types of tracers by a small
3816 amount. The change will reflect slightly more accurate timing.
3817
3818### v1.12.2 (2014-10-23):
3819
3820* Fixed a bug that would cause the application to crash on outbound connections
3821 when using node 0.8.
3822
3823* Fixed a bug that could sometimes cause the application to crash while parsing
3824 MySQL queries.
3825
3826### v1.12.1 (2014-10-16):
3827
3828* Added support for Label Categories
3829
3830 The agent now supports setting Labels for your application on a per instance
3831 level, using either an environment variable, or a config file setting.
3832 https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/categories-rollups-organizing-your-apps-servers
3833
3834* Improved transaction names for express 4
3835
3836 express 4 added the ability to mount apps and routers at specific urls. The
3837 node agent would previously use only the portion of the route that was the
3838 last router or app matched as the transaction name. Transaction names will
3839 now include the entire matched route.
3840
3841* Added detection for uninstrumented instances of modules that should be instrumented
3842
3843 The agent will now detect if an application has required a module before
3844 `require('newrelic')` .If this occurs, the agent will add a warning in the
3845 log file and display a warning banner in the UI.
3846
3847* Added more logging to custom instrumentation APIs at `debug` level.
3848
3849 The logging was improved for the benefit of people using the following
3850 APIs: `createTracer`, `createWebTransaction`, `createBackgroundTransaction`,
3851 and `endTransaction`. It will log when transactions are created and when
3852 transactions are ended. It will also log when it can't create a tracer due
3853 to there being no active transaction.
3854
3855* Fixed a bug in QL instrumentation where the event emitter from
3856 `query` could not chain `.on` calls. This patch was contributed by
3857 [sebastianhoitz](https://github.com/sebastianhoitz).
3858
3859* Fixed a bug in `createBackgroundTransaction` where if the agent was disabled
3860 it didn't take a `group` argument. This patch was contributed by [nullvariable](https://github.com/nullvariable).
3861
3862* Fixed a bug in our URL parsing where in Node v0.11.14 `url.parse` returns a
3863 differently shaped object than expected. This patch was contributed by
3864 [atomantic](https://github.com/atomantic)
3865
3866 **Note**: Node v0.11.x is not officially supported, but Node v0.12 will be and
3867 this patch helps us get ready for that.
3868
3869### v1.12.0 (2014-10-10):
3870
3871* Added support for Cross Application Tracing
3872
3873 The agent now supports Cross Application Tracing, which allows the New Relic
3874 APM UI to display traces that span multiple applications.
3875 https://docs.newrelic.com/docs/apm/traces/cross-application-traces/cross-application-traces
3876
3877* Fixed a bug that would cause application to crash on request when using the
3878 kraken framework.
3879
3880* Loosened the restrictions on the `app_name` setting. Application names may now
3881 include any Unicode characters.
3882
3883### v1.11.5 (2014-10-06):
3884
3885* Fixed a type error while checking the payload size to be sent to the New Relic
3886 servers.
3887
3888 When this happened the agent would fail to send the payload to New Relic. This
3889 was more likely to occur in higher throughput applications.
3890
3891### v1.11.4 (2014-10-03):
3892
3893* Fixed a bug where mutibyte characters would cause an error when sending data
3894 to the New Relic servers.
3895
3896### v1.11.3 (2014-09-26):
3897
3898* Updated hapi instrumentation to support the recently released v6.9.
3899
3900* Fixed a bug where an invalid package.json could cause the agent to crash while
3901 it recursed through `node_modules` gathering version details.
3902
3903* Properly name `other` SQL queries.
3904
3905 Previously when the agent failed to parse SQL it would create a metric stating
3906 the database type, query type, and query table were all unknown. This has been
3907 changed to keep track of database type and create an appropriate `other`
3908 operation metric like other agents.
3909
3910### v1.11.2 (2014-09-19):
3911
3912* Custom Instrumentation functions now pass through the return value of their
3913 passed in callback.
3914
3915* Multiple improvements to PostgreSQL instrumentation
3916
3917 When no callback was detected in the query functions, we were inserting our
3918 own. The insertion itself caused a crash. Adding a callback also modified the
3919 behavior of the pg module. Instead, we now listen for `error` or `end` events
3920 to finish segments.
3921
3922 We now generate metrics for statement type/table combinations. Look for these
3923 in the database tab your APM Account!
3924
3925### v1.11.1 (2014-09-11):
3926
3927* Improved MongoDB find instrumentation.
3928
3929 The `mongo` driver provides many different ways to invoke its API and find
3930 documents. In previous releases, some API invocations would create transaction
3931 trace segments that would not end properly, leading to inaccurately large
3932 segment times. This release now covers all the ways to find and iterate
3933 through documents, ensuring segment times are accurate.
3934
3935### v1.11.0 (2014-09-05):
3936
3937* We now support PostgreSQL via the `pg` driver.
3938
3939 The Node.js agent now records the amount of time spent in transactions with
3940 PostgreSQL databases. This timing can be viewed in the Transactions dashboard
3941 within individual transactions and their traces.
3942
3943 The agent supports all of the following `pg` usage scenarios:
3944 * Using the pure javascript API exposed directly from `pg`
3945 * Using the "native" API exposed from `pg.native`
3946 * Using the "native" API exposed directly from `pg` when the
3947 `NODE_PG_FORCE_NATIVE` environment variable is set
3948 * Using the pure javascript API from the `pg.js` module
3949
3950### v1.10.3 (2014-08-28):
3951
3952* Removed a preemptive DNS lookup of the New Relic servers that could cause
3953 errors when behind a proxy.
3954
3955### v1.10.2 (2014-08-25):
3956
3957* Fix to prevent proxy credentials transmission
3958
3959 This update prevents proxy credentials set in the agent config file from
3960 being transmitted to New Relic.
3961
3962### v1.10.1 (2014-08-22):
3963
3964* MySQL Pooling Support
3965
3966 Better support for mysql pooling, including connections that use
3967 `createPoolCluster` and `createPool`. Previously connections obtained through
3968 a pool could potentially be uninstrumented.
3969
3970### v1.10.0 (2014-08-15):
3971
3972* Custom instrumentation
3973
3974 The agent now supports the ability to annotate application code to provide
3975 customized instrumentation. This includes the ability to time both web and
3976 background transactions, and add tracers to measure activity within
3977 transactions like querying a database. Documentation available at
3978 https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/nodejs-custom-instrumentation
3979
3980### v1.9.2 (2014-08-08):
3981
3982* Fixed a bug in the express instrumentation where if you named an error handler
3983 function `handle` it would cause a recursion depth error.
3984
3985### v1.9.1 (2014-07-30):
3986
3987* Added a check for invalid characters in the `app_name` setting.
3988
3989 The agent will now emit a warning and disable itself if any application name
3990 is invalid. Allowed characters are alphanumerics and certain punctuation
3991 characters ([](){}.?!')
3992
3993* Router queue time now properly handles floating point values.
3994
3995* Fixed a bug where a socket connection could throw a synchronous error and
3996 cause the application to crash.
3997
3998
3999### v1.9.0 (2014-07-24):
4000
4001* We now support Cassandra via the `node-cassandra-cql` driver.
4002
4003 New database instrumentation means that we can present you with the timing
4004 data for how long those queries take. Thanks to Aaron Silvas from GoDaddy for
4005 the initial implementation of the Cassandra instrumentation.
4006
4007* Router queue time now supports `t=<number>` in the X-REQUEST-START and
4008 X-QUEUE-START headers.
4009
4010
4011### v1.8.1 (2014-07-18):
4012
4013* Agent now tracks metrics for router queue time.
4014 In addition to X-REQUEST-START, the agent now supports X-QUEUE-START header times.
4015 This metric will show up as "Request Queueing" in the Overview tab.
4016
4017### v1.8.0 (2014-07-11):
4018
4019* General release of proxy support for the agent to connect to New Relic.
4020 * HTTP/HTTPS support from the `newrelic` module to the proxy
4021 * HTTP/HTTPS support from the `newrelic` module to New Relic.
4022 * Basic proxy authentication.
4023 * Allow custom certificates during TLS negotiation.
4024 * For more information, read our docs [here](https://docs.newrelic.com/docs/nodejs/customizing-your-nodejs-config-file#proxy)
4025* Fix for enabling High Security Mode via an environment variable
4026* Optimization to allow early garbage collection of TLS slab buffers.
4027
4028### v1.7.5 (2014-07-02):
4029
4030* Plain `http` routes (i.e. routes outside of a framework) now apply config
4031 naming rules early. See [rules for naming and ignoring requests](https://github.com/newrelic/node-newrelic#rules-for-naming-and-ignoring-requests).
4032
4033 This fixes a bug where generating the *Browser Timing Header* would not work
4034 without a framework (i.e. express, restify, hapi).
4035
4036* *Beta* support for connecting to newrelic via ssl through a proxy.
4037 See [issue 128](https://github.com/newrelic/node-newrelic/issues/128) for details.
4038
4039### v1.7.4 (2014-06-26):
4040
4041* The agent now reports the value of the `NODE_ENV` environment variable
4042 to New Relic.
4043
4044### v1.7.3 (2014-06-20):
4045
4046* Support for instrumenting a standalone express 4 router.
4047 See [issue 154](https://github.com/newrelic/node-newrelic/pull/154).
4048* Set the default log level to `info`.
4049
4050### v1.7.2 (2014-06-13):
4051
4052* Captured parameters for express, restify, and hapi have been normalized.
4053
4054 When `capture_params` is enabled the agent will collect route and query
4055 parameters. Previously express and restify only captured route params, and
4056 hapi only captured query params. This normalizes the behavior across the
4057 frameworks.
4058
4059* Fixed an issue with restify instrumentation that caused the agent to always
4060 collect route parameters.
4061
4062 Users of restify who want to continue capturing route (and now query)
4063 parameters are advised to enable `capture_params`.
4064
4065* Fixed an issue where circular configs caused the agent to crash.
4066
4067### v1.7.1 (2014-06-05):
4068
4069* Fixed an issue where collected errors did not include captured and custom
4070 parameters.
4071
4072* Added the environment variable `NEW_RELIC_HIGH_SECURITY`. This correlates to
4073 the `high_security` setting in your `newrelic.js` for High Security Mode.
4074
4075
4076### v1.7.0 (2014-05-29):
4077* Client side setting of `high_security` is now supported.
4078
4079 High Security Mode is a feature to prevent any sensitive data from being sent
4080 to New Relic. The local setting for the agent must match the server setting in
4081 the New Relic APM UI. If there is a mismatch, the agent will log a message and
4082 act as if it is disabled. A link to the docs for High Security Mode can be
4083 found [here](https://docs.newrelic.com/docs/subscriptions/security#high-security)
4084
4085 Attributes of high security mode (when enabled):
4086 * requires ssl
4087 * does not allow capturing of parameters,
4088 * does not allow custom parameters
4089
4090 The default setting for High Security Mode is ‘false’.
4091
4092 Note: If you currently have high security mode enabled within the New Relic
4093 APM UI, you have to add `high_security: true` to your local newrelic.js.
4094
4095* Fixed a bug in our instrumentation of restify, where if you were using the
4096 restify client with express as a web server, req.query would be overridden.
4097
4098### v1.6.0 (2014-05-22):
4099
4100* New Relic Insights support no longer requires a feature flag. If you are a
4101 paying customer, you'll begin to see data show up in Insights as soon as you
4102 upgrade to 1.6.0. The agent will send event data for every transaction up to
4103 10,000 per minute. After that events are statistically sampled. Event data
4104 includes transaction timing, transaction name, and any custom parameters. You
4105 can read what is sent in more detail
4106 [here](http://docs.newrelic.com/docs/insights/basic-attributes#transaction-defaults).
4107
4108 You can read more about Insights [here](http://newrelic.com/insights).
4109 Documentation for configuring this feature can be found
4110 [here](https://docs.newrelic.com/docs/nodejs/customizing-your-nodejs-config-file#tx_events).
4111
4112### v1.5.5 (2014-05-15):
4113
4114* Fix a bug where if the user disabled the error collector, error count would
4115 be carried over harvest cycles instead of reset. This would result in an ever
4116 increasing error count until the app was restarted.
4117
4118* New Relic Insights beta support. This is a feature for our paying customers.
4119 The support of Insights in the agent is beta, this means we don't recommend
4120 turning the feature on in production, but instead trying it out in development
4121 and staging environments.
4122
4123 To enable Insights support add the following to your `newrelic.js`:
4124
4125 ```
4126 feature_flag : {
4127 insights: true
4128 }
4129 ```
4130
4131### v1.5.4 (2014-05-08):
4132
4133* On connect, the full `newrelic` module configuration is pushed to
4134 New Relic APM. Full config will be visible under the
4135 *Agent initialization* tab, under the *Settings* button in
4136 the APM application page.
4137
4138 The reported settings will reflect the *running* agent config,
4139 which may differ from the `newrelic.js` file depending on server-side,
4140 and environmental configuration.
4141
4142### v1.5.3 (2014-05-01):
4143
4144* Express 4 support.
4145
4146 Closes [#132](https://github.com/newrelic/node-newrelic/issues/132).
4147 Express 4 apps now have their transactions named correctly.
4148 Errors in the middleware chain are properly recorded.
4149
4150### v1.5.2 (2014-04-24):
4151
4152* Fix [issue #118](https://github.com/newrelic/node-newrelic/issues/118)
4153 where dangling symbolic links in the `node_modules` folder
4154 would crash the environment scraper.
4155
4156### v1.5.1 (2014-04-18):
4157
4158* Upgrade continuation-local-storage dependency to 3.0.0.
4159 The `newrelic` node module uses `cls` to help join asynchronous transaction
4160 segments. The latest `cls` module includes a fix that prevents contexts from
4161 leaking across transactions.
4162
4163### v1.5.0 (2014-04-11):
4164
4165* Add high-security compliance for accounts with enterprise security enabled.
4166 By default, the agent now works with high-security accounts,
4167 whereas previously agents would receive an `Access Violation`.
4168* Add a `.addCustomParameter(name, value)` api call for adding custom parameters
4169 to transaction traces, and extend the `.noticeError(error, customParameters)`
4170 for adding additional parameters to error traces.
4171* Documentation fix in the `README.md` for ignoring `socket.io` routes.
4172* Better support for disabling browser timing headers server side. Previously
4173 the agent would not pick up the server change until restart. The agent will
4174 now disable browser timing headers as soon as the next harvest cycle.
4175* Fix a `socket hangup error` that was causing some agents to fail to
4176 handshake with the New Relic servers.
4177
4178### v1.4.0 (2014-03-14):
4179
4180* Browser monitoring! Real User Monitoring! Which is also known as RUM!
4181 Whatever it's called, it allows you to see how long your pages take to load,
4182 not just on the server side, but in the browser! Wow! It's super cool! We
4183 know a lot of you have been waiting for this, and it's here! It's manually
4184 set up with an API call! Check the README for details!
4185* By default, all communication between New Relic for Node and New Relic's
4186 servers is now protected with crisp, clean TLS encryption. To minimize the
4187 CPU overhead of running connections over SSL (and it can be configured, see
4188 the README and the online documentation for details on how to return to plain
4189 HTTP), New Relic for Node is now using a keep-alive connection that will
4190 properly pipeline connections, for both HTTP and HTTPS.
4191* Improved the timings for a large class of MongoDB / Mongoose use cases. If
4192 you've encountered the issue where MongoDB trace segments last for an
4193 absurdly long duration, this should help.
4194
4195### v1.3.2 (2014-02-12):
4196
4197* Includes a nearly total rewrite of the connection layer that the module uses
4198 to communicate with New Relic's servers:
4199 * More useful logs! All of the logging has been reviewed closely to
4200 maximize its value and usefulness at pretty much every level. In
4201 practice, this means that the messages logged at 'info' and higher should
4202 only be for things that are relevant to you as a customer, and at 'debug'
4203 and 'trace' should be much more useful for us when we help you isolate
4204 issues with New Relic in your applications.
4205 * See data faster! As part of the connection handshake with New Relic, the
4206 module will now send any performance metrics gathered during the startup
4207 cycle immediately, instead of waiting a minute for the first full harvest
4208 cycle.
4209 * Get data to New Relic more reliably! When the module has issues
4210 connecting to New Relic, it's more consistent and resilient about holding
4211 your performance data for later delivery.
4212 * Use less bandwidth! Performance data delivery to New Relic is now
4213 sequential instead of simultaneous. This means that the bandwidth used
4214 by New Relic will be less bursty, especially on hosts running many
4215 instrumented applications (or cluster workers).
4216 * Better implementation! There were a number of architectural problems with
4217 the old version of the connection layer, which (among other things) made
4218 it difficult to test. The new version is simpler, has a much cleaner
4219 API, and has many, many more tests.
4220
4221### v1.3.1 (2014-01-31):
4222
4223* Ignored status codes are now always casted to numbers so that people using
4224 environment-variable configuration or strings in config still get error
4225 status ignored properly.
4226* If you disabled server-side configuration, the server was still able to
4227 set the value of apdex_t for your app. This was an oversight, and has
4228 been corrected.
4229* Before, if you had request renaming rules, if the end result was the same
4230 as the match pattern (mapping `/path` to `/path`), they would be silently
4231 ignored. This has been fixed.
4232* MySQL instrumentation handles callback more consistently, so the transaction
4233 tracer doesn't get confused and stop tracking transactions with MySQL calls
4234 in it.
4235
4236### v1.3.0 (2014-01-17):
4237
4238* Support for Spumko's Hapi! This support works with both Hapi 1.x and 2.0.0,
4239 and like our Express and Restify instrumentation will automatically name
4240 transactions after Hapi paths (get it) and time how long it takes to render
4241 views.
4242* Before, transaction naming and ignoring rules didn't work with Express and
4243 Restify routes. This has been addressed and the documentation has been
4244 clarified. Much gratitude to everyone who helped us figure out how to get
4245 this right, and for dealing with the previous, unclear documentation.
4246* Parameters in the ignored params list weren't being ignored in all cases.
4247* A very annoyingly chatty log message had its priority level dropped several
4248 levels.
4249
4250### v1.2.0 (2013-12-07):
4251
4252* Before, there were certain circumstances under which an application
4253 would crash without New Relic installed, but wouldn't crash with it.
4254 This has been fixed, and applications with New Relic installed now
4255 crash consistently. The error tracer is now also considerably simpler.
4256* Added a security policy. See the new section in README.md or read
4257 SECURITY.md.
4258* Future-proofed the MongoDB instrumentation and prevented the module from
4259 breaking GridFS.
4260* Made a small tweak that should reduce the amount of blocking file I/O done by
4261 the module.
4262* The module's instrumentation and harvest cycle will now not hold the process
4263 open in Node 0.9+. This should make it easier for processes to shut
4264 themselves down cleanly with New Relic running.
4265* The environment information gatherer will no longer crash if it tries to read
4266 a directory where it's expecting a file.
4267* Errors thrown during the execution of Express routes or Connect middlewares
4268 that were attached to requests that ended in HTTP status codes configured to
4269 be ignored by default will now be ignored correctly.
4270* Made the module play nicer with Node's REPL. It no longer assumes that an
4271 application necessarily has a main module.
4272* A few tweaks were made to support the CoolBeans dependency injection
4273 framework.
4274* Several log messages were demoted to a less chatty level.
4275
4276### v1.1.1 (2013-11-08):
4277
4278* Added the infrastructure necessary to support key transactions and New
4279 Relic's new alerting policies.
4280* The agent no longer renames transactions for requests that end in error to
4281 the gnomic and unhelpful '400/\*' (or whatever the final HTTP status code
4282 ends up being). This should make the traced errors tab considerably more
4283 useful.
4284* Improved instrumentation for legacy `http.createClient` and `http.Client`
4285 client methods. A few modules still use these legacy API calls, and the old
4286 instrumentation was just plain wrong.
4287* Changed how the error tracer deals with certain kinds of errors to deal with
4288 differences between Node versions 0.8 and 0.10. It should now convert throws
4289 into fatal errors less frequently.
4290* Removed useless fs.readDir instrumentation, which generated a lot of metrics
4291 but which New Relic was unable to display in any useful form. Maybe it will
4292 come back someday in a more useful incarnation.
4293
4294### v1.1.0 (2013-11-05):
4295
4296* Added a new call to the API, `.noticeError`. See the docs for details, but
4297 unlike the other calls on the API, you can use this to pass off errors
4298 anywhere in your app, not just from within web requests.
4299* Ignoring slow (or polling) requests was only being applied to slow
4300 transaction traces. It now applies to metrics and transactions that end in
4301 errors.
4302* MongoDB, Redis and Memcached now honor the `capture_params` and
4303 `ignore_params` settings.
4304* New Relic for Node.js, like New Relic's other agents, has a sophisticated
4305 system for repeatedly trying to connect to New Relic's servers when the first
4306 attempt results in failure. This had been broken since (roughly) January. It
4307 works again now.
4308* The built-in debugging for the transaction tracer was out of date with
4309 respect to the production tracer. This is fixed, and you're welcome to
4310 satisfy your curiosity by enabling it, but it's really not going to be useful
4311 to you unless you feel like taking the time to understand what the tracer is
4312 doing at a low level. Do not ever enable it in production, as it slaughters
4313 the tracer's performance and generates a huge pile of objects per
4314 transaction.
4315
4316### v1.0.1 (2013-10-30):
4317
4318* Added a new setIgnoreTransaction call to the exported API to allow explicit
4319 control over whether transactions should be ignored or not. Mark those
4320 polling routes to be ignored! Pull your crazy custom favicon.ico renderer out
4321 of the ignore list!
4322* The module will no longer pollute MongoDB queries with New Relic-only
4323 parameters. Thanks to Alon Salant for identifying this issue, and all
4324 apologies to him for the trouble it caused him.
4325* The instrumentation for MongoDB, memcached, Redis, and Express will now
4326 honor the setting of the `capture_params` configuration flag. Before the
4327 module always captured query parameters.
4328* Fixed a problem that would cause New Relic for Node to fail on versions of
4329 Node between 0.8.0 and 0.8.3.
4330* Upgraded to the newest version of `continuation-local-storage`, which has
4331 many fixes for dealing with monkeypatched EventEmitters.
4332
4333### v1.0.0 (2013-10-24):
4334
4335* General release. No code changes from v0.12.1.
4336
4337### v0.12.1 / beta-38 (2013-10-17):
4338
4339* The transaction namer wasn't respecting error_collector.ignore_error_codes.
4340 We've unified the code paths there so that this no longer happens, so that
4341 if the status code of a request is in the list of codes to be ignored, it's
4342 no longer rolled up under that status code and gets its normal name.
4343
4344### v0.12.0 / beta-37 (2013-10-16):
4345
4346* Changed how MongoDB, MySQL, memcached, and Redis metrics are reported to New
4347 Relic. This is part of a larger effort to make the Monitoring > Database tab
4348 of the New Relic UI more useful for Node developers. There will be a brief
4349 period where your dashboards will have both the old and new metrics, which
4350 could lead to some temporary duplication or metric names. These "duplicates"
4351 will gradually stop showing up as the reporting windows containing the old
4352 metric names expire. Be sure to let us know if you have strong feelings one
4353 way or another about this change, as it's a work in progress.
4354* Updated the module's dependencies to fix another subtle bug in how
4355 error-handling works in Node 0.8.x. This should resolve the errors some users
4356 were seeing.
4357
4358### v0.11.9 / beta-36 (2013-10-12):
4359
4360* Fixed a crash in the tracer that could turn a recoverable application error
4361 into an unrecoverable process crash. Mea culpa, our apologies for the
4362 inconvenience if you ran into this. In our defence, the errors we're running
4363 into are getting ever more exotic as we get most of the common stuff nailed
4364 down.
4365* Added the ability to use the preconfigured Azure Web Server name as the
4366 application name for a Node app. Thanks to New Relic .NET engineer Nick Floyd
4367 for the suggestion.
4368
4369### v0.11.8 / beta-35 (2013-10-11):
4370
4371* Added a license entry to package.json.
4372* Due to an npm bug, the module package got huge. This one is much smaller.
4373
4374### v0.11.7 / beta-34 (2013-10-11):
4375
4376* The last build of the agent had a flaw in how it dealt with outbound requests
4377 that made it way too stringent about dealing with default ports. It is now
4378 more sane about defaults.
4379* The behavior of configuration precedence is slightly different now.
4380 Previously, if there were list values set in the defaults, configuration
4381 file, environment variables, or server-side configuration, they would be
4382 concatenated instead of being overwritten. This made it impossible to
4383 override some of the defaults (most notably, it was impossible to not ignore
4384 HTTP status code 404 in the error tracer), so now the configuration file will
4385 overwrite the defaults, and environment variables will overwrite the
4386 configuration file. Values sent by New Relic will still be concatenated
4387 instead of overwriting, though (again, this only affects configuration
4388 variables with list values). Thanks to GitHub user grovr for identifying
4389 the problem!
4390* The error tracer will collect errors off transactions after the first harvest
4391 cycle (thanks to GitHub user grovr for identifying this issue).
4392* `cluster` users will no longer see occasional crashes due to New Relic's
4393 instrumentation.
4394* Fixed a few minor documentation errors that made it tough to use the
4395 suggested ignoring rules for socket.io transactions.
4396
4397### v0.11.6 / beta-33 (2013-10-08):
4398
4399* Changed the module to not load the instrumentation *at all* if the agent is
4400 disabled via configuration. This will keep the module from leaking any
4401 resources when it's disabled.
4402* The agent used to include query parameters in the name for outbound requests,
4403 making for unwieldy-looking trace segments. Those parameters are now
4404 stripped off, and if `capture_params` (and `ignored_params`) are enabled,
4405 parameters will be captured for (nicely-formatted) display.
4406* Added a stubbed API so that when the agent is disabled, calls to the New
4407 Relic API will not throw. Add naming calls to your code with impunity!
4408* The module now looks in many more places for `newrelic.js` before complaining
4409 that it can't be found. In order, it looks in the current working directory,
4410 the directory of the Node process's main module (normally whatever file you
4411 pass to node on the command line), the directory pointed to by the
4412 environment variable `NEW_RELIC_HOME`, the current process's `$HOME`, and the
4413 directory above the node_modules directory where `newrelic` is installed.
4414
4415### v0.11.5 / beta-32 (2013-10-03):
4416
4417* Fixed a major issue in the transaction tracer that affected users of certain
4418 Express middleware plugins. HUGE thanks to Nicolas Laplante for his
4419 assistance in isolating and reproducing the bug, and also to the denizens of
4420 #libuv for eyeballing my various unsuccessful attempts at a fix.
4421* Fixed another issue in the tracer where certain objects were being wrapped
4422 too many times. Thanks to José F. Romaniello for confirming the fix.
4423* Changed how requests handled by Express and Restify routes are named. This
4424 change is being rolled out both in this module and on the New Relic website,
4425 so there is a chance you will see the same route (or very similar routes)
4426 show up twice in aggregated metrics.
4427* Dropped the default apdex tolerating value from 500 milliseconds to 100
4428 milliseconds. This means that transactions slower than 400 milliseconds will
4429 generate slow transaction traces. Read the documentation in README.md on
4430 `apdex_t` and `apdex_f` for further details.
4431
4432### v0.11.4 / beta-31 (2013-10-01):
4433
4434* Fixed an error in the Connect and Express middleware instrumentation. Another
4435 tip of the hat to Jeff Howell at Kabam for identifying this problem and
4436 pointing to a solution!
4437
4438### v0.11.3 / beta-30 (2013-10-01):
4439
4440* Rewrote the MongoDB instrumentation. Big thanks to Jeff Howell at Kabam for
4441 demonstrating a much more reliable and simple approach than what we had
4442 before! Also expanded the number of MongoDB methods instrumented to include
4443 more of the common operations and indexing operations.
4444* Changed the default value of the `top_n` configuration parameter. Read the
4445 documentation in `lib/config.default.js` for the details (we've taken another
4446 run at making the docs for `top_n` easier to understand), but the upshot is
4447 that by default you should see a greater diversity of slow transaction traces
4448 now.
4449* Closed a hole in the transaction tracer related to Connect and Express-style
4450 middleware chains.
4451* Fixed issues identified by testing against various versions of 0.11 and
4452 master.
4453* Added guidelines for contributing to the module. Read CONTRIBUTING.md
4454 for details.
4455
4456### v0.11.2 / beta-29 (2013-09-25):
4457
4458* Fixed a bug with the Connect instrumentation that would cause it to
4459 crash when using Connect's static middleware in strict mode. Using
4460 ES5 future reserved keywords for function names is a bad idea, and
4461 this is why, but static's name is highly unlikely to change. For
4462 those of you who are examining the state of your middleware stack after
4463 configuring it, you probably shouldn't be doing that, but if you run into
4464 problems with the New Relic agent installed, try changing your test to use
4465 `name.indexOf('whatever') === 0` as the predicate instead of
4466 `name === 'whatever'`.
4467
4468### v0.11.1 / beta-28 (2013-09-24):
4469
4470* Prevent requests from being double-counted by changing the tracer to
4471 always reuse existing transactions rather than trying to nest them.
4472* Changed the Connect instrumentation to preserve the names of middleware
4473 functions after wrapping them. If you need this change, you should
4474 probably change your code so you don't need it anymore.
4475* Added a bunch of server-side configuration options that are known but
4476 unsupported to the agent.
4477
4478### v0.11.0 / beta-27 (2013-09-20):
4479
4480* IMPORTANT. There have been MAJOR CHANGES in how requests are named for
4481 display and aggregation in the New Relic user interface. Read the section in
4482 the README on transactions and request naming for details. For good measure,
4483 read it twice. If your requests are all still ending up named `/*`, read
4484 it a third time. This is **especially** true if you're not using Express
4485 or Restify, in which case you will almost certainly want to make changes
4486 in how you configure New Relic.
4487* IMPORTANT. New Relic for Node.js now supports the full range of server-side
4488 configuration options offered by the New Relic web interface. By default,
4489 server-side settings will override the settings in your configuration file
4490 (or environment variables). You can disable server-side configuration by
4491 setting `ignore_server_configuration` to `true` in your configuration file
4492 (or setting `NEW_RELIC_IGNORE_SERVER_CONFIGURATION` to 'true').
4493* BREAKING CHANGE: The New Relic module now exports an API to be used for
4494 naming transactions and for adding URL to transaction name mapping rules. If
4495 you were using `require('newrelic')` as an interface to the agent's
4496 configuration or its internals, you'll need to fix your code (also you
4497 probably shouldn't have been doing that).
4498* BREAKING CHANGE: The configuration parameter
4499 `transaction_tracer.trace_threshold` has been renamed
4500 `transaction_tracer.transaction_threshold` to make it consistent with New
4501 Relic's other agents.
4502* Applications using the Express or Restify routers will now have their
4503 requests named after the matching routes. These names can be overridden
4504 but the transaction-naming API.
4505* There are new configuration parameters for adding rules for naming or
4506 ignoring requests. The README has a good example for how to keep socket.io
4507 from blowing out your average response time. You should read it!
4508* Tweaked the calculation of exclusive time in transaction traces, which
4509 should make more of the transaction trace detail pages make sense.
4510
4511### v0.10.3 / beta-26 (2013-08-25):
4512
4513* Fixed a regression in `beta-25` that caused the agent to incorrectly
4514 calculate an important timestamp, thus leading to data not showing up
4515 in New Relic.
4516* Improved in-memory aggregation (when the connection between the agent
4517 and New Relic is unavailable or failing).
4518
4519### v0.10.2 / beta-25 (2013-08-23):
4520
4521* Fixed a serious error in how the agent handles communication errors
4522 when sending errors to New Relic. If you're running v0.10.0 or v0.10.1,
4523 upgrade sooner rather than later, as those versions are losing data.
4524* Substantially improved the quality of reporting on errors noticed by the
4525 Node agent. Stack traces, scopes, and messages should be much better.
4526
4527### v0.10.1 / beta-24 (2013-08-19):
4528
4529* The instrumentation for `http` no longer assumes that the hostname for
4530 external requests will be named `host` (`hostname` is also allowed, and
4531 `http.request()` defaults to `localhost`).
4532* The Node agent and New Relic's servers disagreed about what many metrics
4533 should be called. The agent was wrong and it regrets the error.
4534* Minor tweaks to database instrumentation (MongoDB and MySQL) that could have
4535 a small but visible impact on the overview display.
4536
4537### v0.10.0 / beta-23 (2013-08-17):
4538
4539* IMPORTANT. The transaction tracer in this build is COMPLETELY NEW. This means
4540 that the agent will probably work just fine under Node 0.8 and newer, but
4541 Node versions 0.6 and older are presently unsupported, and support for them
4542 may or may not come back. However, the quality of the metrics gathered by the
4543 agent is now vastly improved.
4544* There are over 100 commits included in this build. Every effort has been made
4545 to ensure that we will not crash your applications, but be aware there may be
4546 regressions.
4547* Substantially more information is displayed by New Relic for slow transaction
4548 traces. How this information is displayed is a work in progress, as New Relic
4549 works to create a consistent user experience for developers writing both
4550 synchronous and asynchronous applications.
4551* Most Redis and memcached operations will now provide details on which keys
4552 were involved in an operation.
4553* The error tracer has been given a new coat of paint as well, and takes better
4554 advantage of Node domains, when they're available. Fewer errors should be
4555 double-counted, as well.
4556* MongoDB instrumentation is substantially improved.
4557* Express instrumentation now deals with the removal of the (very helpful)
4558 version field from recent versions of Express.
4559* Exclusive durations are reported for metrics, improving transaction
4560 breakdowns.
4561* Several bugs in the communication between the New Relic agent and New Relic's
4562 servers have been fixed.
4563* Failed connection attempts between the agent and New Relic's servers no longer
4564 cause aggregated metrics to be lost, nor will this trigger an agent crash.
4565
4566### v0.9.22 / beta-22 (2013-06-11):
4567
4568* Capture request URL before Express can mess with it.
4569
4570### v0.9.21 / beta-21 (2013-06-04):
4571
4572* Don't try to connect without a license key.
4573* Clear out previous connection listeners on failed connection attempts.
4574* Don't crash when normalizing paths without a leading slash.
4575
4576### v0.9.20 / beta-20 (2013-03-28):
4577
4578* The implementation of domains changed in Node 0.10.x, which necessitated
4579 a fair amount of work on the error tracer to preserve the existing
4580 error tracer behavior.
4581* The error tracer no longer improperly swallows thrown errors.
4582* The agent no longer assumes that a home directory is set.
4583* The agent now works correctly with the `should` assertion helper
4584 library.
4585
4586### v0.9.19 / beta-19 (2013-03-04):
4587
4588* HTTPS instrumentation is both more complete and far better tested.
4589* Restify servers using HTTPS listeners should now be properly
4590 instrumented.
4591
4592### v0.9.18-137 / beta-18 (2013-01-30):
4593
4594* `;` is now treated as a query separator in URLs, just like `?`.
4595* When using `stdout` or `stderr` for logging and not using a configuration
4596 file, logging will now work as expected.
4597* The error-handling code for DNS lookup of New Relic's servers was itself
4598 erroneous. It should no longer crash instrumented apps when DNS lookup
4599 fails.
4600* Simplified agent startup process.
4601
4602### v0.9.17-132 / beta-17 (2013-01-24):
4603
4604* Using fs.readdir will no longer crash the agent and your apps. Oops!
4605* Added error-tracing middleware for Connect 1 & 2 applications, which includes
4606 Express 2 and 3 applications. This middleware is inserted automatically and
4607 transparently. Because it's common for end-user error handlers to not
4608 propagate errors (by calling next(error) from within the handler), the
4609 instrumentation inserts the middleware before the first error handler added
4610 to the middleware chain.
4611* The node-redis driver now correctly traces Redis calls made without a
4612 callback.
4613* Connections to New Relic that partially succeeded will now correctly keep
4614 attempting to connect until the connection succeeds or the number of retries
4615 is exhausted.
4616* Added a handler for yet another kind of New Relic server error
4617 (RuntimeError).
4618
4619### v0.9.16-121 / beta-16 (2013-01-16):
4620
4621* For some of the modules instrumented by the agent (fs, http, Express 2
4622 and 3), the error tracer now adds error tracing to wrapped function calls.
4623 This means that more of the functions in those modules will send traced
4624 errors to New Relic, even if they're trapping errors themselves. Also
4625 improves error tracer in versions of Node without domains. The error
4626 tracer rethrows all caught errors, so as to not alter behavior of
4627 instrumented apps.
4628* The error count sent by the agent was frequently incorrect due to an
4629 off-by-one bug.
4630* Include the entire stacktrace in traced errors.
4631* When the agent fails to successfully connect to New Relic's servers, it
4632 will try 6 more times, progressively waiting longer between each failed
4633 attempt. If no connection can be made, the agent will shut itself down.
4634* The agent no longer crashes instrumented applications when DNS resolution
4635 fails during the initial handshake with New Relic's servers. It logs the
4636 failures instead and retries later.
4637* The agent no longer alters the behavior of the generic-pool module in a
4638 way that causes modules using it to break (including node-postgres).
4639* In some cases, the domains-based error tracer was not working correctly.
4640* The agent logs significantly more useful debugging information.
4641
4642### v0.9.15-107 / beta-15 (2013-01-14):
4643
4644* The agent's built-in compression for sending large payloads to New Relic
4645 wasn't correctly handling the Buffer returned by zlib, leading to a crash.
4646
4647### v0.9.14-105 / beta-14 (2013-01-07):
4648
4649* In some cases, the monkeypatching used by the instrumentation wasn't
4650 written sufficiently defensively, leading to applications crashing at
4651 startup when using the agent.
4652* Changed how packages and dependencies are serialized when sent to New
4653 Relic's servers.
4654
4655### v0.9.13-101 / beta-13 (2013-01-07):
4656
4657* When New Relic's servers (or an intermediate proxy) returned a response with
4658 a status code other than 20x, the entire instrumented application would
4659 crash.
4660* Some metric normalization rules were not being interpreted correctly, leading
4661 to malformed normalized metric names.
4662* Metric normalization rules that specified that matching metrics were to be
4663 ignored were not being enforced.
4664
4665### v0.9.12-91 / beta-12 (2012-12-28):
4666
4667* Fixed the agent's auto-restart support to cleanly shut down the
4668 connection (also fixed a bunch of bugs in restart).
4669
4670### v0.9.11-88 / beta-11 (2012-12-20):
4671
4672* When server-side configuration changes, the agent will now correctly
4673 restart when told to do so by New Relic's servers.
4674* Correctly wrap net.Server.prototype.listen -- wasn't returning the
4675 server object, which broke some apps.
4676* If you're on a SmartOS VM with a 64-bit base image and a 64-bit build of
4677 Node that's v0.8.5 or earlier, the agent will no longer cause Node to
4678 crash. Don't even ask.
4679
4680### v0.9.10-85 / beta-10 (2012-12-13):
4681
4682* Squared up the environment variable names with existing practice,
4683 especially with an eye towards conformity with Heroku documentation.
4684* Flushed out all configuration used anywhere in the agent and made sure
4685 it was documented in config.default.js.
4686* Using the new environment setting NEW_RELIC_NO_CONFIG_FILE, override the
4687 need to have a settings file at all.
4688* Add the ability to send log output to stdout or stderr.
4689
4690### v0.9.9-82 / beta-09 (2012-12-12):
4691
4692* Can now configure the agent via environment variables. See README.md for
4693 details.
4694* Can now configure the location of the agent log via either logging.filepath
4695 in the configuration file, or NR_LOGGING_FILEPATH in the app's environment.
4696* Turning off the error tracer via configuration now actually disables it.
4697
4698### v0.9.7-75 / beta-08 (2012-12-06):
4699
4700* Express view rendering was being instrumented improperly before, causing
4701 rendering to fail and Express to hang. Both Express 2 and 3 were affected,
4702 and both have been fixed.
4703* When NODE_PATH is set, resolve NODE_PATH elements properly so that package
4704 lookup for environmental information gathering doesn't crash the app.
4705* Now send the Node version along with the rest of the environment data.
4706
4707### v0.9.6-70 / beta-07 (2012-11-30):
4708
4709* Added first cut at support for error tracing via Node.js 0.8+ domains.
4710 Versions of Node.js that support it (v0.8.9 and above) will make a
4711 best-faith effort to clean up after errors.
4712* Improved non-domain error handling on outbound HTTP requests.
4713* Dramatically improved accuracy of HTTP request timing.
4714
4715### v0.9.5-63 / beta-06 (2012-11-28):
4716
4717* Be more careful in dealing with HTTP requests.
4718
4719### v0.9.4-61 / beta-05 (2012-11-26):
4720
4721* Further improvements to node-mongodb-native instrumentation.
4722* Package now available via npm as "newrelic".
4723
4724### v0.9.3-57 / beta-04 (2012-11-06):
4725
4726* Send a list of the packages and dependencies available to an app on
4727 connection to New Relic servers.
4728* Generally cleaned up submission of configuration information.
4729* Added trace-level logging of instrumentation to help diagnose issues
4730 with transaction tracing.
4731* Fixes to web error transaction reporting.
4732
4733### v0.9.2-53 / beta-03 (2012-11-02):
4734
4735* Added support for node-mysql 2.0.0a driver series.
4736* Added support for Express 3.
4737* Added rudimentary instrumentation for node-redis.
4738* Added rudimentary support for generic-pool (for use with MySQL).
4739* Fixed view instrumentation for Express.
4740* Improved coverage of MongoDB driver.
4741* Many small fixes to make logging more robust.
4742* Don't return a partially initialized agent -- shut agent down
4743 gracefully if startup fails.
4744
4745### v0.9.1-46 / beta-02 (2012-10-01):
4746
4747* Fixed an issue in how transaction traces were serialized that kept them from
4748 being displayed within RPM.
4749* Added request parameters to transaction traces, as well as URL normalization.
4750* Reconciled segment names in transaction traces with the corresponding
4751 metric names.
4752* Changed the logging module to bunyan. This means that logs are now stored
4753 as JSON. If you want pretty-printed logs, `npm install -g bunyan` and then
4754 use the bunyan CLI tool to format and filter the logs.
4755* The agent now sets the logging level to the configured level. Logs sent to
4756 New Relic should have been captured at the 'trace' level for the duration
4757 of the beta.
4758* Fixed metric -> ID renaming semantics.
4759* Verified that agent works with Node 0.8's cluster module.
4760
4761### v0.9.0-39 / beta-01 (2012-09-28):
4762
4763* Completely new transaction tracer. Faster, simpler and vastly more
4764 deterministic, but the reworking likely introduced a bunch of new bugs. This
4765 also means that the agent no longer directly affects the call stack or
4766 overrides any of the core event-handling methods, which means the overhead
4767 of the transaction tracer is vastly reduced. Which is good, because you
4768 still can't turn it off.
4769* Transaction traces should now report the correct caller-callee relationships.
4770* Transaction tracer is now internally instrumented, for better debugging.
4771* Added support for Restify.
4772* Using the Node.js agent in Restify app no longer causes them to crash
4773 (fixes NA-47).
4774* Improved support for Express (NA-8).
4775* Lots of fixes to the MongoDB, MySQL and memcached instrumentation.
4776* MongoDB instrumentation no longer crashes MongoDB apps that include
4777 the agent (NA-48).
4778* More testing in Node.js 0.6.x (hard to completely test, as node-tap isn't
4779 that friendly to Node < 0.6.21).
4780
4781### v0.8.5-34 / alpha-06 (2012-09-24):
4782
4783* Transaction trace durations are now reported properly (were seconds, now
4784 milliseconds).
4785* The agent no longer causes Restify applications to crash.
4786* The internal Node metrics sampler now shuts itself down properly.
4787
4788### v0.8.4-30 / alpha-05 (2012-09-20):
4789
4790* Improved timing of Express / Connect request handlers.
4791
4792### v0.8.3-28 / alpha-04 (2012-09-19):
4793
4794* Added support for internal supportability metrics (enabled via setting
4795 debug.internal_metrics to true in newrelic.js).
4796
4797### v0.8.2-26 / alpha-03 (2012-09-14):
4798
4799* By popular demand, support for Node 0.6.x. Tested against versions
4800 0.6.5 and 0.6.19.
4801
4802### v0.8.1-25 / alpha-02 (2012-09-14):
4803
4804* Transaction traces no longer crash the RPM transaction trace viewer.
4805* The Node.js agent now follows the rules for Top N slow trace gathering.
4806* Compress large requests before submitting them to the New Relic
4807 collector.
4808* trace_threshold can now be configured from the server, and is not
4809 hard coded to apdex_f.
4810* The agent definitely doesn't work (for now) in Node 0.6.x and earlier.
4811 The agent will now notify developers (on the console) that it's refusing
4812 to start up under old versions, but won't crash the app.
4813* Don't crash the instrumented app if config is missing.
4814
4815### v0.8.0-21 / alpha-01 (2012-09-11);
4816
4817* The agent faithfully records and reports basic metrics.
4818* The agent reports error metrics.
4819* The agent gathers basic slow transaction trace data.
4820* The agent reports transaction trace data.
4821
4822[mdn-async-function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
4823
\No newline at end of file