8.11
Server
This release contains impactful changes. They are not breaking but typical stumbling blocks for older applications upgrading. These are listed at the end of this page, along with instructions to resolve.
Features
distribution-gradle-plugin: Add support for copying "data" folder automatically to distribution packagegenesis-config: AddscriptCacheDir,UseJsonSystemDefinitionandScriptCachePerServicesystem definition settingsgenesis-config: Add compiler warning for unsupported sys def typesgenesis-criteria: Added additional functions in criteria API (isNullOrBlank,longtoDate,longToDateTime)genesis-db: Try to detect sql layer deadlocksgenesis-environment: Allow processes.xml configuration to be overridden using system definition propertiesgenesis-testsupport: Create GenesisSharedContextTest where the microservice survives the test to improve performance in some scenariosgenesis-logging: Support configurable log directories and system definition option to disable automatic archivinggenesis-mcp: Added a new MCP server process that dynamically creates LLM compatible tools from Genesis resourcesgenesis-pal-datapipeline: Add delayBetweenBatches + delayBetweenReads to db batch polling sourcegenesis-pal-dataserver: Improve memory profile of data server enriched fieldsgenesis-router: Handle Netty exceptions when creating a TextWebsocketFrame in a graceful mannergenesis-router: Improve handling oftriggerEventin custom webhandler scriptgenesis-subcore: Update nginx.conf to include commonly required settingsgenesis-transform: Added value formatting as first class operation within Transformer Engine
Fixes
genesis-router: Cookie based auth doesn't work on multipart HTTP messagesgenesis-db: Change default Backwards Join Cache mode to Syncgenesis-db: Do not use SQL thread pool for RxDb transactions to avoid deadlockgenesis-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 fielddistribution-gradle-plugin: Ensure only PBC projects copy the "data" directory to the distribution packageexec-gradle-plugin: Ensure exec gradle plugin doesn't throw a null pointer exception when no system definition environment is foundgenesis-clustersupport: Fall back to db if service discovery cache missing entrygenesis-codegen: Prioritise project dictionary file over dependency dictionary file during codegengenesis-config: SupportStringinput for sys def ProcessDependencyTimeoutSecondsgenesis-console: Console endpointsEVENT_START_PROCESSandEVENT_STOP_PROCESSnow work as expected. Previously an error was returned in recent versions of the platform.genesis-db: Ensure "audited" db API runs audit operations in the same transaction and fix transactional db listenersgenesis-db: Handle sql getRange operation with continuationgenesis-db: UpsertAll now handles insert operations with auto generated indexed sequence values correctly in batch modegenesis-environment: EnsureGlobalClasspathAdditionssysdef item is handled correctly as part ofstartProcessclasspath generationgenesis-environment: Ensure environment genesis-generated-sysdef and genesis-generated-fields take priority in classpath generationgenesis-environment:GENESIS_SYSDEF_environment variable values now take precedence when the system definition item is being read in python scriptsgenesis-environment:preCompileScriptsnow takes into account the tag and uses multiple modules for classpath generation (if defined) in the tag in processes.xmlgenesis-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-testsupport: Ensure injected test properties are initialised before test startupgenesis-testsupport: Ensure super classes for nested inner classes are also scanned for injectable propertiesgenesis-testsupport: Detect annotations on super classesgenesis-testsupport: Fix handling of nested classesgenesis-testsupport: Test process exit codegenesis-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 processgenesis-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-streamer: Set streamer process to warn when stream terminatedgenesis-router: Fix package scan definition in processes.xml to only include console router extensionsgenesis-transform: Ensure column renames specification order does not mattergradle-plugins: 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: Fixed an issue where priming progress was incorrectly printing 0 rather than the amount of records it has processedgenesis-pal-requestserver: Range requests using FROM/TO are now evaluated correctlypal-streamer: Added logger to streamer definition interfacesettings-plugin: Add script dependencies on script-config module if present- Ensure transformer configurations with multiple column formats are processed correctly
- Fix
ClassCastExceptionissue in backwards join cache - Fix issue in conditional annotations usage with multiple package scans
- 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
Dependency changes
- Bump apachePoi from 5.4.0 to 5.4.1
- Bump byteBuddyVersion from 1.17.2 to 1.17.4
- Bump byteBuddyVersion from 1.17.4 to 1.17.5
- Bump camelVersion from 4.10.2 to 4.10.3
- Bump com.github.oshi:oshi-core from 6.8.0 to 6.8.1
- Bump com.google.errorprone:error_prone_annotations from 2.37.0 to 2.38.0
- Bump com.google.protobuf:protobuf-java from 4.30.1 to 4.30.2
- Bump com.zaxxer:HikariCP from 6.2.1 to 6.3.0
- Bump commons-io:commons-io from 2.18.0 to 2.19.0
- Bump dcarbone/install-jq-action from 3.0.1 to 3.1.1
- Bump debeziumVersion from 3.0.8.Final to 3.1.0.Final
- Bump debeziumVersion from 3.1.0.Final to 3.1.1.Final
- Bump info.picocli:picocli from 4.7.6 to 4.7.7
- Bump joda-time:joda-time from 2.13.1 to 2.14.0
- Bump junitVersion from 5.12.1 to 5.12.2
- Bump kotlinCoroutinesVersion from 1.10.1 to 1.10.2
- Bump micrometerVersion from 1.14.5 to 1.14.6
- Bump mockitoVersion from 5.16.1 to 5.17.0
- Bump org.apache.fury:fury-core from 0.10.0 to 0.10.1
- Bump org.apache.shiro:shiro-core from 2.0.2 to 2.0.3
- Bump org.apache.shiro:shiro-core from 2.0.3 to 2.0.4
- Bump org.checkerframework:checker-qual from 3.49.1 to 3.49.2
- Bump org.junit.platform:junit-platform-launcher from 1.12.1 to 1.12.2
- Bump software.amazon.jdbc:aws-advanced-jdbc-wrapper from 2.5.5 to 2.5.6
- Bump testcontainersVersion from 1.20.6 to 1.21.0
Patch releases
8.11.8
Features
genesis-environment: Implement GetNextAutoIncrementNumbers script to work similarly to GetNextSequenceNumbers
Fixes
genesis-dictionary: Ensure shared aliased enums can be serialised/deserialised using Jacksongenesis-eventhandler: Change incorrect use of system definition itemUseNettyThreadsInEventHandlerin event handler implementationgenesis-process: EnsureSysDefobject is initialised before reading-process-config.ktsand handle issues withSysDefobject usage in GPAL scripts gracefully
8.11.7
Features
core: Can enable including the Open Telemetry java agent and its properties file through Sys Def
Fixes
genesis-config: Make GenesisScriptHost construction consistent across the platform in terms of script cache path resolution and improve script cache implementation
8.11.6
######## Features
genesis-dictionary: Add support for shared enum definitions with aliasesgenesis-pal: Add support forauthblocks without a map name in thepermissioningGPAL section of custom req reps and eventhandlers
Fixes
genesis-transform: Ensure values with different types (i.e.Short,Int,Long) for the same column and format are formatted as expected
8.11.5
Features
genesis-transform: Added support to apply a timezone to all date time format operations
8.11.4
Fixes
genesis-process: Stacktrace is now shown again when any issues arise during process startup
8.11.3
Features
genesis-criteria: Add missing Expr functions to criteria validation allowlist
8.11.2
Features
core:startProcessappends environment variableGENESIS_SYSDEF_JVM_OPTIONSto the process jvm optionsgenesis-criteria: ImplementExpr.dateTimeIsInRangefunctionality for time-based filtering andDATE_TIME_IS_IN_RANGEmethod call to support this feature in report generationgenesis-dbtest: Option to generate random SQL schema name for testsgenesis-environment: Add PurgersReader.purgeAllDerivedRecordsFlow and PurgersReader.purgeAllDerivedRangesFlowgenesis-environment: AddPurgersReader.purgeDerivedRangeFlowgenesis-environment: Return purged record inPurgersReader.purgeDerivedRecordgenesis-pal-consolidator: Support cold start by usingCONSOLIDATOR_COLDSTARTsys def valuegenesis-pal-dataserver: Improve data server duplicate key error message and logging around start up
Fixes
genesis-config: Only use genesis-system-definition to determine environmentgenesis-environment: Fix issue preventing all script.kts file evaluationsgenesis-pal-dataserver: Ensure an additional QUERY_UPDATE message with MORE_ROWS=false is sent to query subscriptions using thechunkLargeMessagesoption, if no more rows are available after a DATA_LOGON or MORE_ROWS requestgenesis-pal-dataserver: Ensure insert updates are evaluated using dataserver where clausegenesis-pal-dataserver: Fix numerous out of sync update processing issuesgenesis-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 testsgenesis-environment: RevertGenesisInjectorchanges forPurgeTablesand related scripts
8.11.1
Features
genesis-gradle: Support site-specific in product details plugin
Fixes
genesis-codegen: Fix bug in generatedbuildRequestfunctiongenesis-config: Ensure filesystem handling logic when reading classpath resources can recover gracefully from exceptions in some scenariosgenesis-dictionary: Dao codegen is cached correctly when there are DateTime fields with default valuesgenesis-testsupport: Ensure combination of super classes, nested classes and enclosing classes can set injectable properties correctlygenesis-pal-requestserver: EnsureSOURCE_REFis always set when a server side timeout is triggered in a custom request replygenesis-mcp: ChangegroupIdof MCP process to prevent it being compacted with core services
Client
Features
foundation-ui: Allow Customization of Scrollbar Size in multiselect- Create value expression builder component and add utils
expression-builder: Dispatch explicit null event detail for blank ruleexpression-builder: Allow lazy loading of configexpression-builder: Handle null configs when lazy loading
Fixes
foundation-openfin: Update workspace versionfoundation-login: Unset user before refreshCredentials loginfoundation-comms: Support isEqualDate for criteriagrid-pro: Do not persist state when all columns filteredfoundation-storybook: Update storybook package + package cleanupfoundation-entity-management: Support disabling requestAutoSetupfoundation-comms: Prevent session extension happening on multiple windows at the same time- Expression builder cominator link text styles
foundation-utils: Handle enum schema with oneof null valuesfoundation-ui: Also handle expr builder lazy loading in components- Add success type to snackbar types
foundation-entity-management: Address getters using incorrect object ref- Expression builder styling and UX tweaks
Impactful changes
Changes in genesis-processes.xml and genesis-service-definitions.xml
The genesis-processes.xml and genesis-service-definitions.xml files found in the core genesis distribution for version 8.11 have been updated with new and necessary configuration to run the new GENESIS_MCP service.
If your application overrides genesis-processes.xml or genesis-service-definitions.xml using the site-specific approach, please ensure the overridden configuration aligns with the new changes to avoid incompatibilities at the genesisInstall stage.
To avoid these sort of configuration override conflicts we recommend using processes.xml system definition overrides documented here.
This mechanism works in a fine grain fashion so only the specified process settings are overridden and avoids overriding entire *-processes.xml files in site-specific, which leads to necessary manual 3-way diff checks when upgrading platform versions.
Change in mandatory field validation
A bugfix introduced in this release, and backported to other releases, solves an issue at the automatic message validation provided by event handlers.
In more detail, if a mandatory field is found to be missing as part of the event handler validation stage, the generated error message now contains the FIELD property with the correct field name instead of containing the text "DETAILS".
Please ensure your application tests and frontend validation behaves accordingly and make any necessary changes if required to accommodate the fixed behaviour.
Bugfix reference:
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