Releases: hazelcast/hazelcast
v4.2.5
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.2.5 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- 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 documentation. [#19929] - Enabled XXE (XML External Entity Reference) protection for
XMLInputFactory
. The issue was reported through
https://huntr.dev/bounties/d63972a2-b910-480a-a86b-d1f75d24d563/. [#20942] - The probe level for most of the network related statistics has been changed to "DEBUG" to decrease the pressure on Management Center; now they are not sent to Management Center by default. If you want to see these statistics, you need to set the "hazelcast.metrics.debug.enabled" property to "true. [#21275]
Fixes
- Fixed an issue where the statistics like puts and removals were not increasing when these operations are executed through Transactional interface. [#21105]
- Fixed an issue where Hazelcast clients, which have only the IP address of a member to connect (but the member also has a hostname), were not able to connect to the cluster. [#20631]
- 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. [#19676] - Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure were always generated as0
. [#19656] - Fixed an issue where the
map.clear
andcache.clear
methods were evicting all entries in all near caches of all the maps in a cluster, not only the map on which these methods are called. [#19501] - Fixed an issue where map entries were never evicted or expired:
** Let's say you have a map whose entries have both time-to-live and maximum idle durations configured.
** You are periodically reading the entries at times shorter than these durations.
In this case, the entries were not evicted or expired according to their time-to-live or maximum idle duration configurations.
You can set theper-entry-stats-enabled
property totrue
to fix this.
[#19483]
Removed/Deprecated Features
The following system properties have been deprecated:
hazelcast.client.statistics.enabled
hazelcast.client.statistics.period.seconds
v4.1.9
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.1.9 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Enabled XXE (XML External Entity Reference) protection for
XMLInputFactory
.
The related issue was reported through https://huntr.dev/bounties/d63972a2-b910-480a-a86b-d1f75d24d563/. [#20943]
Fixes
- Fixed an issue where a cluster was unresponsive when you perform a health check to see the members are in the safe state;
cluster members were hanging in theREPLICA_NOT_SYNC
state during such health checks. [#21205] - Fixed an issue where the list of members in the cluster was reset to an empty list when member IDs change after a cluster restart:
this was causing startup failures since Hazelcast could not manage the events due to the empty member list after a restart. [#21181] - Fixed an issue where the statistics like puts and removals were not increasing when these operations are executed through Transactional interface. [#21100]
- Fixed an issue where Hazelcast clients, which have only the IP address of a member to connect (but the member also has a hostname), were not able to connect to the cluster. [#20632]
v5.0.3
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast Platform 5.0.3 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Hazelcast command line interface is now available within the Hazelcast distribution package;
previously it needed to be installed separately. [#20812] - Enabled XXE (XML External Entity Reference) protection for
XMLInputFactory
. The related issue was reported
through the https://huntr.dev/bounties/d63972a2-b910-480a-a86b-d1f75d24d563/. [#20941]
Fixes
- Fixed a data race in
SingleProtocolEncoder
; while one method of this interface is called from the input thread,
another one is called from the output thread which was causing the race. [#20993] - Fixed a potential deadlock during partition migrations and inability to make progress while performing graceful shutdown with persistence enabled. [#20884]
- Fixed an issue where the
hz-start.bat
command was not working with Java 8 in the Windows operating system. [#20811] - Fixed an issue where the Operation Profiler of diagnostic utility was showing incorrect
latency distributions. [#20722] - Fixed an issue where a Hazelcast client was failing to connect to a cluster if it does not
know the hostname of a cluster member. [#20630] - Fixed the mapping issue of Hazelcast Map fields in SQL; when the value object contains a
public getter ofjava.util.Map
, theCREATE MAPPING
statement was failing. [#20256]
v5.1.1
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast Platform 5.1.1 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Fixes
v5.1
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast Platform 5.1 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
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 an Hazelcast Enterprise feature
and in BETA state. See https://docs.hazelcast.com/hazelcast/5.1/tiered-storage/overview. - Persistence for Dynamic Configuration: You can now reload the updates made in configuration dynamically (at runtime)
after a cluster restart. See https://docs.hazelcast.com/hazelcast/5.1/configuration/dynamic-config.
Enhancements
SQL Engine
-
Added support of the following statements, operators, and functions:
**CREATE VIEW
**DROP VIEW
**EXPLAIN
**CREATE INDEX
**UNION
**UNION ALL
**EXISTS
**NOT EXISTS
**RIGHT JOIN
** Sub-queries andVALUES()
execution in JOIN arguments
**JSON_ARRAY
,JSON_OBJECT
**SHOW VIEWS
** Added support for stream aggregation (HOP and TUMBLE functions)
[#20413], [#20342], [#20268], [#20042], [#19894], [#19850], [#19810], [#19768], [#19742], [#19729], [#19650], [#19589] -
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. For an overview of JSON in SQL, see https://docs.hazelcast.com/hazelcast/5.1/sql/working-with-json. [#19303]
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 https://docs.hazelcast.com/hazelcast/5.1/maintain-cluster/monitoring#instance-tracking. [#19928] - Introduced the module integrity checker configuration property. Integrity checker is a component
which verifies that the executable contains all the requiredMETA-INF/services
.
https://github.com/hazelcast/hazelcast/pull/19971[#19971]
Logging
- Added support of customizing the logging pattern and specifying configuration files via environment
variables. We also added support forJsonTemplateLayout
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
- 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; https://docs.hazelcast.com/hazelcast/5.1/deploy/updating-license-rest.
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
https://github.com/hazelcast/hazelcast/blob/master/extensions/elasticsearch/elasticsearch-7/ELASTIC-LICENSE-README.md[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
acurl
command, e.g.,curl -f http://hazelcast-host:5701/hazelcast/health/ready
. [#19664] - Hazelcast's memcached implementation was interpreting the number values and parameters
forincr
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
** AddedserializeKeys
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 theauto-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 structu...
v4.0.6
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.0.6 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Added the support of partition grouping mechanism in the Hazelcast discovery plugin for Kubernetes.
You can create partition groups according to the name of the node which is provided by this
plugin and on which the containers/pods run. See theNODE_AWARE
section of https://docs.hazelcast.com/imdg/4.0/clusters/partition-group-configuration#node-aware-partition-grouping. [#17913] - Added protection against XML External Entity attacks (XXE). [#17753]
- Introduced a configuration property to ignore errors during enabling the XXE protection.
This protection works with JAXP 1.5 (Java 7 Update 40) and newer. When an older JAXP
implementation is added to the classpath, e.g., Xerces and Xalan, an exception is thrown.
The newly introduced property, namelyhazelcast.ignoreXxeProtectionFailures
, allows you to ignore those exceptions.
See https://docs.hazelcast.com/imdg/4/system-properties for more information. [#17869] - Updated log4j2 dependency version to 2.17.0 in Hazelcast’s root
pom.xml
. [#20161] - Updated the Hazelcast Kubernetes plugin dependency version to 2.2.2. [#18330]
Fixes
- 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. [#19680] - Fixed an issue where the client state listener was not properly working with
failover clients (in blue-green deployments); it was failing with invalid configuration exception. [#19117] - Fixed an issue where the Java client was not receiving membership
events when a member with Hot Restart Persistence enabled is restarted. [#18269] - The
-c
parameter of thecp-subsystem.sh
script was used for both
cluster name and group variables. This has been fixed by introducing the-g
parameter for groups. [#18149] - Fixed an issue where data was being lost from maps in the event of a member failure in a 3-member cluster with backup count set to
1
.
This was occurring when lite members are promoted to be data members. [#17757] - Fixed an issue where the service URL for Eureka could not be set using the declarative configuration. [#17744]
- When the user code deployment is used and the classes to be deployed have
com.hazelcast
prefix, it was causing failures in other Hazelcast products, e.g., Jet.
This has been fixed by making use of the context classloader when loading such classes. [#17584] - Fixed an issue where the user code deployment feature was failing to work for
inner-classes when not all the members have the user provided class on their classpaths. [#17576] - Fixed an issue where Hazelcast was failing to load the configuration file
(hazelcast.xml
or user-provided files) from the classpath when in development mode for
frameworks such as Quarkus. [#17538]
Removed/Deprecated Features
- The following properties have been deprecated:
**hazelcast.client.statistics.enabled
**hazelcast.client.statistics.period.seconds
[#19235]
v5.1-BETA-1
This document lists the new features, enhancements, fixed issues and, removed
or deprecated features for Hazelcast 5.1-BETA-1 release. The numbers in the square
brackets refer to the issues in Hazelcast's GitHub repository.
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 the Tiered Storage section. - Persistence for Dynamic Configuration: You can now reload the updates made in the dynamic configuration
after a cluster restart. See the Persisting Changes in Dynamic Configuration section.
Enhancements
SQL Engine
- Added support of the following statements, operators, and functions:
**CREATE VIEW
**DROP VIEW
**EXPLAIN
**CREATE INDEX
**IMPOSE_ORDER
to enhance the given input table with watermarks
**UNION
**UNION ALL
**EXISTS
**NOT EXISTS
**TUMBLE(TABLE table, DESCRIPTOR(column), window_size)
to enhance the input relation with thewindow_start
andwindow_end
columns
**RIGHT JOIN
** Sub-queries andVALUES()
execution in JOIN arguments
**JSON_ARRAY
,JSON_OBJECT
[#20268], [#20042], [#19894], [#19850], [#19810], [#19768], [#19742], [#19729], [#19650], [#19589] - 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. [#19303]
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
- 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]
Configuration
- 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 section. [#19928]
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]
Tiered Storage
- Introduced the hybrid log allocator; hybrid log is used for allocating slots for the
records stored in the log and for moving these slots between multiple devices,
such as the main memory, disks, Optane, remote devices, etc. #4430
Other Enhancements
- Updated log4j2 dependency version to 2.16.0 in Hazelcast's root
pom.xml
. [#20184] - 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
acurl
command, e.g.,curl -f http://hazelcast-host:5701/hazelcast/health/ready
. [#19664] - Hazelcast's memcached implementation was interpreting the number values and parameters
forincr
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] - 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 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] - Hazelcast was executing cluster wide operations when you query the state of a member using the health
check endpoint - it was causing to kill all the members in a cluster; 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 theauto-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
- Deprecated the
log(LogEvent logEvent)
method in theILogger
class (com.hazelcast.logging.ILogger
).
== Contributors
We would like to thank the contributors from our open source community
who worked on this release:
v5.0.2
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast Platform 5.0.1 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Hazelcast Platform is a major release which unifies
the former Hazelcast IMDG and Jet products in a
single solution. The changes are summarized below.
For information about upgrading from previous IMDG and Jet
releases, see the Upgrade chapter at https://docs.hazelcast.com/hazelcast/latest.
To learn about the changes in previous IMDG and Jet releases, see https://docs.hazelcast.org/docs/rn/ and
https://jet-start.sh/blog/.
Enhancements
- Updated log4j2 dependency version to 2.17.0 in Hazelcast's root
pom.xml
. [#20234]
v4.0.5
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.0.5 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
For the distributions packages of IMDG, we updated the vulnerable version of log4j2 in Management Center to 2.17.0. No changes were made to the IMDG code.
v4.2.4
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.2.4 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
For the distributions packages of IMDG, we updated the vulnerable version of log4j2 in Management Center to 2.17.0. No changes were made to the IMDG code.