Skip to main content

8.10

Server

tip

This release contains breaking changes. These are listed at the end of this page, along with instructions for migrating from previous releases.

Features

  • genesis-transform : Added predicate expression structure to criteria API and replaced rowFilters in transformer configuration
  • genesis-transform : Modified transformer configuration to use inclusion over exclusion for column filters
  • genesis-pal-dataserver : Add support for importing entity indices
  • genesis-testsupport : Added support for testing process end state
  • genesis-pal-dataserver : Add maxBytesPerCharacter configuration item to improve handling of UTF-8 characters in indices
  • genesis-db : Extension to allow interception of database writes
  • genesis-criteria : Added additional functions in criteria API (isNullOrBlank, longtoDate, longToDateTime)
  • genesis-testsupport : Add support for @UserRight annotation
  • genesis-pal-dataserver : Add new dataserver update processing mode
  • genesis-pal-dataserver : Improve priming progress updates in log file
  • Added valid timezone endpoint to GENESIS_EVALUATOR and added RULE_TYPE to CRON_RULE table
  • Add annotation support to dump threads and coroutines on test failure
  • Add support for GENESIS_HOME in templt.xml files
  • Add support for custom purgers
  • Allow core packages to be augmented for application bootstrap
  • Improve coroutine exception handling

Fixes

  • genesis-router : Cookie based auth doesn't work on multipart HTTP messages
  • genesis-pal-dataserver : Add support for non unique indices
  • genesis-pal-dataserver : Avoid unnecessary LMDB range read in certain scenarios
  • genesis-pal-dataserver : Ensure string UTF-8 byte size is taken into account when truncating strings as part of index handling
  • genesis-pal-dataserver : Ensure we use LMDB as source of truth when the oldRecord information in the table update is not available
  • genesis-db : Fixed an issue with upsertAll in SQL layer where it was unable to handle records where the primary key was not populated but is an autoIncrement or sequenced field
  • genesis-db : Do not refresh updates that have moved in or out of range
  • genesis-db : When db cache inserts are enabled, write inserts to the cache if existing cache entry value is null
  • diags : Better log error message when SysDef evaluation fails
  • genesis-criteria : Fixed scenarios where METHOD_EXPRESSION types would not be handled correctly
  • genesis-db : UpsertAll now handles insert operations with auto generated indexed sequence values correctly in batch mode
  • genesis-testsupport : Detect annotations on super classes
  • gradle-plugin-common : Ensure automatic dependency resolution handles exceptions correctly
  • genesis-pal-consolidator : Ensure non-nullable fields without default value can be zeroed out automatically in non-transient cold start operations
  • genesis-pal-dataserver : String overflow handling logic is now applied correctly when priming
  • genesis-pal-dataserver : Revert publishUpdatesWhilePriming to previous behaviour when it was ignored, due to issue when enabled
  • genesis-pal-requestserver : Range requests using FROM/TO are now evaluated correctly
  • pbc-gradle-plugin : Allow patch inclusive semantic versions (^X syntax) in client versions
  • settings-gradle-plugin-common : Add script dependencies on script-config module if present
  • genesis-dataserver2 : Race condition when processing modify very soon after an insert which failed the where clause
  • Ensure METHOD_EXPRESSION types can be deserialised as part of Criteria API
  • Use GenesisInjector for all script configurations
  • Disabling processRestart for docker images and including encrypting sysdefs
  • Disabling processRestart when flag is TRUE and not FALSE
  • Fix support for views in dbmon
  • Remove need for additional sys def service for BackwardJoinCache
  • Tests should apply SysDefOverwrite when process config file provided
  • Using app sys def file in integration tests should work for multiple tests

