8.10
Server
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 replacedrowFiltersin transformer configurationgenesis-transform: Modified transformer configuration to use inclusion over exclusion for column filtersgenesis-pal-dataserver: Add support for importing entity indicesgenesis-testsupport: Added support for testing process end stategenesis-pal-dataserver: AddmaxBytesPerCharacterconfiguration item to improve handling of UTF-8 characters in indicesgenesis-db: Extension to allow interception of database writesgenesis-criteria: Added additional functions in criteria API (isNullOrBlank,longtoDate,longToDateTime)genesis-testsupport: Add support for@UserRightannotationgenesis-pal-dataserver: Add new dataserver update processing modegenesis-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_HOMEintemplt.xmlfiles - 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 messagesgenesis-pal-dataserver: Add support for non unique indicesgenesis-pal-dataserver: Avoid unnecessary LMDB range read in certain scenariosgenesis-pal-dataserver: Ensure string UTF-8 byte size is taken into account when truncating strings as part of index handlinggenesis-pal-dataserver: Ensure we use LMDB as source of truth when theoldRecordinformation in the table update is not availablegenesis-db: Fixed an issue withupsertAllin SQL layer where it was unable to handle records where the primary key was not populated but is an autoIncrement or sequenced fieldgenesis-db: Do not refresh updates that have moved in or out of rangegenesis-db: When db cache inserts are enabled, write inserts to the cache if existing cache entry value is nulldiags: Better log error message when SysDef evaluation failsgenesis-criteria: Fixed scenarios where METHOD_EXPRESSION types would not be handled correctlygenesis-db: UpsertAll now handles insert operations with auto generated indexed sequence values correctly in batch modegenesis-testsupport: Detect annotations on super classesgradle-plugin-common: Ensure automatic dependency resolution handles exceptions correctlygenesis-pal-consolidator: Ensure non-nullable fields without default value can be zeroed out automatically in non-transient cold start operationsgenesis-pal-dataserver:Stringoverflow handling logic is now applied correctly when priminggenesis-pal-dataserver: RevertpublishUpdatesWhilePrimingto previous behaviour when it was ignored, due to issue when enabledgenesis-pal-requestserver: Range requests using FROM/TO are now evaluated correctlypbc-gradle-plugin: Allow patch inclusive semantic versions (^X syntax) in client versionssettings-gradle-plugin-common: Add script dependencies on script-config module if presentgenesis-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
GenesisInjectorfor 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 enginegenesis-pal-dataserver: Ensure insert updates are evaluated using dataserver where clausegenesis-pal-dataserver: Fix numerous out of sync update processing issuesgenesis-pal-dataserver: Improve handling of data server on unrecoverable key errors
8.10.9
Features
core:startProcessappends environment variableGENESIS_SYSDEF_JVM_OPTIONSto the process jvm optionsgenesis-dbtest: Option to generate random SQL schema name for tests
Fixes
distribution-gradle-plugin: Fix incorrect initialisation logicgenesis-pal-dataserver: Fury serializer can now handle payloads greater than 512 bytes correctlygenesis-pal-dataserver: SettingMAX_VIEW = 0should allow views to grow without boundaries other thanInteger.MAX_VALUEgenesis-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 entrygenesis-environment: RevertGenesisInjectorchanges forPurgeTablesand related scripts
8.10.5
Features
genesis-db: Try to detect sql layer deadlocksgenesis-router: Improve handling oftriggerEventin custom webhandler script
Fixes
genesis-db: Ensure "audited" db API runs audit operations in the same transaction and fix transactional db listenersgenesis-environment: EnsureGlobalClasspathAdditionssysdef item is handled correctly as part ofstartProcessclasspath generationgenesis-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 thePROCESS_MET_DATAtable exists in the dbgenesis-environment: Ensure environment genesis-generated-sysdef and genesis-generated-fields take priority in classpath generationgenesis-environment:preCompileScriptsnow takes into account the tag and uses multiple modules for classpath generation (if defined) in the tag in processes.xmlgenesis-logging: Add default log paths to the log4j2-default.xml file if L and RL env variables are not foundgenesis-logging: Fixed issues wherestartServerwould throw an error and stop ifruntime/logscontained a.gzfile 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 archivinggenesis-pal-dataserver: Improve memory profile of data server enriched fields
Fixes
genesis-console: Console endpointsEVENT_START_PROCESSandEVENT_STOP_PROCESSnow 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 scriptsgenesis-gradle: Also use site specific template files when checking for overridden processesgenesis-gradle: Fixed an issue where the gradle cache was reading system definition items defined with typeLONGasINTvalues. 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 extensionsgenesis-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 deadlockgenesis-codegen: Prioritise project dictionary file over dependency dictionary file during codegengenesis-config: SupportStringinput for sys def ProcessDependencyTimeoutSecondsgenesis-db: Handle sql getRange operation with continuationgenesis-testsupport: Fix handling of nested classesgenesis-net: Ensure theSetProblemsobject returns errors and warnings appropriately when used in an event handler and populate theFIELDproperty correctly when applying automatic mandatory field validationgenesis-pal-streamer: Ensure response to client when more data is available and records in lookup all filtered outgenesis-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
GenesisMessageClientwhere 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
ClassCastExceptionissue 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 paramsfoundation-ui: Add draggable ability to existing modal component
Fixes
foundation-entity-management: Corrected add button position when search-bar is enabledfoundation-login: Build from docsfoundation-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.
Manually upgrade gradle version
If you want to perform the gradle upgrade manually,
- Ensure there is a reachable local Gradle installation using the
gradlecommand with version 8.10.2 in your local environment. - Under your project root directory run this command:
gradle wrapper --gradle-version 8.10.2. Make sure not to usegradlewand use the localgradleversion instead. - Then move into the project's
serverdirectory, 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