Broadleaf Microservices
  • v1.0.0-latest-prod

Extension Common Release Notes

Release Notes for 2.0.6

  • Fix the issue when a currency field can be lost (nulled) during a clone operation. A new ModelMapper converter has been introduced.

  • Fix the rare issue that messaging can be broken and not working silently after the startup.

  • Enhance the provider approach to use a single, unified API for interacting with other service APIs. To provide an approach to call the external API either via webclient, or via reflection. The reflection approach is qualified if the external API happens to be co-located in the same flexpackage

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

  • Added support for modernization of Billing Service.

    • Add billing & subscription operations data routes

    • Support ordering of spring cloud stream consumers

    • Add diagnostic logging for message send failures

  • Improved the environment report to skip any unresolvable properties.

  • Improved service-to-service calls within a single flex package to skip overhead of external calls.

    • Added support for optional direct method call in loopback interlink scenarios

    • Disabled by default, see com.broadleafcommerce.common.extension.intercommunication.ExternalClientProperties for details on enabling.

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.