5.1 Release Notes
New Features
-
Tiered Storage (BETA): Introduced the Tiered Storage feature which is an extension to Hazelcast Map assigning data to various types of storage media based on access patterns. It is a Hazelcast Enterprise feature and in BETA state. See Tiered Storage.
-
Persistence for Dynamic Configuration: You can now reload the updates made in configuration dynamically (at runtime) after a cluster restart. See Configuring Dynamic Configuration.
Enhancements
SQL Engine
-
Added support of the following statements, operators, and functions:
-
UNION
-
UNION ALL
-
EXISTS
-
NOT EXISTS
-
RIGHT JOIN
-
Sub-queries and
VALUES()
execution in JOIN arguments -
JSON_ARRAY
,JSON_OBJECT
-
SHOW VIEWS
-
Added support for stream aggregation (HOP and TUMBLE functions)
-
Added
JSON
as a supported type for the SQL engine with functions likeJSON_QUERY
andJSON_VALUE
; they return a JSON object/array and a primitive value, respectively. #19303For an overview of JSON in SQL, see Working with JSON Data in SQL.
Distribution
-
Hazelcast command line interface is now available within the Hazelcast distribution package; previously it needed to be installed separately. #20062
Cloud Discovery Plugins
-
Added
EndpointSlices
support for the Kubernetes discovery plugin; now theEndpointSlices
API usage is default, and the oldEndpoints
API is not used as a fallback ifEndpointSlices
are not available. #19643
Serialization
-
Added zero-configuration support for the Java records in compact serialization. #20724
-
Updated the names of methods and fields in the Compact Serialization API to make them non-Java centric. #20257
-
Added the declarative configuration elements for Compact Serialization. #20016
-
Introduced the
FieldKind
class to get the field types for portable and compact serializations; previously it wasFieldType
. #19517
Data Structures
-
Added the support of
include-value
parameter for MultiMap item listeners; you can set it totrue
if you want the item event to contain the item values. #18815
Configuration
-
Added support of the
jar
scheme in the JCache URI configuration. Without this support, when, for example,hazelcast-client.zip
is provided in Spring boot application properties file and packaged as a boot JAR, then the Hazelcast caching provider was failing to load the file. #20543 -
Introduced a system property for allowing you to audit that all the Hazelcast instances running in your environment have the instance tracking file name set correctly in the configuration. See the note in Instance Tracking. #19928
-
Introduced the module integrity checker configuration property. Integrity checker is a component which verifies that the executable contains all the required
META-INF/services
. #19971
Logging
-
Added support of customizing the logging pattern and specifying configuration files via environment variables. We also added support for
JsonTemplateLayout
for which the JSON template can be customized. #20528
Management Center
-
Added the
data-access-enabled
property for the Management Center configuration on the member side. This allows you to enable or disable the access of Management Center to the data stored by the data structures in the cluster. Management Center can’t access the data if at least one member has the data access disabled. Its default value istrue
(enabled). #19991 -
Added the
console-enabled
property for the Management Center configuration on the member side. This allows you to disable the console feature on Management Center as it supports lots of operations and it’s not subject to the regular access restrictions; it can read from/write to any data structure even if Management Center is restricted to access those via client permissions. #19718
Licensing
-
Hazelcast now shows the possible solutions in the terminal, if the license key is not set while starting a Hazelcast Enterprise cluster. #4614
-
Added the ability to persist the renewal of a Hazelcast license key when this change is made without shutting down the cluster. Renewing a license key has already been possible using the REST API. This enhancement makes such license renewals to be persisted so that when a member or the cluster is restarted, you will not need to re-update the license. #20446
Other Enhancements
-
Added
safe-serialization
property to protectMulticastDiscoveryStrategy
against Java deserialization attacks. #20728 -
Upgraded the Elasticsearch client in Hazelcast’s
elasticsearch-7
Jet engine connector. Since the client license was changed from Apache 2.0 to Elastic 2.0 in Elasticsearch 7.11, we also added the new license to explain the changes. #20427 -
Updated log4j2 dependency version to 2.17.1 in Hazelcast’s root
pom.xml
. #20184 -
With the introduction of Tiered Storage feature, we’ve improved the partition migration system to support chunked partition migrations. By this way, the data is sent as a stream of chunks while the partitions are migrated upon member failures or new member additions. Previously, at most 250 MB was recommended as the maximum size for a partition; however, if a partition is backed by Tiered Storage, this size may go beyond this limit and may cause out of memory errors during the migrations of partitions having large data. Chunked partition migrations eliminate these errors. #20005
-
The
hz-start
script now accepts absolute paths when providing the Hazelcast configuration file’s location. #19908 -
JSON strings can now work with paging predicate queries. #19880
-
You can now check if Hazelcast is started properly in the Docker environment simply by using a
curl
command, e.g.,curl -f http://hazelcast-host:5701/hazelcast/health/ready
. #19664 -
Hazelcast’s memcached implementation was interpreting the number values and parameters for
incr
anddecr
wrongly (numbers were being converted into byte arrays instead of decimals). This has been fixed by making these commands' implementations strictly follow the memcached protocol specification. #19653 -
Since the name of Hot Restart Persistence feature changed to Persistence, the prefix for its metrics also has been changed from "hot-restart" to "persistence". #19543
-
Aligned the Near Cache and query cache behaviors when the in-memory format is
OBJECT
:-
Improved query cache methods to eliminate extra deserialization
-
Added
serializeKeys
flag to query cache configuration to align the behavior with Near Cache. #20265
-
-
Improved the speed of connection by a member when it joins the cluster, by removing the unnecessary sleep statements in the code. #18932
Fixes
-
Fixed the
NullPointerException
issue when running theSELECT
statement if there is a mapping for a map with partitioned indexes. #20601 -
Fixed an issue where a single SQL query having a mix of JSON string and
HazelcastJsonValue
for theINSERT
statement was not working. #20303 -
Fixed various issues when using hostnames in Hazelcast’s network and WAN Replication configurations. With this fix, you can seamlessly use hostnames wherever the IP addresses of the members are used. #20014, #15722
-
Fixed an issue where the
hazelcast.yaml
file was ignored when it is the only configuration file present in the Hazelcast setup; during startup it was looking only for thehazelcast.xml
file and producing an error message saying that the configuration does not exist even though there is theyaml
configuration file. Now it automatically useshazelcast.yaml
whenhazelcast.xml
is not available. #20003 -
Fixed an issue where the Hazelcast command line interfaces commands were outputting incorrect command names when you want to see their usages using the
--help
argument. For example, the commandhz-start --help
was outputting the following:Usage: hazelcast-start [-d] -d, --daemon Starts Hazelcast in daemon mode
instead of the following:
Usage: hz-start [-d] -d, --daemon Starts Hazelcast in daemon mode
-
Fixed an issue where querying a map with
SELECT
(SQL) was failing when the data has compact serialization and the cluster has more than one member (with the class not being on the classpath). #19952 -
In Kubernetes environment, when the health check endpoint was taking too long to respond, the Hazelcast members were considered to be unresponsive and terminated; this issue has been fixed. #19829
-
Fixed an issue where the command
hz-stop --help
was not displaying the help but executing thehz-stop
command. #19749 -
When you both enable the persistence and automatic removal of stale data in the configuration, member startup failures were occurring. This has been fixed by adding the
auto-remove-stale-data
element to the configuration schema. #19683 -
Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure were always generated as0
. #19642 -
Fixed an issue where some Spring XML configuration elements having values as property placeholders were not working when Hazelcast is upgraded to a newer version. #19629
-
Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure were always generated as0
. #19555 -
Fixed an issue where the serialization was failing when the object has enum fields, or it is an enum itself. #19314
Removed/Deprecated Features
-
Removed the
elasticsearch-5
module from Hazelcast distributions since the version 5.0 Elasticsearch has passed its end of life date; see its release notes. #20458 -
Deprecated the
log(LogEvent logEvent)
method in theILogger
class (com.hazelcast.logging.ILogger
).