Releases: newrelic/go-easy-instrumentation
gRPC Fix
What's New
- gRPC automation has improved detection for methods that handle
grpc.ServerStream
objects as parameters and will propagate tracing downstream.
What's Changed
- fixed downstream grpc functions by @mirackara in #85
Full Changelog: 0.5.1...0.5.2
Minor Patch
Whats New
Debug printing is no longer enabled by default, and must be enabled by passing --debug
. We also improved our tests, and fixed a bug with http.Handle vs http.HandleFunc not being handled correctly.
What's Changed
- Compiler testing by @iamemilio in #84
Full Changelog: 0.5.0...0.5.1
0.5.0
CLI Overhaul 💻
The CLI and user interface has been overhauled and replaced with a much more polished and complete user interface built in Cobra.
What's New
The ability to override application name and the variable name that stores the go agent have been removed. The command line is now only for inputting commands related to the usage of the go-easy-instrumentation tool. We configure the go agent to consume environment variables to get its configuration by default, and this is the way we recommend injecting configuration options for maximum flexibility and granularity.
The new CLI is simpler, more robust, and much clearer about its usage.
For community members considering contributing to this library, we have greatly enriched documentation by providing readme's and improving godoc
quality.
What's Changed
- initial cobra implementation committed for PR/testing by @nr-swilloughby in #76
- Outfile default by @iamemilio in #78
- Bump golang.org/x/crypto from 0.19.0 to 0.31.0 in /end-to-end-tests/gin-examples/grpc/example1 by @dependabot in #79
- Contributor documentation by @iamemilio in #81
- refactored cli flags and args by @nr-swilloughby in #80
- some small cleanup to use native cobra methods by default by @iamemilio in #82
Full Changelog: 0.4.1...0.5.0
Gin Fixes
What's New
There was a bug where we failed to import nrgin
in some packages where it was a dependency, causing instrumentation generation to fail. This has been patched. We also bumped internal dependencies to get the latest security updates and features.
What's Changed
- Update README.md by @iamemilio in #73
- Bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /end-to-end-tests/gin-examples/grpc/example1 by @dependabot in #74
- fix typo in doc link url by @nr-swilloughby in #75
- Fix Gin by @iamemilio in #77
Full Changelog: 0.4.0...0.4.1
Gin Support 🚀
Whats New
Go Easy Instrumentation can now automatically detect when you have gin installed in your application, and add instrumentation to it using the nrgin
package.
What's Changed
- Gin Support by @mirackara in #66
Full Changelog: 0.3.4...0.4.0
Capture Inlined Errors
Whats New
Complex or nested if statements that contain an error check are now detected correctly. For example statements with initialization clauses like the one below were being ignored:
if err := stream.Send(&sampleapp.Message{Text: "Hello DoStreamStream"}); err != nil {
panic(err)
}
We will now recognize that an error is being checked for not nil, and add a line to capture it inside the if statement.
What's Changed
- handle if statements with an initialization by @iamemilio in #72
- Update issue templates by @iamemilio in #64
Full Changelog: 0.3.3...0.3.4
Bug Fixes and Coverage
Whats New
- fixed an issue where a nil map caused a panic
- fixed an issue where segments were sometimes started when then should not have been
- 40% more unit test coverage for new code
What's Changed
- Better tests and nil map bugfix by @iamemilio in #71
Full Changelog: 0.3.2...0.3.3
Context Aware Tracing Logic
Whats New
Tracing is now context aware. This tool can recognize objects that contain new relic tracing, and intelligently pass tracing between functions depending on their arguments, and parameters. It will always follow these rules:
- Go Easy Instrumentation will never add needless scope to function calls, so if a function gets its transaction from a complex/rich object, we will not pass that rich object to downstream function calls that do not already contain that object as an input. Instead, a transaction will be passed.
- If an called function contains an object that we know can carry a transaction, this tool will opt to pass it on that object rather than adding more parameters to your function declaration.
- This tool will always aim to be correct, and if it is unable to determine with certainty that an object contains a transaction, it will add one defensively. You will be alerted with a comment header in these cases.
So far, this supports:
- context.Context
- newrelic.Transaction
More to come.
Commits
- Tracing Re-Work and Context Support by @iamemilio in #69
Full Changelog: 0.3.1...0.3.2
Tracing Improvement
What's Changed
Customers were reporting that some functions were not being traced or segmented. These changes ensure that tracing gets propagated to every function declared in an application.
Commits
- Trace all reachable paths by @iamemilio in #67
Full Changelog: 0.3.0...0.3.1
Improved Error Capture
Whats Changed
Errors will be captured inside the if
blocks that check them whenever possible. In cases where we are unsure if an error is urgent or not, we will leave a comment alerting the user to review the change we suggest. If an error is not checked, the user will be alerted to handle it and capture it if necessary.
To simplify the process of screening the changes we make, enable debug printing with the -debug
flag. This will log information to console that can help you find exact locations in the code where we would like you to review the suggested changes.
Commits
- Bump Go Version: 1.23.2 by @iamemilio in #58
- Create feature_request.yml by @iamemilio in #60
- console printing and standardized NR comment headers by @iamemilio in #62
- Added correct error handling by @mirackara in #59
Full Changelog: 0.2.0...0.3.0