8.4
This release contains breaking changes. These are listed at the end of this page, along with instructions for migrating from previous releases.
Server
Features
- Implement context based "filter" support as shared functionality for dataserver/req-rep/auth blocks, including enriched dataserver queries
- Add support for REST integration in datapipelines
- Added source for use by event handlers.
- Deprecate safeWriteTransaction in favour of writeTransaction
- Added support for camel Idempotent repositories in data pipelines (8.4.2+)
Fixes
- (deploy-plugin): deploy zip task reference correct file when product name set in settings plugin
- Dataserver backwardsJoin view does not recover in case of a buffered out-of-order update
- Generate non-required properties as nullable for paginated requests
- Improve error message when a system definition property is expected but is not specified
- Make http response function suspending to fix issues with generated code
- Remap Oracle Script needs a / between 2 Declare blocks
- Allow for req rep GET without request param
- Correctly parse criteria expressions for custom req reps
- Filter out genesis.testsupport from TestContext package scan
- Remove unnecessary kotlinx-serialization dependency
- When using @SysDefOverwrite annotation in tests and scripts use sys def receiver
Dependency changes
- Bump actions/upload-artifact from 3 to 4 by
- Bump com.avast.gradle:gradle-docker-compose-plugin from 0.17.7 to 0.17.8
- Bump com.github.oshi:oshi-core from 6.6.2 to 6.6.3
- Bump com.jfrog.artifactory from 5.2.3 to 5.2.4
- Bump com.jfrog.artifactory from 5.2.4 to 5.2.5
- Bump com.microsoft.sqlserver:mssql-jdbc from 12.6.1.jre11 to 12.8.1.jre11
- Bump com.networknt:json-schema-validator from 1.5.0 to 1.5.1
- Bump commons-cli:commons-cli from 1.8.0 to 1.9.0
- Bump debeziumVersion from 2.7.0.Final to 2.7.1.Final
- Bump io.github.classgraph:classgraph from 4.8.174 to 4.8.175
- Bump oracleJdbcVersion from 23.4.0.24.05 to 23.5.0.24.07
- Bump org.apache.commons:commons-compress from 1.26.2 to 1.27.1
- Bump org.apache.fury:fury-core from 0.6.0 to 0.7.0
- Bump org.jfrog.buildinfo:build-info-extractor-gradle from 5.2.3 to 5.2.4
- Bump org.jfrog.buildinfo:build-info-extractor-gradle from 5.2.4 to 5.2.5
- Bump slf4jVersion from 2.0.13 to 2.0.16
- Bump sshdVersion from 2.13.1 to 2.13.2
Patch releases
8.4.6
Features
- genesis-codegen: Add flag to create compact
toStringmethod on entities - genesis-junit: Add support for dumpit csv and csv.gz files
- Allow lambdas for
withInputexpressions to be assigned and reused - Optimise memory usage
BackwardJoinCachefor 1-2-1 joins - Configurable update frequency and caching for Db cluster strategy
- Display current cluster node role in
mon - Provide better bulk purge support
Performance improvements
- genesis-environment: Use
deleteAllinPurgerScript.purgeDerivedRange
Fixes
- genesis-pal-dataserver: Handle multiple updates for same record in data server
- Add sync backwards join cache impl
- Ensure
TRACElevel is set correctly forGenesisMessageEncoderandGenesisMessageDecoderwhenDATADUMP_ONis activated - Ensure cookie based
REFRESH_AUTH_TOKENvalue is correctly added toEVENT_LOGIN_AUTHpayload - ResourceDaemon doesn't properly evaluate
ClusterMode - Cluster manager not bound when running
GenesisRunand other scripts that userServiceModule - Ensure
DataDumpManageruses different loggers forGenesisMessageDecoderandGenesisMessageEncoder - Generated rx repos use modified fields for modify operations
- Increase zero mq subscriber worker high water mark value to Integer.max_value
- Race condition when processing multiple back join table modifications on different fields at the same time
- Regression on view generation when empty blocks are used in derived fields
- Reusable lambdas in views now cope with aliased table arguments
8.4.5
- Data Server indices on DOUBLE fields are now correctly sorted correctly in LMDB
- Remove explicit toString call on ClusterMessage debug line
8.4.4
- Disable copyDependencies task in genesis-openapi-codegen and improve publish-plugin-config configuration to ensure no plugin modules ever run copyDependencies task
8.4.3
- Fixed an issue in Remap for Oracle DB where foreign keys would be violated for auto increment columns
8.4.2
- Ensure only generated jars are added to process classpath when using WriteClasspathToManifest
8.4.1
- Ensure groovy compilation exceptions are handled
- Fail preCompileScripts gradle task by default and add option to disable failing on error
- Fixed multiple components dependencies pointing at beta version
Client
Features
foundation-fdc3: Marking types as deprecated, fix channel broadcast payloadfoundation-fdc3: Bumping fdc3 package version
Fixes
foundation-ui: Port resetCombobox function from genesis-createfoundation-forms: Check if oneOf exist for genesisType in date rendererfoundation-forms: Smart forms correct errors placementfoundation-forms: Pass jsonSchema to arrayList renderer if uiSchema is providedfoundation-entity-management: Show entityLabel on notification descriptionfoundation-entity-management: ChangeCase for search-bar if headerName isn't provided- Change SLACK_CHANNEL on CI workflows
- Add new circular.yml workflow script + circular dep fixes
Noteworthy changes
New filter syntax
where blocks replaced with the new filter syntax
This new feature is consistent across our different modules, such as authorisation, Data Server, REQUEST SERVER, etc.
The new filter clause replaces the old where clause functionality. The old where clause is now deprecated. Use filter from now on.
Warn on truncated keys
This change prevents the Data Server from going into an error state when string index fields are truncated or when rows are ignored. This now triggers a WARNING, and the Data Server continues to function.
Before the change, if a STRING field in a target table or view was greater in size than that defined by the Data Server index definition, the Data Server would go into ERROR state. From that point onward, it would not serve any more requests, essentially rejecting all messages.
Any Data Server definition that has indices that include STRING type fields could be affected - if these fields could potentially end up truncated by a string overflow.
In most cases, you do not need to take action. This is a simple change in behaviour.
You only need to take action if your Data Server has been configured to respond to an ERROR state caused by truncated string index fields or ignored rows. This is not a likely design scenario, but if this is the case for your application, you need to create new code to replicate this behaviour.
Breaking changes
Updated GenesisHTTPClient
This now allows invocations from different contexts.
Are you affected?
If you are using the http client directly, some methods are now marked as internal. You could receive a compilation error if you refer to a function that is now internal.
Medium fix
Use only the methods exposed as public in the interface (get, put, post, delete).
Read the pages on GenesisHTTPClient for full information.
DbOperation updates
DbOperation class has changed packages as part of a refactor
Are you affected?
You need to take action if:
- you use the Data Pipelines component in your application
- you have any compiler errors when you build your app after the upgrade with cannot find Symbol DbOperation.
Simple fix
- Search your imports for all instances of
global.genesis.datapipeline.pal.sink. - Replace with
global.genesis.pipeline.api.db.
rxSources updates
Made rxSources non-functional interfaces, standardised http source syntax and added utilities The unused RxSink interface is not a functional interface anymore; it is now a regular interface.
Are you affected?
Only applications that use the RxSink interface in the Data Pipeline are affected.
Simple fix
Any new implementations of Data Pipeline must only use the standard http web calls. Check the revised reference documentation for Data Pipeline for full details.
onOperationError type safety
Added type safe onOperationError handling to data pipelines Error handling for Data Pipeline has been redesigned.
Are you affected?
If your application uses Data Pipelines and are using error handlers in them, you are affected.
Medium fix Change your error handling based on the new handlers.