Changelog

2.0.6 (20.09.2023)

Core: When running in the massive concurrent publishing process, it is possible to run into a race condition when some field containers are already processed while being referenced by the edge, throwing an NPE. This has now been fixed.

2.0.5 (05.09.2023)

Core: Getting sorted entities over the REST API caused an Internal Server Error, which has been fixed.

Mesh Rest Client: An error has been fixed, which prevented sorting parameters from being passed to the endpoint.

Clustering: Calling cluster specific REST Endpoints on non-clustered instances could cause internal server errors. The behaviour has been changed so that a "Bad Request" error is returned containing a proper error message.

Java Rest Client: After logging in with the login() method, the login token was never refreshed, which caused it to expire after the configured token expiration time (per default 1 hour), even if the client was used to do requests. This has been changed now, so that the login token in the client will be refreshed on every request to mesh.

GraphQL: Link resolving in graphql queries ignored the language tags in the links. This has been fixed.

GraphQL: The result set of the retrieval of the complex nodes + children structure has been improved to contain all the items.

SQL: Deleting nodes in parallel requests could cause deadlocks in the database. This has been resolved by changing the delete requests and adding some indices.

GraphQL: The metadata request does not crash anymore on the empty (micro)schemas. The new related filter, isEmpty, has been added as well.

2.0.4 (23.08.2023)

Core: The performance of node deletion has been improved.

2.0.3 (11.08.2023)

SQL: The pagination usage for Native Filtering has been fixed for MS SQL databases.

Java filter for Node reference content field has been fixed. Native filtering pagination has been improved. Some other minor stability fixed applied.

SQL: All named entities have been indexed over name field for performance.

SQL: More occurrences of ignoring the storageOptions.sqlParametersLimit, leading to the limit violation error, have been fixed.

Plugins: Logging fixed upon false triggering of a warning of inexisting role/group connection.

Core: All named instances have been presented an own cache.

2.0.2 (26.07.2023)

Core: The performance of schema migrations has been improved by efficiently loading binary fields and list field values.

GraphQL: The performance of graphql queries returning list fields has been improved by efficiently loading those list field values.

Core: A cache for list field values has been added. The size of this cache can be configured with cache.listFieldCacheSize (defaults to 50000).

Core: Uniqueness checks for webroot url field values will now only be done, if those values actually change. This will improve performance of e.g. schema migrations, where the webroot url field values are likely to not change.

Core: An internal API for efficient loading of list field values has been added.

2.0.1 (13.07.2023)

Clustering: Due to an incorrect check, it was possible that migration jobs could complete without actually migrating anything, when run in a clustered environment with disabled coordination mode.

Core: Under race conditions the publishing process might crash on multiple simultaneous node field processing. This has been fixed.

Core: The application of storageOptions.sqlParametersLimit has been improved, targeting some content fetch edge cases.

Core: Some indices have been added to node parent edge entity to speed up fetching of node children.

Core: A consistency check with repair option has been added for branches, that do not contain the project root node.

Clustering: The caching implementation for clustered instances has been changed from distributed caches to local caches (with distributed invalidation) for performance reasons. This also fixes possible locks when uploading binary data.

2.0.0 (29.06.2023)

Adds asynchronous checks for uploaded binaries. When the new property binaryCheckUrl is set for a binary field in a schema, a request for checking the binary will be sent to that URL. The service is expected to send a request to the callback endpoint for that binary to set the check status to either ACCEPTED or DENIED (status for binaries with pending checks is POSTPONED). Requests for binaries with a check status other than ACCEPTED will result in a 404 response.

Database: Support for DB SQL filtering/sorting is added for all the supported databases.

GraphQL: A support of database level filtering/sorting has been added. New sort parameter in added for structured sorting, forcing the usage of DB filtering. New GraphQL parameter nativeFilter is added to the selected entity lookup methods, with options NEVER (old filtering is forced), ALWAYS (DB filtering is forced), IF_POSSIBLE (if the requested filter is supported by a DB, DB filtering is used, otherwise filtering is fallen back to the old filter mechanism). Please note that not all the currently existing filters are supported by the DB.

