Skip to content

v9.0.0

Compare
Choose a tag to compare
@efonsell efonsell released this 30 Aug 16:18
· 56 commits to master since this release

Highlights

  • Update to Spring Framework 6
    • BREAKING CHANGE: Support for Java 11 is dropped
    • BREAKING CHANGE: Migrated from javax namespace to jakarta namespace
    • Lot of dependency updates/changes related to jakarta changes
      • Guice 7.0.0
      • Jersey 3.1.3
      • Jetty 11.0.15
      • Apache CFX 4.0.2
      • Dropwizard metrics 4.2.19 and switch to jakarta servlets
      • Jackson jaxrs to jakarta-rs
      • Switch swagger jaxrs2 to jaxrs2-jakarta
      • Hibernate validator 8.0.1.Final
      • Annotation API to jakarta version 2.1.1
      • Servlet API to jakarta version 6.0.0
      • Glassfish EL to jakarta version 4.0.2
      • Inject API to jakarta version 2.0.1
      • Jaxb API to jakarta bind-api 4.0.0
      • WS RS API to jakarta 3.1.0
  • nflow-engine
    • POTENTIALLY BREAKING CHANGE: Add support to manage workflow instances without having the workflow implementation classes in the classpath.
    • Clean up old workflow executors that have expired configured time ago (default 1 year).
    • Optimize SQL queries used for dead node detection and workflow instance recovery.
    • Add recovered timestamp to executor info (database, Java API and REST API).
    • Remove obsolete mysql legacy ddl sql scripts.
    • Include generated mariadb.create.ddl.sql in sources.jar.
  • nflow-metrics
    • export the nflow.database.type as a metric
  • nflow-netty
    • POTENTIALLY BREAKING CHANGE: Netty configuration might need Jackson2ObjectMapperBuilder to have findModulesViaServiceLoader enabled as joda time module is not in wellknown modules anymore
  • nflow-explorer
    • POTENTIALLY BREAKING CHANGE: old nflow-explorer was removed and nflow-explorer-ng was renamed to nflow-explorer

Details

  • nflow-engine
    • POTENTIALLY BREAKING CHANGE: Add support to manage (create, update and read, but not execute) workflow instances without having the workflow implementation classes in the classpath.
      • Implemented in #53.
      • If a workflow definition is not found from the classpath, it is loaded from the database and stored in memory.
      • Workflow definitions that are loaded from the database are refreshed at most at configured interval (nflow.definition.refreshStoredFromDatabase.interval.seconds, default 60).
      • This change enables managing workflows that have been removed from the classpath. You can disable this (potentially backwards incompatible) functionality by setting the refresh interval to -1.
      • Potential use cases:
        • Creating workflow instances in a separate application that does not need to be updated when the workflow implementations are changed
        • Generic nFlow REST service that does not need to be updated when the workflow implementations or definitions are changed
        • Having a cluster of nFlow executors that just execute the workflows and have no other business logic
    • Improve shutdown sequence.
      • Workflows that were acquired from the database but have not started executing can now be resumed immediately by another executor.
      • Executing workflows are interrupted 5 seconds before shutdown timeout so that they get a chance to persist their state to the database. This also allows other executors to immediately resume the processing of the successfully interrupted workflows. The interrupting can be disabled by setting nflow.executor.interrupt to false.
      • Log a warning if updating workflow instance to the database fails because the instance has been recovered by another executor. Also avoid modifying state variables, adding new workflows and adding new child workflows if the workflow instance update fails.
    • Add support to MaintenanceWorkflow for cleaning up old workflow executors that have expired configured time ago (default 1 year).
      • On the first startup, time period is read from nflow.maintenance.executors.initial.deleteExpiredExecutors.olderThan configuration option and stored in the config state variable of the created maintenance workflow instance.
      • If the maintenance workflow instance has already been created, cleanup can be enabled by adding "deleteExpiredExecutorsOlderThan": "P1Y" to the JSON value of the config state variable of the instance.
    • Optimize SQL queries used for dead node detection and workflow instance recovery.
      • Find only dead nodes that have not been recovered yet.
      • Update current timestamp to nflow_executor.recovered after the workflow instances of the dead node have been recovered.
    • Add recovered timestamp to executor info (database, Java API and REST API).
    • Fix bug archiving when bigserial and bigint id types are used (on some databases)
    • Remove obsolete mysql legacy ddl sql scripts.
    • Include generated mariadb.create.ddl.sql in sources.jar.
    • Added tests against Oracle now that there is a working docker image of Oracle XE
  • nflow-rest-api
    • POTENTIALLY BREAKING CHANGE: Remove @Primary annotation from nflowRestObjectMapper in RestConfiguration to allow overriding default mapper. Spring Boot applications may need to define the mapper explicitly now.
  • nflow-metrics
    • export the nflow.database.type as a metric
  • nflow-netty
    • POTENTIALLY BREAKING CHANGE: Jackson2ObjectMapperBuilder might need configuration for jodatime
      • Spring Framework 6 doesn't have Joda time module in wellknown anymore, so might need to configure findModulesViaServiceLoader to enable it (or some other way)
  • nflow-explorer
    • POTENTIALLY BREAKING CHANGE: old nflow-explorer was removed and nflow-explorer-ng was renamed to nflow-explorer
    • Improved formatting timestamps
    • Fix retry on endpoint change
    • Fix querying with parent instance id
    • Fix loading custom instance content for child workflow
    • Fix state variables showing false values
  • Dependency updates
    • Guice 7.0.0
    • Jersey 3.1.3
    • Jetty 11.0.15
    • Apache CFX 4.0.2
    • Dropwizard metrics 4.2.19
    • Hibernate validator 8.0.1.Final
    • Annotation API to jakarta version 2.1.1
    • Servlet API to jakarta version 6.0.0
    • Glassfish EL to jakarta version 4.0.2
    • Inject API to jakarta version 2.0.1
    • Jaxb API to jakarta bind-api 4.0.0
    • WS RS API to jakarta 3.1.0
    • javassit 3.29.2
    • logback-classic 1.4.6
    • Commons lang3 3.13.0
    • H2 2.2.220
    • Jackson 2.15.2
    • Joda-time 2.12.5
    • Junit5 5.10.0
    • MariaDB 3.1.2
    • Mockito 5.4.0
    • MSSQL 12.4.0-jre11
    • MySQL 8.1.0
    • OJDBC 23.2.0.0
    • PostgreSQL 42.6.0
    • Reactor core 3.5.9
    • Reactor netty 1.1.10
    • SLF4J 2.0.7
    • Swagger 2.2.15
  • Maven build plugin updates
    • Assembly plugin 3.6.0
    • Clean plugin 3.3.1
    • Deploy plugin 3.1.1
    • Download plugin 1.7.1
    • Enforcer plugin 3.3.0
    • Frontend plugin 1.13.4
    • GPG plugin 3.1.0
    • Install plugin 3.1.1
    • Jacoco plugin 0.8.10
    • PMD plugin 3.21.0
    • Project info plugin 3.4.5
    • Release plugin 3.0.1
    • Resources plugin 3.3.1
    • Shade plugin 3.5.0
    • Site plugin 4.0.0-M9
    • Source plugin 3.3.0
    • Surefire plugin 3.1.2
    • Spotbugs plugin 4.7.3.5
    • Versions plugin 2.16.0