Dependency changes

  • Bump byteBuddyVersion from 1.17.1 to 1.17.2
  • Bump camelVersion from 4.10.1 to 4.10.2
  • Bump camelVersion from 4.7.0 to 4.10.1
  • Bump com.github.oshi:oshi-core from 6.6.6 to 6.7.0
  • Bump com.github.oshi:oshi-core from 6.7.0 to 6.7.1
  • Bump com.github.oshi:oshi-core from 6.7.1 to 6.8.0
  • Bump com.google.errorprone:error_prone_annotations from 2.36.0 to 2.37.0
  • Bump com.google.protobuf:protobuf-java from 4.29.3 to 4.30.0
  • Bump com.google.protobuf:protobuf-java from 4.30.0 to 4.30.1
  • Bump com.microsoft.sqlserver:mssql-jdbc from 12.8.1.jre11 to 12.10.0.jre11
  • Bump debeziumVersion from 3.0.7.Final to 3.0.8.Final
  • Bump groovyVersion from 3.0.23 to 3.0.24
  • Bump jacksonVersion from 2.17.3 to 2.18.3
  • Bump jnaVersion from 5.16.0 to 5.17.0
  • Bump junitVersion from 5.10.3 to 5.12.1
  • Bump micrometerVersion from 1.14.4 to 1.14.5
  • Bump mockitoVersion from 5.15.2 to 5.16.0
  • Bump mockitoVersion from 5.16.0 to 5.16.1
  • Bump nettyVersion from 4.1.118.Final to 4.1.119.Final
  • Bump org.apache.activemq:artemis-jakarta-client from 2.39.0 to 2.40.0
  • Bump org.apache.commons:commons-csv from 1.13.0 to 1.14.0
  • Bump org.checkerframework:checker-qual from 3.49.0 to 3.49.1
  • Bump org.jlleitschuh.gradle.ktlint from 12.1.1 to 12.2.0
  • Bump slf4jVersion from 2.0.16 to 2.0.17
  • Bump software.amazon.jdbc:aws-advanced-jdbc-wrapper from 2.5.4 to 2.5.5
  • Bump sshdVersion from 2.14.0 to 2.15.0
  • Bump testcontainersVersion from 1.20.5 to 1.20.6

Patch releases

8.10.10

Features
  • genesis-pal-dataserver : Improve data server duplicate key error message and logging around start up
Fixes
  • genesis-dbmon : Fix bug in DbMon handling of search command when using FoundationDB as the database engine
  • genesis-pal-dataserver : Ensure insert updates are evaluated using dataserver where clause
  • genesis-pal-dataserver : Fix numerous out of sync update processing issues
  • genesis-pal-dataserver : Improve handling of data server on unrecoverable key errors

8.10.9

Features
  • core : startProcess appends environment variable GENESIS_SYSDEF_JVM_OPTIONS to the process jvm options
  • genesis-dbtest : Option to generate random SQL schema name for tests
Fixes
  • distribution-gradle-plugin : Fix incorrect initialisation logic
  • genesis-pal-dataserver : Fury serializer can now handle payloads greater than 512 bytes correctly
  • genesis-pal-dataserver : Setting MAX_VIEW = 0 should allow views to grow without boundaries other than Integer.MAX_VALUE
  • genesis-testsupport : Do not register lifecycle manager JVM shutdown hook for tests

8.10.8

Fixes
  • genesis-environment : Fix issue preventing all script.kts file evaluations

8.10.7

This release was unintentionally published during our deployment process. It contains no new features, bug fixes, or changes from the previous version.

8.10.6

Features
  • genesis-gradle : Support site-specific in product details plugin
Fixes
  • genesis-clustersupport : Fall back to db if service discovery cache missing entry
  • genesis-environment : Revert GenesisInjector changes for PurgeTables and related scripts

8.10.5

Features
  • genesis-db : Try to detect sql layer deadlocks
  • genesis-router : Improve handling of triggerEvent in custom webhandler script
Fixes
  • genesis-db : Ensure "audited" db API runs audit operations in the same transaction and fix transactional db listeners
  • genesis-environment : Ensure GlobalClasspathAdditions sysdef item is handled correctly as part of startProcess classpath generation
  • genesis-pal-dataserver : Correct handling of out of sequence update processing

8.10.4

Features
  • genesis-pal-datapipeline : Add delayBetweenBatches + delayBetweenReads to db batch polling source
Fixes
  • genesis-clustersupport : Only initialise process metadata service where the PROCESS_MET_DATA table exists in the db
  • genesis-environment : Ensure environment genesis-generated-sysdef and genesis-generated-fields take priority in classpath generation
  • genesis-environment : preCompileScripts now takes into account the tag and uses multiple modules for classpath generation (if defined) in the tag in processes.xml
  • genesis-logging : Add default log paths to the log4j2-default.xml file if L and RL env variables are not found
  • genesis-logging : Fixed issues where startServer would throw an error and stop if runtime/logs contained a .gz file which was not related to a valid Genesis process

8.10.3

Features
  • genesis-logging : Support configurable log directories and system definition option to disable automatic archiving
  • genesis-pal-dataserver : Improve memory profile of data server enriched fields
