Broadleaf Microservices
  • v1.0.0-latest-prod

Extension Common Release Notes

Release Notes for 2.0.5

  • Fix a bug where an infinite loop can occur in ProjectionManager at startup if a projection class is more than 2 levels descended from Object

Release Notes for 2.0.4

  • Support non-blocking retry use cases

    • More robust support for message retry handling cases

    • More resilience options around message processing failures

    • Support message takeover for previously abandoned processes

Release Notes for 2.0.3

  • Fixed possible start up errors for pods with dependent services due to said service appearing down despite having available pods.

    • This was happening after one of the dependent service’s pods was evicted.

    • Now the service will be reported as up as long as one of its pods is running, ignoring the evicted pod(s).

Release Notes for 2.0.2

  • Introduce support for extension updates of annotations at the type, method, and field level.

    • Now makes use of byte code weaving to support overriding Annotations a target class, including adding, updating, or deleting annotations.

      Sample Target Class to receive annotation overrides
      @Setter
      @DataRouteByKey("test")
      public class TargetClass {
          @JsonProperty("test")
          private String test;
          @JsonProperty("test")
          private String intersection;
          @JsonProperty("test")
          private String deletion;
          private String notAnnotatedVariable;
          @Transactional("test")
          public String getTest() {
              return test;
          }
          public String updateTest(String test) {
              this.test = test;
              return test;
          }
          public String otherUpdate(@JsonProperty("otherUpdate") String test) {
              this.test = test;
              return test;
          }
          @Transactional("test")
          public String intersectionMethod(@JsonProperty("test") String test, String other) {
              this.test = test;
              return test;
          }
          @Transactional
          @NonNull
          public void deletionMethod(@JsonProperty("test") String test) {
              // do nothing
          }
          public void notAnnotated() {
              // do nothing
          }
      }
      Sample Template Class to provide new annotations
      @DataRouteByKey("changed")
      @Transactional
      public class TemplateClass {
          @JsonProperty("changed")
          private String test;
          @JsonProperty("changed")
          @NonNull
          private String intersection;
          private String deletion;
          @Transactional("changed")
          public String getTest() {
              return test;
          }
          public String updateTest(@NonNull String test) {
              this.test = test;
              return test;
          }
          public String otherUpdate(@JsonProperty("myUpdate") String test) {
              this.test = test;
              return test;
          }
          @NonNull
          @Transactional("changed")
          public String intersectionMethod(@JsonProperty("changed") @NonNull String test,
                  @NonNull String other) {
              this.test = test;
              return test;
          }
          public void deletionMethod(String test) {
              // do nothing
          }
      }
      Sample class-transformation.yaml
      transformations:
        - template: 'com.mycompany.common.extension.loadtimeweaving.TemplateClass'
          target: 'com.mycompany.common.extension.loadtimeweaving.TargetClass'
          transformAnnotations: 'true'
      injectors:
        - 'com.broadleafcommerce.common.extension.ltw.AnnotationClassTransformationInjector'

Ignite Cache Node Configuration Support

  • Introduce new IgniteCacheNodeProperties under broadleaf.common.cache.ignite.node prefix to configure Ignite node memory consumption

  • Reduce default data region maximum size to 1GiB from previous 2GiB

  • Rename IgniteConfiguration bean in IgniteCacheAutoConfiguration from igniteConfiguration to igniteCacheNodeConfiguration, and make the @ConditionalOnMissingBean check by name rather than type to allow other IgniteConfiguration beans to exist in the system for non-cache purposes

    Note
    Clients who are currently overriding this default IgniteConfiguration bean should rename their bean to igniteCacheNodeConfiguration to ensure the CacheManager injects the correct instance.
  • Update CacheManager bean in IgniteCacheAutoConfiguration to inject IgniteConfiguration with @Qualifier in method parameters instead of calling the bean method directly

Release Notes for 2.0.1

  • Workflow transition performance refactoring. See Workflow Transition Performance.

  • Fix message listener extensions no longer receiving messages via the @StreamListener annotated method in the parent class.

2.0.0-GA

Spring Boot Upgrade

  • As of Broadleaf Release Train 2.0.0-GA, all common libraries have been upgraded to Spring Boot 3.

  • This version includes all changes up to 1.4.20-GA

Release Notes for 1.4.20

  • Add check to prevent ClassCastExceptions in DataRouteByKeyAspect.

Release Notes for 1.4.19

  • Fix issue reporting on properties that have a placeholder reference to another property.

Release Notes for 1.4.18

  • Fixed type mismatch bug causing missing properties in the Environment Report.

Release Notes for 1.4.17

  • Fixed possible duplication of cache keys when caching a method’s result that takes a list of inputs (e.g., a list of context IDs).

NOTE Build errors resulted in gap from v1.4.14 - v1.4.16

Release Notes for 1.4.13

  • Introduced basic tenant discriminated property support with auto refresh enhancement

  • Added enhancements for streamlined extension experience

  • Introduced support for ModelMapper cache as maven compile lifecycle step

  • Added a library of routes for easy route demarcation configuration

Release Notes for 1.4.12

  • Support resetting the blocking status on a LazyCacheController instance

Release Notes for 1.4.11

  • Fixed the issue where it’s possible (e.g. during startup) that a data route may not be available when/if a flow is engaged that exercises the LazyCacheController compilation logic

  • Fixed the issue where it’s possible (e.g. during startup) that a data route may not be available when/if a flow is engaged that exercises the LazyCacheController compilation logic

Release Notes for 1.4.10

  • Add more debug logging for why the conditions of lazy full cache expiry are not met

  • Fixed the issue where it’s possible (e.g. during startup) that a data route may not be available when/if a flow is engaged that exercises the LazyCacheController compilation logic

Release Notes for 1.4.9

  • Fixed the issue where the LazyCacheController process is not resetting the cache member TTL upon full cache build

Release Notes for 1.4.8

  • Fixed CacheStateManager may return incorrect results during cache fetch

Release Notes for 1.4.7

  • Respond with the evicted cache members during an eviction call.