WebRequestTracer.setBytesSent(long bytes)
to increase the size rangeWebRequestTracer.setBytesReceived(long bytes)
to increase the size range
- Deprecated
WebRequestTracer.setBytesSent(int bytes)
due to datatype limitations - Deprecated
WebRequestTracer.setBytesReceived(int bytes)
due to datatype limitations
Session.sendBizEvent
will always send an event regardless of theDataCollectionLevel
- Disable Chunked Mode for sending data via HttpURLConnection
- Non-finite numeric values are serialized as JSON null in reported events, and a special field is added for supportability.
- User-Agent header for http requests
- Business events capturing API
sendBizEvent
Session.reportNetworkTechnology(String technology)
Session.reportCarrier(String carrier)
Session.reportConnectionType(ConnectionType connectionType)
- Default maximum age of an entry in the beacon cache changed from 1h 45m to 45m
- Removed AppMon functionality
- Removed Support for Java 6
- Maximum length of reported error/crash stacktrace has been limited to 128k.
- Maximum length of reported error/crash reason has been limited to 1000.
Action.reportError(String errorName, int errorCode, String reason)
DynatraceOpenKitBuilder(String endpointURL, String applicationID, String deviceID)
DynatraceOpenKitBuilder.enableVerbose()
DynatraceOpenKitBuilder.getApplicationName()
DynatraceOpenKitBuilder.withApplicationName(String applicationName)
OpenKitConfiguration.getApplicationName()
WebRequestTracer.setResponseCode(int responseCode)
WebRequestTracer.stop()
- Support cost control configured in the Dynatrace UI.
- It is possible to get the duration from an
Action
. - An
Action
can be canceled.
Canceling anAction
is similar to leaving it, without reporting it. - Requests to Dynatrace can be intercepted to add custom HTTP headers.
- Provide a more reliable way to determine monotonic timestamps.
- Fix potential endless loop in beacon sending, when lots of data is generated in a short period of time.
- Overloaded
Action.reportValue(String, long
) method for reporting 64-bit integer values. - Overloaded
Session.reportCrash(Throwable)
as convenience method for reporting aThrowable
as crash. - Overloaded
Action.reportError(String, int)
method for reporting an integer error code without description.
The oldAction.reportError(String, int, String)
has been deprecated in favor of the new one. - Overloaded
Action.reportError(String, Throwable)
for reporting caught exceptions as error. - Overloaded
Action.reportError(String, String, String, String)
for reporting generic errors to Dynatrace.
- Fix issue with sessions being closed after splitting.
This happened because OpenKit was sending an end session event right after splitting.
New behavior is to only send the end session event if explicitly requested via
the
Session.end()
method and only for the active session. identifyUser
can be called withnull
or an empty string.
This simulates a log off event and no longer re-applies the user tag on split sessions.- Improve handling of client IP in combination with server-side detection.
- Fix potential NPE occurring with empty response body.
- Fix multithreading issues in
SessionProxy
, leading to a potential NPE. - Fix potential memory leak for very short-lived sessions in
SessionProxy
.
- Technology type support for error and crashes
- Support for session splitting. Sessions are split transparently after either the maximum session duration, the idle timeout or the number of top level actions are exceeded. Session splitting is only applicable, if it is also supported by Dynatrace. The internal details are described here.
- Re-apply user tag on split sessions.
- Response code is now a parameter of WebRequestTracer's stop method. Existing methods for stopping and setting the response code have been deprecated.
- Fix wrong value for Content-Length HTTP header that was added when sending beacon data.
- Fix sending of session number in web request tracer tag to honor the data collection level. The session number will only be sent with data collection level 'User Behavior'.
- On OpenKitBuilder creation device ID is parsed from the given string. Non-numeric device IDs are hashed to a corresponding numeric value. Internally a numeric type is used for the device ID.
- Add OpenKit.createSession overload without IP address parameter.
The IP address is determined in this case on the server side. - Fix taking over HTTP headers (specifically the
retry-after
field) when receiving an HTTP response with response codes >= 400. - Reporting a crash causes a session split, which is transparently handled
- Fixed some javadoc/comments in the JSON parser
- Adapt some JSON lexer unit tests to make them consistent with the test's name.
- Reformatted text files to unix style line endings.
- Java 11 Support
- Application ID and Device ID are correctly encoded for special characters The encoding is a percent-encoding based on RFC 3986 with additional encoding of underscore characters.
- Set file encoding to UTF-8 in gradle build
- Device ID can be specified as String in addition to long
This allows to send UUIDs or other specifiers - Standalone web request tagging
A WebRequestTracer can also be obtained from a Session
- Server overload prevention
Additional HTTP 429 response code handling
- Fix wrong Session start time
- Fix wrong SimpleDatePattern, which does not work with Java 6
- Fix wrong device ID in web requests
This has only an impact, ifDataCollectionLevel.PERFORMANCE
was used
- OpenKit internal version handling
- Extend OpenKit objects from java.io.Closeable to add try-with-resources statement compatibility
The following objects are affected- OpenKit
- Session
- RootAction/Action
- WebRequestTracer
- Build support on Jenkins CI server
- coveralls.io Coverage integration
- Server overload prevention
- GDPR compliance
- BeaconSender's thread name is now correct
- Enhanced
null
checks in public interface implementation
No exception are thrown, if nulls are passed via public interfaces - OpenKit internal threads are daemon threads
- Further actions on already left/closed OpenKit objects are no longer possible
Calling the methods is still allowed, but nothing is reported to the backend - HTTPClient checks response type from server when parsing
- Thread IDs are no longer reported as 64-bit integer, but as 32-bit integer
Only positive integers are used, since the sign bit is always 0. - Enhanced state transition in internal state engine
- WebRequestTracer's start time is initialized in constructor
- Advanced URL validation when tracing web requests
The URL must have the form
<scheme>://<any character>[<any character>]*
Where scheme must be as defined in RFC 3986 - InetAddress validation for IPv6 mixed mode addresses
- Major logging improvements (more and better messages)
- Unit tests in protocol package
- Enhanced BeaconCache documentation
- Various typos fixed
- Testing improvements (method names, wrong assertions)