Core: Support of database level filtering/sorting has been added to the low level Java API.

GraphQL: Support of database level filtering/sorting has been added. New sort parameter in added for structured sorting, forcing the usage of DB filtering. New GraphQL parameter nativeFilter is added to the selected entity lookup methods, with options NEVER (old filtering is forced), ALWAYS (DB filtering is forced), IF_POSSIBLE (if the requested filter is supported by a DB, DB filtering is used, otherwise filtering is fallen back to the old filter mechanism). Please note that not all the currently existing filters are supported by the DB.

GraphQL: A simplified, native filtering friendly version of regex string operation, like, has been added, accepting wildcards % as a zeroable set of characters, e.g. like: "hello%world" requests filtering in the strings, that start with hello, end with world and have zero-to-unlimited number of any characters in between.

GraphQL: Added new filters for field types: list, micronode, (s3)binary. Added a new experimental filter for referencedBy nodes.

1.10.15 (29.09.2023)

GraphQL: An edge case of losing node data in the massive GraphQL response has been fixed.

Core: A crash of an attempt to publish the node field, referencing to the deleted node, during the massive publish process, has been fixed.

1.10.14 (25.09.2023)

Core: An edge case of Too many SQL parameters occurrence has been fixed.

1.10.13 (20.09.2023)

Core: When running in the massive concurrent publishing process, it is possible to run into a race condition when some field containers are already processed while being referenced by the edge, throwing an NPE. This has now been fixed.

1.10.12 (04.09.2023)

SQL: Deleting nodes in parallel requests could cause deadlocks in the database. This has been resolved by changing the delete requests and adding some indices.

GraphQL: The result set of the retrieval of the complex nodes + children structure has been improved to contain all the items.

Clustering: Calling cluster specific REST Endpoints on non-clustered instances could cause internal server errors. The behaviour has been changed so that a "Bad Request" error is returned containing a proper error message.

Java Rest Client: After logging in with the login() method, the login token was never refreshed, which caused it to expire after the configured token expiration time (per default 1 hour), even if the client was used to do requests. This has been changed now, so that the login token in the client will be refreshed on every request to mesh.

GraphQL: The metadata request does not crash anymore on the empty (micro)schemas. The new related filter, isEmpty, has been added as well.

GraphQL: Link resolving in graphql queries ignored the language tags in the links. This has been fixed.

1.10.11 (23.08.2023)

Core: The performance of node deletion has been improved.

1.10.10 (10.08.2023)

Core: All named instances have been presented an own cache.

SQL: All named entities have been indexed over name field for performance.

SQL: More occurrences of ignoring the storageOptions.sqlParametersLimit, leading to the limit violation error, have been fixed.

icon check[] Plugins: Logging fixed upon false triggering of a warning of inexisting role/group connection.

1.10.9 (26.07.2023)

Core: Uniqueness checks for webroot url field values will now only be done, if those values actually change. This will improve performance of e.g. schema migrations, where the webroot url field values are likely to not change.

Core: An internal API for efficient loading of list field values has been added.

Core: The performance of schema migrations has been improved by efficiently loading binary fields and list field values.

GraphQL: The performance of graphql queries returning list fields has been improved by efficiently loading those list field values.

Core: A cache for list field values has been added. The size of this cache can be configured with cache.listFieldCacheSize (defaults to 50000).

1.10.8 (12.07.2023)

Clustering: The caching implementation for clustered instances has been changed from distributed caches to local caches (with distributed invalidation) for performance reasons. This also fixes possible locks when uploading binary data.

Clustering: Due to an incorrect check, it was possible that migration jobs could complete without actually migrating anything, when run in a clustered environment with disabled coordination mode.

Core: A consistency check with repair option has been added for branches, that do not contain the project root node.

Core: The indices have been added to node parent edge entity to speed up the node children fetch.

