[ANN] nFlow 9.0.0 released

40 views
Skip to first unread message

nflow-users

unread,
Aug 30, 2023, 12:30:50 PM8/30/23
to nflow-users
Hello all,

nFlow 9.0.0 was released on August 30, 2023.


**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](https://github.com/NitorCreations/nflow/pull/531).
    - 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
Reply all
Reply to author
Forward
0 new messages