Migration Notes - 1.2.0

1.2.0

APM Integration

APM has been added into DLC and is used to trace events. If you were using a combined HealthEventDispatcher of APM and DLC, this is no longer necessary as the DLC now uses APM’s IHealthEventDispatcher. To ensure APM is configured correctly, the following configurations will need to be implemented into your project.

Required Configurations

note

The following Configs must be included in your project’s application config.

Required Configuration Classes Replaces Configuration Class
APMTracingConfig.class N/A
ServicesConfigBeanPostProcessor.class ActivePivotServicesConfig

An example of including these configuration classes can be seen as follows:

    @Configuration
    @Import({
        // Required Configurations for Tracing and APM
        APMTracingConfig.class,
        ServicesConfigBeanPostProcessor.class
    })
    public class ApplicationConfig {
    }
Registry Setup
  • APM must be defined with high precedence in ActivePivot’s Registry. This is because some classes are Extended Plugins or Types overriding the core code. It is important to make sure they are picked first by the Registry. Make sure you add the package com.activeviam.apm to be picked first. The below example can be added to your application’s configuration.
/** Before anything else we statically initialize the ActiveViam Registry. */
static {
    Registry.setContributionProvider(
        new ClasspathContributionProvider(
            "com.activeviam.apm",  // First has highest priority
            "com.qfs",
            "com.quartetfs",
            "com.activeviam"
        )
    );
}
Initial Data Load
  • If you are executing any DLC tasks via Spring Beans during initialization of your application, you must ensure that the APM_TRACING bean is created first either by the @DependsOn or by Autowiring the APM_TRACING bean. Please see code sample below as an example:
    @Bean
    @DependsOn(value = {APM_TRACING})
    public Void initialLoad() {
        // Load data here...
    }

Updated Tracing

Prior to 1.2.0, the DLC would respond to requests with a taskName, such as “LoadDataTxControllerTask-0”. Now, using APM’s tracing, the DLC will respond with a unique hex string, such as “7a8c982a87b050f2”. This hex string will act as our taskName and will still be used as the DLC’s Cache Key. This tracer hex string will be added to HealthEvent’s eventProperties map as a TraceContext object. For more information on Tracing, see Tracing.

note

APM_TRACING Bean must be configured before data loading

  • If you are executing any DLC tasks via Spring Beans during initialization of your application, you must ensure that the APM_TRACING bean is created first either by the @DependsOn or by Autowiring the APM_TRACING bean. Please see code sample below as an example:
    @Bean
    @DependsOn(value = {APM_TRACING})
    public Void initialLoad() {
        // Load data here...
    }