Core: The application of storageOptions.sqlParametersLimit has been improved, targeting some content fetch edge cases.

Core: Under race conditions the publishing process might crash on multiple simultaneous node field processing. This has been fixed.

1.10.7 (28.06.2023)

Core: The internal check for uniqueness of values in webroot fields has been improved.

SQL: Some indices have been added.

MSSQL: When using MSSQL, the datatypes of several columns have been changed from VARCHAR to NVARCHAR.

Core: Occurrences of ignoring the storageOptions.sqlParametersLimit, leading to the limit violation error, have been fixed.

1.10.6 (13.06.2023)

Core: On a complex constellation of permissions over several roles/groups false permission decisions have been made over the user that shares the roles. This has been fixed.

1.10.5 (30.05.2023)

Core: The requests to create, update or upsert a node have been extended to allow immediate publishing of the modified/created node and to set role permissions on the node.

Core: The request to upload binary data into a binary field has been extended to allow immediate publishing of the modified/created node.

1.10.4 (22.05.2023)

SQL: A more sophisticated control over SQL parameter limit has been introduced, including the new options parameter storageOptions.sqlParametersLimit, to improve stability of demanding content queries.

Core: Fixes the hibernate implementation for BinaryDao.findFields() where the typed query returned an instance of the wrong class.

GraphQL: Performance of queries that return large amounts of nodes with link resolving in fields or getting node fields has been improved.

SQL: Indices introduced for linked content entries: lists, (micro)node references. This improves performance on content fetch.

1.10.3 (21.04.2023)

Core: The name of a Mesh user is now forced to be unique on a database level, to prevent creating users with an already existing username. The duplicated username detection mechanism has also been improved.

Duplicate usernames must be removed before the update, otherwise Mesh will fail to start!

Monitoring: Failing calls to any /health/…​ endpoints will no longer log the whole stacktrace, since this does not contain useful information.

Core: Migration jobs have been made more robust: Migration jobs will now be aborted, in cases were the storage is no longer ready to be written to (e.g. write quorum is not reached, or the storage is read-only due to insufficient disk space available). A periodic check (interval can be configured via setting migrationTriggerInterval) will continue processing of aborted jobs.

1.10.2 (09.03.2023)

Docker: Additional command line tools have been added to the Mesh SQL Docker image: rsync, curl, iputils, busybox-extras, tar, nano.

1.10.1 (23.02.2023)

Search: The search endpoints (like e.g. /api/v1/search/nodes) were incorrectly treated as not "read-only", which caused them to fail during a cluster topology change, if the setting cluster.topologyChangeReadOnly was set to true. This has been changed now, the real search endpoints are read-only now. It is important to note, that this does still not apply to the index maintenance endpoints /api/v1/search/sync, /api/v1/search/clear and /api/v1/search/status.

1.10.0 (27.01.2023)

Rest: The new endpoints /api/v2/…​/rolePermissions allow getting, granting and revoking permissions on entities for multiple roles in a single request.

Core: The core Vert.x library was updated to version 4.3.2.

GraphQL: In rare cases, GraphQL statements could "hang" forever, which caused the corresponding worker thread to be blocked forever. This has been fixed now by introducing a configurable timeout.

GraphQL: The graphql library has been updated to version 20.0.

Core: The node migration process has been improved to reduce resources footprint on large workloads, by chunking the data. An additional configuration item content.batchSize has been added.

Core: Corner case of updating the webroot info might throw a false conflict exception, when the segment field value is reset for a schema. This has been fixed.

1.9.14 (22.05.2023)

SQL: A more sophisticated control over SQL parameter limit has been introduced, including the new options parameter storageOptions.sqlParametersLimit, to improve stability of demanding content queries.

Core: Fixes the hibernate implementation for BinaryDao.findFields() where the typed query returned an instance of the wrong class.

GraphQL: Performance of queries that return large amounts of nodes with link resolving in fields or getting node fields has been improved.

