Improvements
- Incorporated fixes from v1.30.1, v1.30.2, and v1.30.3.
Notes
This release is the same as v1.30.2 except it has been published using npm 2 to make sure all nested bundled dependencies are included.
Notes
Important
This release has been unpublished from npmjs.org. Please use version 1.30.3 or higher.
New features
Added instrumentation of the param() function in Express.
The agent will now create metrics and transaction segments when the Express param() function is called as a part of a route. This also fixes an issue with transaction naming when the HTTP response is ended within a param() method.
Bug fixes
Fixed an issue with naming Express transactions that result in 404 errors.
Previously transactions were not always correctly normalized for URLs that caused 404 errors. The transactions will now always be reported with the same normalized name (e.g. "get /").
Fixed instrumentation of Express v4.0 - v4.5.
Previously transactions were not correctly named on older versions of Express 4.
Improvements
- Minor upates to logging.
Bug fixes
The
shutdown
method is now on the stub API.Previously when the agent was disabled the stub API passed back on require did not have the
shutdown
method. Thanks goes to Vlad Fedosov (@StyleT) for this contribution!Global timers will now be wrapped correctly regardless of being wrapped by something else.
The logic to check whether to wrap the
global
timers was looking to see if theglobal
timers were the same function reference as the ones in thetimers
module. This would break in cases where either theglobal
ortimers
functions had been wrapped.Director instrumentation now correctly handles the case of null route handlers being passed in.
Previously the agent's director instrumentation would crash in cases of null route handlers in director.
Notes
You must read and agree to the Beta Agreement before using this beta version of the agent.
New features
Added
rowCallback
property to datastore segment descriptors.With this parameter the shim will record the given function/parameter as a per-row callback which may be called multiple times. These calls will be counted up for traces.
Improvements
Incorporated fixes from v1.30.0
Rewrote PostgreSQL instrumentation using new
DatastoreShim
class.Reversed
reverse_naming_rules
default.Naming rules now default to evaluating in forward order.
New features
A number of improvements and fixes to transaction naming rules.
Added attributes
terminate_chain
,replace_all
, andprecedence
to allow more control over how naming rules are executed. Please see the updated documentation in our README file.The order in which naming rules are executed can now be reversed with a feature flag
reverse_naming_rules
.When applying naming rules, the regular expression matching is now case insensitive.
We have added a tool for testing naming rules. When the agent is installed, the tool can be run in terminal by executing
node node_modules/.bin/newrelic-naming-rules
.We have also improved our trace logging around transaction naming.
Improvements
- Added trace logging to track number of transactions and segments in progress, and to better track segments created with the Express instrumentation.
- Fixed mysql2 tests that were not being run correctly.
Bug fixes
Fixed issue with reporting errors from domains.
When an error is handled by using the
error
event of the domain, it is no longer reported as an uncaught exception.
Notes
You must read and agree to the Beta Agreement before using this beta version of the agent.
Dropped support for Node.js 0.6 and 0.8 as well as node-mysql
package versions < 1.0.0.
New features
Improved API for writing instrumentation.
Introduced new classes for writing instrumentation,
Shim
andDatastoreShim
. These classes along with the newnewrelic.instrument
andnewrelic.instrumentDatastore
methods make writing 3rd party instrumentation much easier.Rewrote instrumentation for Cassandra, Redis, ioredis, MySQL, and MongoDB.
These instrumentations were rewritten using the new
DatastoreShim
interface. Their functionality is largely unchanged but the new code should be easier to maintain and extend.Added public API documentation.
Documentation for the New Relic agent API has been generated using JSDoc and is now hosted on GitHub at https://newrelic.github.io/node-newrelic. There you can find documentation on the new classes as well as the pre-existing API methods.
Improvements
Domain error handlers will now be scoped to the transaction the error occurred in.
Previously, the
'error'
event handlers would not be scoped to a transaction causing our API methods to not associate data correctly (e.g. usingnoticeError
would not associate the error with the transaction and would instead be unscoped).
Bug fixes
Reworked the SQL parser to handle new lines in the query.
Previously the agent would have difficulty classifying queries with new lines in them. Thanks to Libin Lu (@evollu) for the fix!
Postgres instrumentation is now compatible with inputs with text getter attributes.
Thanks again to Libin Lu (@evollu) for the fix!
Improvements
Improved agent startup speed by ~10% by simplifying environment checks.
Removed prolific
fs.exists
andfs.stat
checks, instead simply handling the error for mis-used files which greatly reduces disk access.Added slightly more trace-level logging around the creation of segments.
Added examples for using the
newrelic.createBackgroundTransaction
method in a number of different use cases.
Bug fixes
Removed excessive segment creation from PG instrumentation.
For queries with many results we would create a segment for each result. This would result in excessive object allocation and then cause harsh GC thrashing.
Fixed a bug in agent connect that could cause an identity crisis under specific use cases.
When using the agent with multiple app names, transaction information could be misattributed to other services if they share the same first app name. This resolves that by using all of the host names to uniquely identify the agent.
Improvements
Director instrumentation that will now name the transaction correctly, as well as create segments corresponding to the handlers registered with director.
Transaction naming refactor - this should clear up some inconsistent naming issues in our router instrumentations.
Previously the instrumentation was tasked with the maintenance of the transaction state name, now this has been abstracted into its own class to be used by instrumentations.
Express instrumentation refactored to scope transaction storage to the incoming request object.
Previously the express instrumentation used a stack to track which router was expecting middleware to finish and keep track of which transaction is being executed. The new implementation has a stronger guarantee on scoping work to the correct transaction.
Bug fixes
- The agent now uses the correct units (was seconds, now milliseconds) for slow queries - this fixes and issue where query traces in the databases tab were slower than the reported maximum.