TOLERANT Match Release 12.0
2025/12/11
Notices and Warnings
- Match initial load tool was extended to facilitate the following:
- Deprecated option –delete is removed. The option is not needed any longer.
- Option maxMemory was renamed to max-memory.
- Option threadCount was renamed to thread-count.
- Removed attributes user-1,user-2 and so on in an effort to clean up unused configuration attributes in project.
- The attribute encryptBacklogs is now deprectated und was replaced by encryptData. A new initial load is required, if you are using the old attribute encryptBacklogs.
- Significantly improved the performance of batch runs (up to 30%) by optimizing resource handling for multi-thread settings above 4 threads.
- Reworked the behavior for maximal number of errors and subsequent handling of those:
- Service: maxInternalErrors was deprecated. Added possibility to configure a circuit breaker with the attributes maxServiceErrorWindow and maxServiceErrorPercentage instead. Refer to the manual for details.
- Batch: Attribute maxErrors was deprecated and replaced with maxBatchErrors.
- The obsolete attribute titleId was removed vom the project element and needs to be removed in older configurations accordingly.
- The old SOAP interface was moved to a separate microservice (or container in docker context). The installation is optional, to support legacy clients from customers with older infrastructure. By default it will not get installed.
- The monolithic structure of the products has been broken down into a more modern, microservice-oriented architecture. The basic shipped TOLERANT application now consists of 7 services:
- TOLERANT Backend Service: Contains all functionality needed for the technical processing of requests.
- TOLERANT GUI Service: Contains the Angular GUI.
- TOLERANT SOAP Service: Supports SOAP calls and routes to the Backend Service (optional).
- Webserver (NGINX): Gateway for all incoming requests.
- Identity Provider (Keycloak): Preconfigured identity provider for our example installation (optional).
- Grafana: Visualization of available metrics (Docker example only).
- Prometheus: Data collection and querying for later use in Grafana (Docker example only).
- The default input format delimiter and output format delimiter value has been changed to semicolon.
- Improved Initial Load Performance by up to 50% in most scenarios.
- Completely reworked the logging functionalities. Users can now use the full breadth of log4J2 functionalities. To make the switch easier, log4J2 example configurations for different scenarios are shipped with the product. For more information please refer to the manual.
- Configuration element summaryFile was removed in favor of the new batchSummary.
- A new version of the H2 database driver (h2-2.3.232) will be used from now on. This also means that customers will have to switch to a new version of our supplementary reference data (e.g. StaB data). This will be shipped together ( in the same folders on SFTP ) with the normal versions of the reference data, which will still be there to support older product versions. The new reference data artifacts will include „_from_12.0“ in the name.
- Reworked, combined and harmonized the command-line tools for service administration. Now all functionalities for managing the service and much more can be found in the new< service.sh/.exe tool. For a detailed explanation of the new features and usage, please refer to the manual.
- Removed functionality to „Reconfigure Runtime“ from GUI, backend service and CLI calls. The functionality was too similar to „Reconfigure Service“ and led to confusion.
- When being in a service instance context in GUI, the GUI and all its configuration settings can now be reloaded from the memory of the running service instance (as opposed to the underlying xml configuration). The menu entries and tooltips were improved to reflect and clarify new (and existing) behavior.
- Keycloak has been updated to version 26.4.4
- New docker images are now available via Docker Hub. All configuration items and information regarding usage and best practices can be found under our GitHub.
- The cluster communication is now using the compact serialization of Hazelcast. Please extend the serialization element to include the
block with the following serializers:- com.tolerantsoftware.match.service.cluster.SyncEventDataSerializer
- com.tolerantsoftware.match.service.cluster.MatchClusterMemberDataSerializer
- com.tolerantsoftware.match.service.cluster.MatchClusterProjectDataSerializer
- The binary structure of the index data was changed to achieve better compression. The binary data is hence incompatible with older versions of TOLERANT Match.
New Product Features
Configuration and Administration GUI
- TPR-13005: The static path element inst/1 can now be omitted from the requsts sent to the admin service.
- TPR-13108: V2 endpoints usage deprecated for GUI
- TPR-14170: Updated all GUI components to Angular version 19.0.
- TPR-14266: Reworked and consolidated several icons throughout GUI for better clarity.
- TPR-15307: Added possibility to configure project attribute warnOnErrors in GUI.
Client GUI
- TPR-11771: Improved Client GUI:
- Info section in client-GUI, now has table like organized look.
- Translations of labels are corrected.
- Results with proper labels are displayed.
- Original data/Internal data values are not displayed as empty if not configured.
Batch
- TPR-12425: The behavior when using indexRef and indexFieldRef in case of the TOLERANT Match batch ’self‘ method has been adjusted to return more logical structured results when compared to ‚reference‘ method. See manual for further details.
- TPR-14120: All batch processes will now report their statistics to a batch summary file located under
/logs . - TPR-14792: Reduced memory footprint of batch processes.
- TPR-14867: Match Batch can now use Google BigQuery Tables for reading input data and writing output data.
- TPR-15106: Termination of running batch and initial load process via the frontend now results in a clean termination of the process.
Service
- TPR-3185: Match initial load tool was extended to facilitate the following:
- –upsert-source: can be used to load data into an incremental save-point without overwriting existing data.
- –delete-source: deletes keys from the provided source and stores the resulting binary data in an incremental save point.
- TPR-3739: The new project attribute encryptData can be used to encrypt paging data, original data and the backlogs written by Tolerant Match. The attribute dataEncryptionKey can be used to overwrite the default encryption key.
- TPR-9043: Reworked the behavior for maximal number of errors.
- TPR-10137: Improved scrolling and reloading of console output when executing background jobs via GUI wizard.
- TPR-12029: Service registration for Windows has been reimplemented and improved to better support the current multi-service setup. The functionality is included in the new service.exe tool.
- TPR-12599: A new /info endpoint for all products has been introduced. For example: http://localhost:8080/postService/info. This endpoint can be used to monitor details about the product. For example: Post info endpoint has unlock code and its corresponding expiration date information.
- TPR-15049: Following improvements to the cluster synchronisation were implemented:
- Usage of compact serialization when exchange data between cluster members
- Consendering last synchronisation event when calculating the potential for the synchronisation method
- TPR-15199: The partition type „SUFFIX“ now works as expected, taking the last n (configured via length attribute) characters beginning from the end of the field value.
API
- TPR-10622: The following system properties can now be used to configure the java API client:
- com.tolerantsoftware.api.socketTimeout
- com.tolerantsoftware.api.connectionTimeout
- com.tolerantsoftware.api.maxConnections
- TPR-13975: Extended the constructor of Client-Java-API to configure request timeout and connection timeout with the constructor.
General
- TPR-432: Reject files are now only written if at least one record from the input has been rejected.
- TPR-5719: The reject files have been extended to also include the reason for the rejection of each record.
- TPR-7094: Added additional input option for CLI-Tools matchAdjustPagingDatabase and matchInspectPagingDatabase to simplify execution. The new CLI-parameters are using the configuration file to get paging database and project informations:
- Configuration file: configfile
- Project ID: projectid
- Database ID: dbid
- TPR-10958: It is now possible to configure JVM options via specific environment variables (see tolerantEnv.sh/bat for examples).
- TPR-11720: New lightweight database type ROCKS is now available. It is recommended to use this database for index saving and paging in high load scenarios, where other file based databases have their limitations. The database is designed to provide a balance between performance and simplicity. It is ideal for applications that require fast retrieval of data from large indices while minimizing overhead. Its limited functionality is intentional, allowing it to focus on its core strengths and deliver exceptional performance in specific use cases. ROCKS offers several key benefits:
- High-performance index saving: ROCKS is optimized for storing and retrieving indices.
- Effortless paging: ROCKS seamlessly handles paging, allowing applications to efficiently fetch data from large datasets.
- Minimal overhead: ROCKS‘ lightweight design ensures minimal overhead, making it well-suited for resource-constrained environments.
- TPR-11940: The Hazelcast has been upgrade to version 5.3.7. This version also includes the AWS Member Discovery feature released in an earlier version.
- TPR-12017: TOLERANT Products are restructured to use the microservice architectural and organizational approach:
- services can be started as standalone applications
- reverse proxy is used for the communication between the services
- the on-premise installation needs multiple ports
- the product is split into multiple smaller docker images
- TPR-12499: Reworked the installer to support the new microservice architecture and a simplified option set.
- TPR-12599: A new /info endpoint for all products has been introduced. For example: http://localhost:8080/postService/info. This endpoint can be used to monitor details about the product. For example: Post info endpoint has unlock code and its corresponding expiration date information.
- TPR-12614: The docker compose shipment now includes Prometheus and Grafana services.
- TPR-13005: The static path element inst/1 can now be omitted from the requsts sent to the admin service.
- TPR-13944: Introduced a threshold for minimum available RAM percentage. Exceeding this threshold during resource-intensive operations (such as Wildcard Get-by-Key or Search Requests) triggers an automatic request abortion to preempt an Out-Of-Memory (OOM). The default value is set to 5% and can be overridden using the environmental variable MIN_FREE_SYS_MEM_PERCENTAGE.
- TPR-13959: OutputFields (service or batch) can now be freely named and don’t have to be named according to internal match fields anymore (earlier for example a serviceOutpuField that had the internal field match.RuleName mapped to it needed to be named exactly like that).
- TPR-13975: Extended the constructor of Client-Java-API to configure request timeout and connection timeout with the constructor.
- TPR-14523: TOLERANT Match now includes the rule index when sorting multiple results with the same score value.
- TPR-14867: Match Batch can now use Google BigQuery Tables for reading input data and writing output data.
- TPR-15029: Restructured pipeline metrics for standardized naming patterns and better Prometheus compatibility. An overview of all available metrics can be retrieved by calling the /metrics endpoint.
- TPR-15041: The file permissions in the docker images were revised to minimize the effort needed to start the containers with a local user. For more information please visit our Docker Hub and GitHub repositories.
- TPR-15175: Reworked the structure of automatic reference data update history.
- TPR-15414: The bundled JRE was upgraded to the latest Java LTS version (21.0.9+15-LTS).
- TPR-15466: Removed length limitation on tokens in MULTISTRING-fields when inserting values.
Security
- TPR-12671: It is now possible to configure the software to limit file access to the predefined TOLERANT directories. This setting is activated per default.
Manual
- TPR-10315: Added section in manual to reflect the new Multilevel Search functionality.
- TPR-10428: Extended the manual to reflect the usage and configuration of database encryption.
Fixed Bugs
Configuration and Administration GUI
- TPR-10122: The wizard for executing background jobs via GUI now scrolls properly to the bottom in case of long console outputs.
- TPR-10277: Get-By-Key requests sent via client GUI now correctly process keys that contain hash symbols.
- TPR-10299: The GUI now correctly triggers the notification that requests the user to save the configuration when he navigates to another view.
- TPR-10422: The first partitioning field name is now stored correctly after adding multiple partitioning fields.
- TPR-10423: The checkbox „Use synonyms“ now correctly triggers the synonym processing in file preview in GUI. All environment variables are now replaced when parsing the configuration from JSON.
- TPR-10498: Match fields of type date now correctly forbid the usage of synonymList when configuring them via GUI.
- TPR-10621: The attribute tokenIgnoreMultiple in matchProfile is now properly written back to the configuration when it is saved via GUI.
- TPR-11810: Handling of unsaved project changes was improved.
- TPR-12676: Self Match condition added for „Generate-all“ button event in output ->fields tab. No double output map is generated in the configuration file for „outputfieldmap“
- TPR-14404: The GUI now displays an error banner when trying to start an inactive project.
- TPR-14430: The first element of type InputFieldmap will be used, if the mode attribute is not specified in the service configuration.
Client GUI
- TPR-10297: Fixed some minor bugs and added small usability improvements in the Client GUI.
- TPR-10327: Request history in Client GUI is now preserved when switching between Admin GUI and Client GUI.
Batch
- TPR-14535: The output synonyms are now correctly applied in case multiple output fields using the same synonymList.
Service
- TPR-10146: Empty save-points are now tolerated when loading the paging data, which should improve stability.
- TPR-10147: Stopping the project now correctly destroys all of its component even if the project was in ERROR state, which should improve stability.
- TPR-10267: Writing savepoints with SQLite databases now uses the standard TOLERANT tmp folder $TLTMP by default. This behaviour can be overwritten by setting SQLITE_TMPDIR as enviroment variable.
- TPR-10720: Accessing an inactive project returns the new error code -10036.
- TPR-13419: Creating a full savepoint will not flush dirty pages to the database anymore. This increases stability in certain scenarios.
- TPR-13542: The results of the delete request now contain the key of the deleted record.
- TPR-13661: Search requests without a match now correctly return the reqId in response JSON.
- TPR-13942: Removed possibility of locked SQLite DB when starting and synchronizing in cluster context.
- TPR-13957: Optimized cluster synchronization for less network traffic and better performance.
- TPR-15077: Administration of RocksDB savepoints was corrected, to allow index data to be restored from the latest FULL_SAVEPOINT.
General
- TPR-10180: If a project is in state ERROR it now prevents the cluster synchronization. When the project state has been recovered, the synchronization will resume.
- TPR-10388: Added additional states in which a project cannot be stopped to increase stability of a running project.
- TPR-10416: SHUTDOWN DEFRAG for H2 databases is now executed after creating a full savepoint. NOTE: Due to a known issue in H2 implementation itself, theSHUTDOWN DEFRAG command does not work properly with encrypted databases (for H2 native encryption, it will still work with the new application side encryption).
- TPR-10475: Database consistency check will not remove the schema name from the tablename if included to execute the check.
- TPR-12467: Case-insenstive matching using syonym replacements now supports modes: 20 and 21.
- TPR-13942: Removed possibility of locked SQLite DB when starting and synchronizing in cluster context.
- TPR-13957: Optimized cluster synchronization for less network traffic and better performance.
- TPR-15160: Savepoints written for RocksDB now use a bulk-loader implementation to avoid inconsistency if the server crashes.
- TPR-15276: Added a new env variable EXCLUDED_ENV_VALUES_FROM_LOG to exclude the values of specified env variables from log.
- TPR-15321: Possible memory leak was removed, which could occur when listing keys using regular expressions („getByKey“ with wildcards).
- TPR-15444: Index import is now written to a new full savepoint.
Security
- TPR-10684: Updated postgres driver to version 42.7.7 to address security finding CVE-2022-21724.
Known Bugs
- TPR-15535: BatchWizard functionality was temporarily removed and will be reworked in the future.