Fixes
  • genesis-console : Console endpoints EVENT_START_PROCESS and EVENT_STOP_PROCESS now work as expected. Previously an error was returned in recent versions of the platform.
  • genesis-environment : GENESIS_SYSDEF_ environment variable values now take precedence when the system definition item is being read in python scripts
  • genesis-gradle : Also use site specific template files when checking for overridden processes
  • genesis-gradle : Fixed an issue where the gradle cache was reading system definition items defined with type LONG as INT values. This lead to constant cache misses even when the values were unchanged, which contributed to longer build times.
  • genesis-router : Fix package scan definition in processes.xml to only include console router extensions
  • genesis-router : Handle Netty exceptions when creating a TextWebsocketFrame in a graceful manner

8.10.2

Fixes
  • genesis-db : Do not use SQL thread pool for RxDb transactions to avoid deadlock
  • genesis-codegen : Prioritise project dictionary file over dependency dictionary file during codegen
  • genesis-config : Support String input for sys def ProcessDependencyTimeoutSeconds
  • genesis-db : Handle sql getRange operation with continuation
  • genesis-testsupport : Fix handling of nested classes
  • genesis-net : Ensure the SetProblems object returns errors and warnings appropriately when used in an event handler and populate the FIELD property correctly when applying automatic mandatory field validation
  • genesis-pal-streamer : Ensure response to client when more data is available and records in lookup all filtered out
  • genesis-pal-dataserver : Fixed an issue where priming progress was incorrectly printing 0 rather than the amount of records it has processed
  • Fixed a test-only edge case in GenesisMessageClient where event message type, correctly registered with EventReply, was expected to return a GenesisSet in a specific test path. This mismatch caused type errors, now resolved by transforming the reply into a GenesisSet where needed

8.10.1

Fixes
  • genesis-db : Change default Backwards Join Cache mode to Sync
  • Fix ClassCastException issue in backwards join cache

Client

Features

  • Added new cron scheduler component
  • Added expression builder package and rule builder component
  • build-kit : Reading dot env file parameter from env params
  • foundation-ui : Add draggable ability to existing modal component

Fixes

  • foundation-entity-management : Corrected add button position when search-bar is enabled
  • foundation-login : Build from docs
  • foundation-ui : Fixing width in calendar days of week header for weekends hidden
  • Upgrade docs management to the latest version
  • client-app : Fix setup issue after env tooling change
  • Add proxy rewrite logic for gwf
  • Add proxy support for public path deployments

Breaking changes

Mandatory upgrade to Gradle version 8.10.2

We have had to move onto version 8.10.2 of Gradle as part of a security vulnerability fix. A dependent library of the Genesis Framework (Apache Camel) had a critical vulnerability and the fixed version uses a library called Jackson 2.18, which is incompatible with Gradle 8.4 (our previous version of gradle) due to it's own bug. Gradle have fixed their bug in 8.10.2+ but they have not backported to 8.4 and as such projects taking Genesis 8.10+ of the Genesis Server Framework are required to follow these steps to update their project's gradle wrapper to 8.10.2.

Upgrade steps

First, upgrade your Genesis server dependencies to use 8.10.* where * is the latest patch version of Genesis at the time of your upgrade. To be clear, although the new gradle is version 8.10.2 this is a coincidence and separate from the Genesis version number. Upgrading the Genesis Server version must be completed before the next instructions following these instructions:

Upgrade gradle version using a script

Genesis provides a bash script that can automate the gradle wrapper upgrade step for a streamlined process.

Download script

Download script user guide

Manually upgrade gradle version

If you want to perform the gradle upgrade manually,

  1. Ensure there is a reachable local Gradle installation using the gradle command with version 8.10.2 in your local environment.
  2. Under your project root directory run this command: gradle wrapper --gradle-version 8.10.2. Make sure not to use gradlew and use the local gradle version instead.
  3. Then move into the project's server directory, and run the same command again: gradle wrapper --gradle-version 8.10.2

Please note, if the instructions above fail to download the new version it is likely that your IT department may be blocking gradle downloads. In which case speak to your IT team about where you can download Gradle version 8.10.2 within your enterprise, requesting they add it if this version isn't yet available.

Click here for more details on the gradle issue which forced the upgrade
Click here for further details on upgrading Gradle
Click here for Gradle breaking changes release notes