SQL: Indices introduced for linked content entries: lists, (micro)node references. This improves performance on content fetch.

1.9.13 (20.04.2023)

Core: The name of a Mesh user is now forced to be unique on a database level, to prevent creating users with an already existing username. The duplicated username detection mechanism has also been improved.

Duplicate usernames must be removed before the update, otherwise Mesh will fail to start!

Monitoring: Failing calls to any /health/…​ endpoints will no longer log the whole stacktrace, since this does not contain useful information.

Core: Migration jobs have been made more robust: Migration jobs will now be aborted, in cases were the storage is no longer ready to be written to (e.g. write quorum is not reached, or the storage is read-only due to insufficient disk space available). A periodic check (interval can be configured via setting migrationTriggerInterval) will continue processing of aborted jobs.

1.9.12 (09.03.2023)

Docker: Additional command line tools have been added to the Mesh SQL Docker image: rsync, curl, iputils, busybox-extras, tar, nano.

1.9.11 (23.02.2023)

Search: The search endpoints (like e.g. /api/v1/search/nodes) were incorrectly treated as not "read-only", which caused them to fail during a cluster topology change, if the setting cluster.topologyChangeReadOnly was set to true. This has been changed now, the real search endpoints are read-only now. It is important to note, that this does still not apply to the index maintenance endpoints /api/v1/search/sync, /api/v1/search/clear and /api/v1/search/status.

1.9.10 (27.01.2023)

GraphQL: In rare cases, GraphQL statements could "hang" forever, which caused the corresponding worker thread to be blocked forever. This has been fixed now by introducing a configurable timeout.

GraphQL: The graphql library has been updated to version 20.0.

Core: The node migration process has been improved to reduce resources footprint on large workloads, by chunking the data. An additional configuration item content.batchSize has been added.

Core: Corner case of updating the webroot info might throw a false conflict exception, when the segment field value is reset for a schema. This has been fixed.

1.9.9 (15.12.2022)

Clustering: Liveness check now marks an instance as dead, if the event bus did not get its own cluster instance ping within the timeout period, even if the non-cluster ping comes in time.

Search: When using language specific index settings, nodes were incorrectly indexed in the language unspecific index when they were moved or tagged causing the node to be present in both the language specific and language unspecific index. This has been fixed.

1.9.8 (01.12.2022)

Core: Having a binary non-segment field update might break the uniqueness of the segment field value, allowing creation of multiple nodes with the same segment/webroot value. This has now been fixed.

1.9.7 (22.11.2022)

Logging: Remove superfluous error messages for HTTP status 4xx errors. These are logged by the logger handler as warnings.

1.9.6 (18.11.2022)

Docker-Image: The base images have been updated to a newer JDK minor version (11.0.16).

The Gentics Mesh dependency was updated to 1.9.6.

1.9.5 (25.10.2022)

The Gentics Mesh dependency was updated to 1.9.5.

1.9.4 (07.10.2022)

Core: When updating permissions of a role for a given object, only the update permissions for the role were checked. A new check has been added to verify that the user requesting the permissions change has read permission on the object.

Core: The value of the jdbc connection password won’t be logged at startup anymore.

The Gentics Mesh dependency was updated to 1.9.4.

1.9.3 (23.09.2022)

Added healthcheck to the docker image.

The Gentics Mesh dependency was updated to 1.9.3.

1.9.2 (08.09.2022)

When parsing of metadata was activated, uploading of binaries failed, if they contained entries in the metadata with names that were only different in case. This has been fixed.

Creation of content tables failed for Oracle due to an incorrect data type, which has been fixed.

Recursively deleting nodes is now more performant.

The Gentics Mesh dependency was updated to 1.9.2.

1.9.1 (19.08.2022)

The Gentics Mesh dependency was updated to 1.9.1.

1.9.0 (22.07.2022)

This version is based on Gentics Mesh 1.9.0.

It is now possible to use an external SQL database for data storage as alternative to the embedded OrientDB by using the commercially available Gentics Mesh SQL.