8.8
Server
Features
- Added ability to perform record deltas using dbSink by exposing
modifiedFields
- Add
dynamicQueryBuilder
support - Add support for dynamic parameters as well as fix issues related to ENUM and DateTime handling
- Added support for processing context in data pipeline operators
- Allow docker build to pre-set SysDef environment variables
- Add enum references as companion object properties for each enum field for easy access in GPAL scripts
- Generated Entities: Generate all ENUM values inside enum reference objects for completeness
- Optimise memory usage
BackwardJoinCache
for 1-2-1 joins - Added support for enabling app level sys def files in integration tests
- Allows for overriding of test process name
- Provide better bulk purge support
Performance improvements
genesis-environment
: Use deleteAll in PurgerScript.purgeDerivedRange
Fixes
genesis-environment
: Catch and accumulate unsupported formula errors while processing a worksheet- Optimize index matching for non-consecutive fields
distribution-gradle-plugin
: Site specific plugin to not modify binary files stored under data- Add sync backwards join cache impl
- Ensure Index.NonUnique class definition has a fixed serialVersionUID field
- Ensure cookie based
REFRESH_AUTH_TOKEN
value is correctly added toEVENT_LOGIN_AUTH
payload - Fix deserialization incompatibility for Index class
- Fixed issue where removal of a sequence at the same time as a table rename would cause remap to fail
- Increase Kotlin Daemon Heap to 5g
- Ensure number parameters are not passed as string values to
where
clauses and use correct uppercase underscore translation - ResourceDaemon doesn't properly evaluate
ClusterMode
- Align Kotlin daemon heap across composite build
DbBulkSubscribe
not updating secondary table whenbackwardsJoin
true- Ensure
DataDumpManager
uses different loggers forGenesisMessageDecoder
andGenesisMessageEncoder
- Ensure optimistic concurrency checks work within transactions
- Ensure script files in site-specific have priority when searching by suffix
- Exec plugin should take
clientName
override into account - GenesisType json schema property for req reps and data server queries
- Increase producer hwm for zeromq update layer
- Option to register root records in back join cache to ensure they exist when child record is registered
- Replace hardcoded references of GENESIS_CLUSTER to use
ServiceDiscovery
based on resource name - Split kotlin daemon jvm options to separate property
- Increase zero mq subscriber worker high water mark value to
Integer.max_value
- Generated SysDef should allow safe conversion of types
- Using app sys def file in integration tests should work for multiple tests
Dependency changes
- Bump kotlinCoroutinesVersion from 1.7.3 to 1.10.0
- Bump byteBuddyVersion from 1.15.10 to 1.15.11
- Bump com.avast.gradle:gradle-docker-compose-plugin from 0.17.11 to 0.17.12
- Bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre
- Bump com.google.protobuf:protobuf-java from 4.29.0 to 4.29.1
- Bump com.google.protobuf:protobuf-java from 4.29.1 to 4.29.2
- Bump commons-codec:commons-codec from 1.17.1 to 1.17.2
- Bump debeziumVersion from 3.0.4.Final to 3.0.5.Final
- Bump debeziumVersion from 3.0.5.Final to 3.0.6.Final
- Bump kotlinCoroutinesVersion from 1.10.0 to 1.10.1
- Bump log4jVersion from 2.24.2 to 2.24.3
- Bump micrometerVersion from 1.14.1 to 1.14.2
- Bump mockitoVersion from 5.14.2 to 5.15.2
- Bump nettyVersion from 4.1.115.Final to 4.1.116.Final
- Bump org.assertj:assertj-core from 3.26.3 to 3.27.0
- Bump org.java-websocket:Java-WebSocket from 1.5.7 to 1.6.0
- Bump org.jetbrains.dokka from 1.9.10 to 2.0.0
- Bump org.jetbrains.dokka:dokka-gradle-plugin from 1.9.10 to 2.0.0
- Bump org.jline:jline from 3.27.1 to 3.28.0
- Bump org.kiwiproject:consul-client from 1.4.2 to 1.4.5
- Bump software.amazon.jdbc:aws-advanced-jdbc-wrapper from 2.5.3 to 2.5.4
Patch releases
8.8.28
Features
genesis-pal-streamerclient
: Add additional logging when moving to error state
Fixes
genesis-pal-dataserver
: Fix numerous out of sync update processing issuesgenesis-pal-dataserver
: Improve handling of data server on unrecoverable key errors
8.8.27
Features
genesis-pal-streamerclient
: Add additional logs to improve troubleshooting
8.8.26
Fixes
genesis-pal-dataserver
: Ensure an additionalQUERY_UPDATE
message withMORE_ROWS=false
is sent to query subscriptions using thechunkLargeMessages
option, if no more rows are available after aDATA_LOGON
orMORE_ROWS
request (GSF-7356)genesis-pal-requestserver
: Fix bug in handling of a_FROM
=>_TO
range
8.8.25
Features
genesis-environment
: AddPurgersReader.purgeDerivedRangeFlow
8.8.24
Features
genesis-environment
: Return purged record inPurgersReader.purgeDerivedRecord
Fixes
genesis-pal-dataserver
: SettingMAX_VIEW = 0
should allow views to grow without boundaries other thanInteger.MAX_VALUE
8.8.23
Fixes
genesis-pal-dataserver
: Fury serializer can now handle payloads greater than 512 bytes correctlygenesis-testsupport
: Do not register lifecycle manager JVM shutdown hook for tests
8.8.22
Features
genesis-dbtest
: Option to generate random SQL schema name for tests
8.8.21
Fixes
genesis-environment
: Fix issue preventing all script.kts file evaluations
8.8.20
Fixes
genesis-environment
: RevertGenesisInjector
changes forPurgeTables
and related scripts
8.8.19
Features
genesis-gradle
: Support site-specific in product details plugin
Fixes
distribution-gradle-plugin
: Fix incorrect initialisation logic
8.8.18
Fixes
genesis-clustersupport
: Fall back to db if service discovery cache missing entry
8.8.17
Fixes
genesis-environment
: EnsureGlobalClasspathAdditions
sysdef item is handled correctly as part ofstartProcess
classpath generation
8.8.16
Features
genesis-logging
: Support configurable log directories and system definition option to disable automatic archiving
Fixes
genesis-environment
: Ensure environment genesis-generated-sysdef and genesis-generated-fields take priority in classpath generationgenesis-environment
:preCompileScripts
now 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 wherestartServer
would throw an error and stop ifruntime/logs
contained a.gz
file which was not related to a valid Genesis process
8.8.15
Fixes
genesis-gradle
: Fixed an issue where the gradle cache was reading system definition items defined with typeLONG
asINT
values. This lead to constant cache misses even when the values were unchanged, which contributed to longer build times.
8.8.14
Fixes
genesis-config
: SupportString
input for sys def ProcessDependencyTimeoutSecondsgenesis-console
: Console endpointsEVENT_START_PROCESS
andEVENT_STOP_PROCESS
now work as expected. Previously an error was returned in recent versions of the platform.genesis-db
: Handle sql getRange operation with continuationgenesis-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-testsupport
: Fix handling of nested classesgenesis-pal-streamer
: Ensure response to client when more data is available and records in lookup all filtered outgenesis-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.8.13
Fixes
genesis-db
: Do not use SQL thread pool for RxDb transactions to avoid deadlockgenesis-pal-consolidator
: Ensure non-nullable fields without default value can be zeroed out automatically in non-transient cold start operationsgenesis-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.8.12
Fixes
genesis-db
: Fixed an issue withupsertAll
in SQL layer where it was unable to handle records where the primary key was not populated but is an autoIncrement or sequenced fieldgenesis-testsupport
: Detect annotations on super classesgenesis-pal-dataserver
:String
overflow handling logic is now applied correctly when primingsettings-gradle-plugin-common
: Add script dependencies on script-config module if present
8.8.11
Features
genesis-pal-dataserver
: Improve priming progress updates in log file
Fixes
genesis-db
: UpsertAll now handles insert operations with auto generated indexed sequence values correctly in batch modegenesis-pal-dataserver
: RevertpublishUpdatesWhilePriming
to previous behaviour when it was ignored, due to issue when enabledgenesis-pal-requestserver
: Range requests using FROM/TO are now evaluated correctly
8.8.10
Features
- Add support for
GENESIS_HOME
intemplt.xml
files - Improve coroutine exception handling
Fixes
- Use
GenesisInjector
for all script configurations
8.8.9
Features
genesis-pal-dataserver
: AddmaxBytesPerCharacter
configuration item to improve handling of UTF-8 characters in indices
Fixes
genesis-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-dataserver2
: Fixed a race condition when a modify event matching the where clause quickly follows a non-matching insert event.
Experimental features
genesis-pal-dataserver
: Added an alternate update handler - a new way of processing table/view updates that relies on the database as a source of truth more often, potentially introducing more database load.
8.8.8
Fixes
- Do not refresh updates that have moved in or out of range
- Better log error message when
SysDef
evaluation fails - Fix support for views in
DbMon
8.8.7
Fixes
- Disabling
processRestart
when flag is TRUE and not FALSE
8.8.6
Fixes
- Tests should apply
SysDefOverwrite
when a process config file is provided
8.8.5
Fixes
- dataserver: ensure we use LMDB as source of truth when the
oldRecord
information in the table update is not available - db: when db cache inserts are enabled, write inserts to the cache if existing cache entry value is null
- Disabling
processRestart
for docker images and including encrypting sysdefs
8.8.4
Features
genesis-testsupport
: Create compatibleDumpIt
interfacegenesis-testsupport
: Improve loading of test data
Fixes
- Using app sys def file in integration tests should work for multiple tests
8.8.3
Fixes
- Generated SysDef should allow safe conversion of types
8.8.2
Features
- genesis-codegen: Add flag to create compact
toString
method on entities - genesis-junit: Add support for dumpit csv and csv.gz files
- Display current cluster node role in
mon
Fixes
ClasspathGenerator
to attempt to resolve module name without a full match- Generated rx repos use modified fields for modify operations
- Race condition when processing multiple back join table modifications on different fields at the same time
- Reusable lambdas in views now cope with aliased table arguments
8.8.1
Features
- Enhance criteria expression capabilities by allowing direct comparisons between
DateTime
objects againstLong
andString
types.
Fixes
- Ensure
TRACE
level is set correctly forGenesisMessageEncoder
andGenesisMessageDecoder
whenDATADUMP_ON
is activated. TypeAwareCriteriaEvaluator
in Dataserver now works with query-enriched fields.- Ensure
TypeAwareCriteriaEvaluator
usage in Dataserver and req/rep handles all common date/datetime formats. - Process bbg messages with nested structures correctly.
Client
Features
- Set position + fix styling on select renderer
- Add parts and dynamic attrs to multiselect option
- Add onchange callback to boolean renderer
- Add onchange callback to number renderer
- Added free text support in options-datasource
- Ability to use multi-select renderer with data
- Emitting grid instance from tabulator
Fixes
- Add missing types exports from packages
- Add css part onto multiselect list
- Address multiselect type re-export
- Address columnDefinitions getting lost
- Update client-app to GSF 8.7 & genesisStart to 0.1.6
- Rename auth store events to avoid clashing with consuming app
- Address datasource handleInserts when multiple criteria changes
- Use foundation-router for logout
- Added GENERATED property in Message type in foundation-comms
- Add conditional path generation in generateNavigationPath
- Proxy for file server endpoints