Skip to content

Releases: elastic/apm-agent-java

Release 1.16.0

13 May 12:21
Compare
Choose a tag to compare

Release 1.15.0

03 Apr 13:24
Compare
Choose a tag to compare

Release 1.14.0

04 Mar 13:34
Compare
Choose a tag to compare

Release 1.13.0

11 Feb 10:16
Compare
Choose a tag to compare

Release 1.12.0

21 Nov 17:16
Compare
Choose a tag to compare

1.12.0

Features

  • JMS Enhancements (#911):
    • Add special handling for temporary queues/topics
    • Capture message bodies of text Messages
      • Rely on the existing ELASTIC_APM_CAPTURE_BODY agent config option (off by default).
      • Send as context.message.body
      • Limit size to 10000 characters. If longer than this size, trim to 9999 and append with ellipsis
    • Introduce the ignore_message_queues configuration to disable instrumentation (message tagging) for specific
      queues/topics as suggested in #710
    • Capture predefined message headers and all properties
      • Rely on the existing ELASTIC_APM_CAPTURE_HEADERS agent config option.
      • Send as context.message.headers
      • Sanitize sensitive headers/properties based on the sanitize_field_names config option
  • Added support for the MongoDB sync driver. See supported data stores.

Bug Fixes

  • JDBC regression- PreparedStatement#executeUpdate() and PreparedStatement#executeLargeUpdate() are not traced (#918)
  • When systemd cgroup driver is used, the discovered Kubernetes pod UID contains "_" instead of "-" (#920)
  • DB2 jcc4 driver is not traced properly (#926)

Release 1.11.0

31 Oct 18:02
Compare
Choose a tag to compare

1.11.0

Features

  • Add the ability to configure a unique name for a JVM within a service through the service_node_name config option
  • Add ability to ignore some exceptions to be reported as errors ignore_exceptions
  • Applying new logic for JMS javax.jms.MessageConsumer#receive so that, instead of the transaction created for the
    polling method itself (ie from receive start to end), the agent will create a transaction attempting to capture
    the code executed during actual message handling.
    This logic is suitable for environments where polling APIs are invoked within dedicated polling threads.
    This polling transaction creation strategy can be reversed through a configuration option (message_polling_transaction_strategy)
    that is not exposed in the properties file by default.
  • Send IP obtained through javax.servlet.ServletRequest#getRemoteAddr() in context.request.socket.remote_address
    instead of parsing from headers (#889)
  • Added ElasticApmAttacher.attach(String propertiesLocation) to specify a custom properties location
  • Logs message when transaction_max_spans has been exceeded (#849)
  • Report the number of affected rows by a SQL statement (UPDATE,DELETE,INSERT) in 'affected_rows' span attribute (#707)
  • Add @Traced annotation which either creates a span or a transaction, depending on the context
  • Report JMS destination as a span/transaction context field (#906)
  • Added capture_jmx_metrics configuration option

Bug Fixes

  • JMS creates polling transactions even when the API invocations return without a message
  • Support registering MBeans which are added after agent startup

Release 1.10.0

30 Sep 14:05
Compare
Choose a tag to compare

Features

  • Add ability to manually specify reported hostname
  • Add support for Redis Jedis client
  • Add support for identifying target JVM to attach apm agent to using JVM property. See also the documentation of the --include and --exclude flags
  • Improve servlet error capture (#812)
    Among others, now also takes Spring MVC @ExceptionHandlers into account
  • Instrument Logger#error(String, Throwable) (#821)
    Automatically captures exceptions when calling logger.error("message", exception)
  • Easier log correlation with https://github.com/elastic/java-ecs-logging. See docs.
  • Avoid creating a temp agent file for each attachment (#859)
  • Instrument View#render instead of DispatcherServlet#render (#829)
    This makes the transaction breakdown graph more useful. Instead of dispatcher-servlet, the graph now shows a type which is based on the view name, for example, FreeMarker or Thymeleaf.
  • Added capture_jmx_metrics configuration option
    UPDATE: due to a bug, the JMX metrics don't work in this version. See also #879

Bug Fixes

  • Error in log when setting server_urls
    to an empty string - co.elastic.apm.agent.configuration.ApmServerConfigurationSource - Expected previousException not to be null
  • Avoid terminating the TCP connection to APM Server when polling for configuration updates (#823)

Release 1.9.0

22 Aug 11:43
Compare
Choose a tag to compare

Features

  • Upgrading supported OpenTracing version from 0.31 to 0.33
  • Added annotation and meta-annotation matching support for trace_methods, for example:
    • public @java.inject.* org.example.* (for annotation)
    • public @@javax.enterprise.context.NormalScope org.example.* (for meta-annotation)
  • The runtime attachment now also works when the tools.jar or the jdk.attach module is not available.
    This means you don't need a full JDK installation - the JRE is sufficient.
    This makes the runtime attachment work in more environments such as minimal Docker containers.
    Note that the runtime attachment currently does not work for OSGi containers like those used in many application servers such as JBoss and WildFly.
    See the documentation for more information.
  • Support for Hibernate Search

Bug Fixes

  • A warning in logs saying APM server is not available when using 1.8 with APM server 6.x. Due to that, agent 1.8.0 will silently ignore non-string labels, even if used with APM server of versions 6.7.x or 6.8.x that support such. If APM server version is <6.7 or 7.0+, this should have no effect. Otherwise, upgrade the Java agent to 1.9.0+.
  • ApacheHttpAsyncClientInstrumentation matching increases startup time considerably
  • Log correlation feature is active when active==false
  • Tomcat's memory leak prevention mechanism is causing a... memory leak. JDBC statement map is leaking in Tomcat if the application that first used it is udeployed/redeployed. See this related discussion.

Breaking Changes

  • The apm-agent-attach.jar is not executable anymore.
    Use apm-agent-attach-standalone.jar instead.

Release 1.8.0

30 Jul 15:04
Compare
Choose a tag to compare

Features

  • Added support for tracking time spent by span type.
    Can be disabled by setting breakdown_metrics to false.
  • Added support for central configuration.
    Can be disabled by setting central_config to false.
  • Added support for Spring's JMS flavor - instrumenting org.springframework.jms.listener.SessionAwareMessageListener
  • Added support to legacy ApacheHttpClient APIs (which adds support to Axis2 configured to use ApacheHttpClient)
  • Added support for setting server_urls dynamically via properties file #723
  • Added config_file option
  • Added option to use @javax.ws.rs.Path value as transaction name use_jaxrs_path_as_transaction_name
  • Instrument quartz jobs (docs)
  • SQL parsing improvements (#696)
  • Introduce priorities for transaction name (#748)
    Now uses the path as transaction name if use_path_as_transaction_name is set to truerather than ServletClass#doGet. But if a name can be determined from a high level framework, like Spring MVC, that takes precedence.
    User-supplied names from the API always take precedence over any others.
  • Use JSP path name as transaction name as opposed to the generated servlet class name (#751)

Bug Fixes

  • Some JMS Consumers and Producers are filtered due to class name filtering in instrumentation matching
  • Jetty: When no display name is set and context path is "/" transaction service names will now correctly fall back to configured values
  • JDBC's executeBatch is not traced
  • Drops non-String labels when connected to APM Server < 6.7 to avoid validation errors (#687)
  • Parsing container ID in cloud foundry garden (#695)
  • Automatic instrumentation should not override manual results (#752)

Breaking changes

  • The log correlation feature does not add span.id to the MDC anymore but only trace.id and transaction.id (see #742).

Release 1.7.0

13 Jun 10:26
Compare
Choose a tag to compare

Features

  • Added the trace_methods_duration_threshold config option. When using the trace_methods config option with wild cards, this
    enables considerable reduction of overhead by limiting the number of spans captured and reported (see more details in config
    documentation).
    NOTE: Using wildcards is still not the recommended approach for the trace_methods feature
  • Add Transaction#addCustomContext(String key, String|Number|boolean value) to public API
  • Added support for AsyncHttpClient 2.x
  • Added global_labels configuration option.
    This requires APM Server 7.2+.
  • Added basic support for JMS- distributed tracing for basic scenarios of send, receive, receiveNoWait and
    onMessage. Both Queues and Topics are supported. Async send APIs are not supported in this version.
    NOTE: This feature is currently marked as "Incubating" and is disabled by default. In order to enable, it is
    required to set the disable_instrumentations
    configuration property to an empty string.
  • Improved OSGi support: added a configuration option for bootdelegation packages (#641)
  • Better span names for SQL spans. For example, SELECT FROM user instead of just SELECT (#633)

Bug Fixes

  • ClassCastException related to async instrumentation of Pilotfish Executor causing thread hang (applied workaround)
  • NullPointerException when computing Servlet transaction name with null HTTP method name
  • FileNotFoundException when trying to find implementation version of jar with encoded URL
  • NullPointerException when closing Apache AsyncHttpClient request producer
  • Fixes loading of elasticapm.properties for Spring Boot applications
  • Fix startup error on WebLogic 12.2.1.2.0 (#649)
  • Disable metrics reporting and APM Server health check when active=false (#653)