Releases: hz-devops-test/hazelcast
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. [hazelcast#17913] - Added protection against XML External Entity attacks (XXE). [hazelcast#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. [hazelcast#17869] - Updated log4j2 dependency version to 2.17.0 in Hazelcast’s root
pom.xml
. [hazelcast#20161] - Updated the Hazelcast Kubernetes plugin dependency version to 2.2.2. [hazelcast#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. [hazelcast#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. [hazelcast#19117] - Fixed an issue where the Java client was not receiving membership
events when a member with Hot Restart Persistence enabled is restarted. [hazelcast#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. [hazelcast#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. [hazelcast#17757] - Fixed an issue where the service URL for Eureka could not be set using the declarative configuration. [hazelcast#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. [hazelcast#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. [hazelcast#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. [hazelcast#17538]
Removed/Deprecated Features
- The following properties have been deprecated:
**hazelcast.client.statistics.enabled
**hazelcast.client.statistics.period.seconds
[hazelcast#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
[hazelcast#20268], [hazelcast#20042], [hazelcast#19894], [hazelcast#19850], [hazelcast#19810], [hazelcast#19768], [hazelcast#19742], [hazelcast#19729], [hazelcast#19650], [hazelcast#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. [hazelcast#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. [hazelcast#19643]
Serialization
- Updated the names of methods and fields in the Compact Serialization API to make them
non-Java centric. [hazelcast#20257] - Added the declarative configuration elements for Compact Serialization. [hazelcast#20016]
- Introduced the
FieldKind
class to get the field types for portable and compact serializations;
previously it wasFieldType
. [hazelcast#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. [hazelcast#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). [hazelcast#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. [hazelcast#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. hazelcast#4430
Other Enhancements
- Updated log4j2 dependency version to 2.16.0 in Hazelcast's root
pom.xml
. [hazelcast#20184] - The
hz-start
script now accepts absolute paths when providing the Hazelcast configuration file's location. [hazelcast#19908] - JSON strings can now work with paging predicate queries. [hazelcast#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
. [hazelcast#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. [hazelcast#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". [hazelcast#19543] - Improved the speed of connection by a member when it joins the cluster, by removing the unnecessary
sleep statements in the code. [hazelcast#18932]
Fixes
- Fixed an issue where a single SQL query having a mix of JSON string and
HazelcastJsonValue
for theINSERT
statement
was not working. [hazelcast#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. [hazelcast#20014], [hazelcast#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. [hazelcast#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). [hazelcast#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. [hazelcast#19829] - Fixed an issue where the command
hz-stop --help
was not displaying the help but executing
thehz-stop
command. [hazelcast#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. [hazelcast#19683] - Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure
were always generated as0
. [hazelcast#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. [hazelcast#19629] - Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure
were always generated as0
. [hazelcast#19555] - Fixed an issue where the serialization was failing when the object has enum fields, or it is an enum itself. [hazelcast#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.1
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.15.0 in Hazelcast's root
pom.xml
. [hazelcast#20153] - Updated Avro dependency version to 1.11.0 and AWS SDK to 1.12.120 in Hazelcast's root
pom.xml
. [hazelcast#20008], [hazelcast#20007] - 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/latest/maintain-cluster/monitoring#instance-tracking. [hazelcast#19930]
Fixes
-
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. [hazelcast#20004] -
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 ([hazelcast#20002]). 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
- 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. [hazelcast#19905] - Fixed an issue where there were mismatching map configurations when phone home is enabled. [hazelcast#19900]
- Fixed an issue where the command
hz-stop --help
was not displaying the help but executing
thehz-stop
command. [hazelcast#19726] - 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. [hazelcast#19677] - Fixed an issue where the
totalPublishes
statistics for the Reliable Topic data structure
were always generated as0
. [hazelcast#19651] - 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. [hazelcast#19373]
Contributors
We would like to thank the contributors from our open source community
who worked on this release:
- Chelsea31: https://github.com/Chelsea31
v4.2.3
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.2.3 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Updated the version of log4j2 dependency in the pom.xml to 2.15.0. hazelcast#20163
v4.0.4
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.0.3 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Added the declarative configuration support for the client load balancer. [hazelcast#17482]
- Added public classes to expose the member and client side caching
provider implementations without referring to internal classes. [hazelcast#17421] - Updated the Hazelcast Kubernetes dependency to 2.0.2. [hazelcast#17255]
- Added the ability to set the expiration times for entries when
using entry processors. [hazelcast#17175]
Fixes
- Fixed
NullPointerException
when using IMap withHASH
indexes. [hazelcast#17527] - Fixed the rendering of diagnostics in case there is an exception inside a diagnostics plugin. [hazelcast#17502]
- Increased the dependency versions for Jackson and SnakeYAML to mitigate the security vulnerabilities. [hazelcast#17510]
- Fixed the propagation of exception from a function registered on a not-yet completed
CompletionStage
. [hazelcast#17520] - Fixed a race condition when overwriting
CacheManager
during JCache creation. [hazelcast#17292] - Fixed the
NATIVE
memory leak when usingIMap.executeOnKeys()
from an IMDG client. [hazelcast#17274] - Resolved a performance issue when using
PagingPredicate
in combination with JDK8. [hazelcast#17211] - Fixed the client behavior when cluster encounters a split-brain.
In some cases, the client was unable to reconnect to the cluster, even after the cluster is healed. [hazelcast#17148] - Improved disposing of off-heap memory when metrics are being used. [hazelcast#17145]
v4.1.7
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.1.7 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Enhancements
- Updated the version of log4j2 dependency in the pom.xml to 2.15.0. hazelcast#20162
v4.1.6
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 3.12 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
==== 3.12 ====
- Breaking Changes
- Support for JDK 6 and 7 has been dropped. The minimum Java version that Hazelcast supports now is Java 8. See the Supports JVMs section.
- New Features
Hazelcast IMDG Enterprise New Features:
- Blue-Green and Disaster Recovery for Java Clients: Introduced the support for Hazelcast Java clients to switch between alternative clusters. See the Blue Green Deployment and Disaster Recovery section.
Hazelcast IMDG Open Source New Features:
- CP Subsystem: Implementing the https://raft.github.io/[Raft consensus algorithm], Hazelcast introduces its CP subsystem which runs within a Hazelcast cluster and offers linearizable implementations of Hazelcast's concurrency APIs. See the CP Subsystem chapter.
- Querying JSON Strings: You can now query JSON strings stored inside your Hazelcast clusters. See the Querying JSON Strings section.
- Pipelining: Introduced pipelining mechanism using which you can send multiple requests in parallel to Hazelcast members or clients, and read the responses in a single step. See the Pipelining section.
- Support for Multiple Endpoints When Configuring Member���s Networking: Added the ability to configure the Hazelcast members with separate server sockets for different protocols. See the Advanced Network Configuration section.
- YAML Configuration Support: Added the support for configuring Hazelcast in YAML. See the Configuring Declaratively with YAML section.
- Enhancements
Hazelcast IMDG Enterprise Enhancements:
- Sharing Hot Restart
base-dir
among Multiple Members: The base directory for the Hot Restart feature (base-dir
) is now used as a shared directory between multiple members, and each member uses a unique sub-directory
inside this base directory. This allows using the same configuration on all the members. Previously, each member had to use a separate directory which complicated the deployments on cloud-like environments. During the restart, a member tries to lock an already existing Hot Restart directory inside the base directory. If it cannot acquire any, then it creates a fresh new directory. See the Configuring Hot Restart section. - Lower Latencies and Higher Throughput in WAN Replication: Improved the design of the WAN replication mechanism to allow configuring it for lower latencies and higher throughput. See the Tuning WAN Replication For Lower Latencies and Higher Throughput section.
- Add/Remove WAN Publishers in a Running Cluster: Introduced the ability to dynamically add or remove WAN publishers (target clusters). See the Dynamically Adding WAN Publishers section.
- Automatic Removal of Stale Hot Restart Data: Introduced an option that allows the stale Hot Restart data to be removed automatically. See the description of the
auto-remove-stale-data
configuration element in the Configuring Hot Restart section. - Client Permission Handling When a New Member Joins: Introduced a declarative configuration attribute
on-join-operation
for the client permission in the Security configuration (its programmatic configuration equivalent is thesetOnJoinPermissionOperation()
method). This attribute allows to choose whether a new member joining to a cluster will apply the client permissions stored in its own configuration, or will use the ones defined in the cluster. See the Handling Permissions When a New Member Joins section. - Automatic Cluster Version Change after a Rolling Upgrade: Introduced the ability to automatically upgrade the cluster version after a rolling upgrade. See the Upgrading Cluster Version section.
- FIPS 140-2 Validation: Hazelcast now can be configured to use a FIPS 140-2 validated module. See the FIPS 140-2 section.
Hazelcast IMDG Open Source Enhancements:
- Client Instance Names and Labels: You can now retrieve the names of client instances on the member side. Moreover, client labels have been introduced so that you can group your clients and/or perform special operations for specific clients. See the Defining Client Labels section.
- Composite Indexes: Introduced the ability to recognize the queries that use all the indexed properties and treat them as a composite, e.g.,
foo = 1 and bar = 2 and foobar = 3
. See the Composite Indexes section. - REST Endpoint Groups: With this enhancement you can enable or disable the REST API completely, Memcache protocol and REST endpoint groups. See the Using the REST Endpoint Groups section.
The following are the other improvements performed to solve the enhancement issues opened by the Hazelcast customers/team.
- Improved the YAML configuration so that you can configure multiple WAN member sockets. [hazelcast#14800]
- Members now fail fast when the
max-idle-seconds
element for the entries in a map is set to 1 second. See the note in the Configuring Map Eviction section for this element. [hazelcast#14697] - Removed group password from the Hazelcast���s default XML configuration file. Also improved the non-empty password
INFO
message. It's now only logged if security is disabled, password is not empty and password is not the Hazelcast default one. [hazelcast#14603] - Improved the code comments for the
HazelcastInstance
interface. [hazelcast#14439] - Improved the Javadoc of
HazelcastClient
so that the code comments now use "unisocket client" instead of "dumb client". [hazelcast#14213] - Added the ability to perform an LDAP
subtree
search for groups in Hazelcast Management Center���s LDAP authenticator. [hazelcast#14118] - Added the ability to set the
EvictionConfig.comparatorClassName()
in the client���s declarative configuration, too. [hazelcast#14093] - Introduced the
/ready
endpoint to the REST API to allow checking a member if it is ready to be used after it joins to the cluster. [hazelcast#14089] - Improved the syncing of XSD files. [hazelcast#14070]
- The
IMap.removeAll()
method now supportsPartitionPredicate
. [hazelcast#12238] - Improved the diagnostics tool so that it automatically creates the configured directory for the diagnostic outputs. [hazelcast#11946]
- Fixes
- Fixed an issue where the state of member list on the clients were broken after a hot restart in the cluster. [hazelcast#14839]
- Fixed an issue where the outbound pipeline was not waking up properly after merging the write-through changes. [hazelcast#14830]
- Fixed an issue where a Hazelcast Java client was not able to connect to the cluster (which has the
advanced-network
configuration) after a split-brain syndrome is healed. [hazelcast#14768] - Fixed an issue where the
like
��andilike
��predicates didn���t catch any entity with the��text
��field containing the '\n' character. [hazelcast#14751] - Fixed an issue where
NullPointerException
s was thrown recursively when a client is connected to an unreachable member during a split-brain. [hazelcast#14722] - Fixed an issue where Hazelcast running on RHEL (OpenJDK8) shows
unknown gc
in the logs, instead ofmajor gc
andminor gc
. [hazelcast#14701] - Fixed an issue where the IP client selector was not working for the local clients. [hazelcast#14654]
- Fixed the wording of a misleading error in the first attempt to connect to a wrongly configured cluster. The error message has been changed to ���Unable to connect to any cluster���. https://github.com/hazelcast/hazelcast/issues/14574[[#14574]]
- Fixed an issue where a connection configured using
AdvancedNetworkConfig
was not denied correctly for some inappropriate endpoints. [hazelcast#14532] - Fixed the REST service which was not working when the REST endpoint is configured for
AdvancedNetworkConfig
. [hazelcast#14516] - Fixed an issue where the
setAsync()
method was throwingNullPointerException
. [hazelcast#14445] - Fixed an issue where the collection attributes indexed with
[any]
were causing incorrect SQL query results, if the first data inserted to the map has no value for the attribute or the collection is empty. [hazelcast#14358] - Fixed an issue where
mapEvictionPolicy
��couldn���t be specified in the JSON configuration file. [hazelcast#14092] - Fixed an issue where the rolling upgrade was failing when all members change their IP addresses. [hazelcast#14088]
- Fixed an issue where the resources were not wholly cleared when destroying
DurableExecutorService
causing some resources to be left in the heap. [hazelcast#14087] - Fixed an issue where the REST API was not handling the HTTP requests without headers correctly: when a client sends an HTTP request without headers to the Hazelcast REST API, the
HttpCommand
class was wrongly expecting an additional new line. [hazelcast#14353] - Fixed an issue where
QueryCache
was not returning the copies of the found objects. [hazelcast#14333] - Fixed an issue where the MultiMap's
RemoveOperation
was iterating through the backing collection, which caused performance degradation (when using theSET
collection type). [hazelcast#14145] - Fixed an issue where the user code deployment feature was throwing
NullPointerException
while loading multiple nested classes and using entry processors. [hazelcast#14105] - Fixed an issue where the newly joining members could not form a cluster when the existing members are killed. [hazelcast#14051]
- Fixed an issue where the
IMap.get()
method was not resetting the idle time counter whenread-backup-data
is enabled. [hazelcast#14026] - Fixed an issue where the
addIndex()
method was performing a full copy of entries when a new member joins the cluster, which is not needed. [hazelcast#13964] - Fixed an issue where the initialization failure of
discoveryService
was causing some threads to remain open and the JVM could not be terminated because of these threads. [hazelcast#13821] - Fixed the discrepancy between the XSD on the website and the one in the download package. [hazelcast#13011]
PagingPredicate
with comparator was failing to serialize when sending from the client or member when the cluster size is more than 1. This has been fixed by making the `PagingPredica...
v5.0
This document lists the new features, enhancements, fixed issues and, removed
or deprecated features for Hazelcast 5.0 release. The numbers in the square
brackets refer to the issues in Hazelcast's GitHub repository.
Hazelcast 5.0 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 in https://docs.hazelcast.com/hazelcast/5.0/.
To learn about the changes in previous IMDG and Jet releases, see https://docs.hazelcast.org/docs/rn/ and
https://jet-start.sh/blog/.
New Features
-
Jet Streaming Engine: Hazelcast now incorporates the streaming engine, which was formerly and separately known as Hazelcast Jet.
-
SQL Engine: We have added the support of following operators to our SQL engine:
** INSERT
** UPDATE
** DELETE
** ORDER BY
** GROUP BY
** JOIN
** CASE
See https://docs.hazelcast.com/hazelcast/5.0/sql/sql-overview.html.
Related issue and PRs: [hazelcast#18940], [hazelcast#18910], [hazelcast#18898], [hazelcast#18734],
[hazelcast#18663], [hazelcast#18569], [hazelcast#18479], [hazelcast#18483], [hazelcast#18422], [hazelcast#18067] -
Persistence: This allows individual members and whole clusters to recover
faster by persisting map entries and JCache data on disk. Members can use persisted data to recover during restarts.
See https://docs.hazelcast.com/hazelcast/5.0/storage/persistence.html. -
Compact Serialization Format (Preview Feature): We have introduced a new serialization format
(CompactSerializer
), which is in its beta stage currently. This format requires much
less storage space, provides better latency and throughput, and supports more extensive type sets:
** It supports schema evolution of a class and does not require any version to be specified explicitly.
** On common use cases where the field types of an object are natively supported via this compact format,
Java DTO classes are automatically serialized without requiring a serializer (CompactSerializer
) to be implemented.
** Your classes do not need to implement an interface likePortable
. Once you enable the compact serialization,
the classes not matching to any other serialization methods are serialized in this new format.See the https://docs.hazelcast.com/hazelcast/5.0/serialization/compact-serialization.html.
Related PR: [hazelcast#19017] -
Security for Jet Engine Jobs: The Jet engine allows you to upload custom code as well as access data
outside of Hazelcast such as files on the device that's running a member. You can secure your Hazelcast member
against malicious uses of the Jet API. See https://docs.hazelcast.com/hazelcast/5.0/pipelines/job-security.html.
Breaking Changes
API Changes
-
For Google Cloud Storage (GCS) file sources, the
SecuredFunction
interface now returns a list of permissions instead of a single
permission. Previously, Hazelcast was returning only the permission for the bucket to be read, and this was causing a source to be
possibly exploited for gaining information whether some file exists in the system. Now, Hazelcast also returns a permission
for the keyfile that is required to read a bucket on GCS. [hazelcast#19407] -
The "Hot Restart Persistence" feature name has been changed to "Persistence"; with this change
we've performed various cleanups in its API:
** TheHotRestartService
has been deprecated; see <<removed-deprecated-features, Deprecated Features>>.
** Renamedcom.hazelcast.hotrestart.BackupTask
ascom.hazelcast.persistence.BackupTask
.
** Renamedcom.hazelcast.hotrestart.BackupTaskState
ascom.hazelcast.persistence.BackupTaskState
.
** Added theisBackupEnabled()
toPersistenceService
/HotRestartService
that does
not have a default implementation.
[hazelcast#19404] -
After the unification of cloud discovery plugins (see the Cloud Discovery Plugins section below),
the exception class for the failure in generatingSSLSocketFactory
is changed from
KubernetesClientException
toRestClientException
for the Kubernetes plugin. [hazelcast#19132] -
Changed the type of
YEAR
field in the SQL client protocol fromshort
toint
. [hazelcast#18984] -
Since the
HOST
andRACK
metadata were deprecated in the previous Hazelcast
release, these information are removed from theZONE_AWARE
partition grouping
configuration. [hazelcast#18780] -
Since DAG printing was not reflecting the real queue size, the
DAG.toDotString(int defaultParallelism)
method
signature is changed asDAG.toDotString(int defaultLocalParallelism, int defaultQueueSize)
. You, now, need to supply the
queue size that will be shown if it is not overriden on the edge. [hazelcast#18475]
Configuration Changes
- Removed the following properties that were used in the former Jet product, since it
is now part of Hazelcast 5.0:
**jet.home
**jet.imdg.version.mismatch.check.disabled
[hazelcast#18999]
Enhancements
Distribution
- Hazelcast distribution is now available in two versions: full and slim.
While the full one includes Hazelcast and all of its modules along with SQL,
Jet engine extensions and Management Center, the slim one only includes the Hazelcast
runtime, default configurations and scripts.
See https://docs.hazelcast.com/hazelcast/5.0/migrate/upgrading-from-imdg-4.html#changes-in-distribution-packaging
for details. [hazelcast#18990], [hazelcast#18989] - Consolidated the scripts delivered with the former IMDG and Jet distributions.
See https://docs.hazelcast.com/hazelcast/5.0/migrate/upgrading-from-imdg-4.html#changes-in-distribution-packaging. [hazelcast#18999] - The former
hazelcast-sql
,hazelcast-sql-core
andhazelcast-jet-sql
Maven modules in the distributions
have been merged into a singlehazelcast-sql
module as a part of the Hazelcast 5.0 distribution. [hazelcast#18584] - Removed the
jackson-core
dependency frompom.xml
since it was
breaking the extensions that depend onjackson
. [hazelcast#18665] - Moved the former Hazelcast Jet code samples into the
https://github.com/hazelcast/hazelcast-code-samples repository. [hazelcast#475]
The Jet and SQL Engine
- Added support of rolling upgrades for SQL. [hazelcast#19026]
- Added support of reading data from High-Density Memory Store backed maps via the SQL engine. [hazelcast#19328]
- Added support of regular and index (migration tolerant) scan of High-Density Memory Store via SQL. [hazelcast#19227]
- Tables were called
mapping
ininformation_schema.mappings
andtable
ininformation_schema.columns
.
This inconsistency has been fixed by renamingmapping
astable
. [hazelcast#19210] - Added support of the
CONCAT_WS
function, which takes variable sized
VARCHAR
(minimum 3) and returns aVARCHAR
that consists of the
concatenation of the arguments except the first one using the first argument as a separator. [hazelcast#19094] - The 'SELECT' statement now also supports queries without the
FROM
clause
so that you can submit queries likeSELECT rand()
without this clause. [hazelcast#19030] - The Jet engine jobs submitted in a Hazelcast cluster are now cancelled
when you upgrade your Hazelcast version since the Jet engine doesn't provide backwards compatibility. [hazelcast#19012] - Implemented the partition-tolerant index scan processor for Hazelcast maps:
during a partition migration, this processor searches all the migrated partitions on all
available cluster members. [hazelcast#18968] - Added support of the
putIfAbsentAsync()
method for maps on the member side;
which is required for the usage ofINSERT INTO
statements in SQL queries. [hazelcast#18946] - Added support of returning nested fields without having to
deserialize them, which enables you to usePortable
in client/server
deployments without touching the server side; for example, SQL queries
can now return columns without having the class on the server-side classpath. [hazelcast#18922] - Standardized the
TIME
andTIMESTAMP
temporal formats for the
SQL engine: You can now useTIME
without leading zeroes andTIMESTAMP
with space instead of theT
symbol. Also added support of leading non-zero
characters for theDATE
formats. [hazelcast#18881], [hazelcast#18842] - Added support of
OFFSET
for SQL queries. [hazelcast#18866] - Implemented
IdentifiedDataSerializable
for SQL schema objects. [hazelcast#18851] - Changed the
since
tags in Jet engine API and its extension modules
from@since x.y
to@since Jet x.y
. [hazelcast#18832] - Implemented the
OnHeapMapScanP
class to read the Hazelcast maps directly
by the SQL engine. [hazelcast#18685] - Implemented a basic memory management for the SQL engine
so that number of records accumulated by it can be limited
to avoid out of memory failures. You can use themax-processor-accumulated-records
configuration element for this purpose. [hazelcast#18671] - Added support of dynamic parameters for the SQL engine and file table functions. [hazelcast#18613], [hazelcast#18522]
- Introduced
QueryDataType.MAP
andQueryDataTypeFamily.MAP
to support map operand checks
for file table functions. [hazelcast#18602] - Added support of
EXTRACT(field FROM source)
for the SQL engine.
The function computes date parts from the source field. The supported types forsource
argument are as follow:
** Date
** Time
** Timestamp
** Timestamp With Time Zone
[hazelcast#18570] - Added support of the
LIMIT <n>
andORDER BY
clauses for the streaming engine. [hazelcast#18479] - Implemented the following functions for the SQL engine:
**REPLACE
**ATAN2
**POWER
**SQUARE
**SQRT
**CBRT
**POSITION
**COALESCE
**NULLIF
**TO_EPOCH_MILLIS
**TO_TIMESTAMP_TZ
[hazelcast#18900], [hazelcast#18856], [hazelcast#18510], [hazelcast#18487], [hazelcast#18450], [hazelcast#18424], [hazelcast#18405] - Added support of plan caching for Jet engine based queries. [hazelcast#18446]
- Added support of plus and minus operations for interval types (date, time, etc.) for
the SQL engine. [hazelcast#18390] - Added support of various new
Portable
types for the SQL engine. [hazelcast#18115] - Added support of
IN
andBETWEEN
operators for the SQL queries. [hazelcast#18483], [hazelcast#18422], [hazelcast#18067]
Data Structures
- The previous Replicated Map implementation was iterating all the values
while calculating the size of map; ...
v4.1.5
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.1.5 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
Fixes
- Fixed an issue where a high amount of garbage collection pressure was occurring
during repartitioning especially when having a high partition count. [hazelcast#19295] - 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. [hazelcast#19116]
Deprecated/Removed Features
- Deprecated the following properties:
**hazelcast.client.statistics.period.seconds
**hazelcast.client.statistics.enabled
v5.0-BETA-2
This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 3.12 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
==== 3.12 ====
- Breaking Changes
- Support for JDK 6 and 7 has been dropped. The minimum Java version that Hazelcast supports now is Java 8. See the Supports JVMs section.
- New Features
Hazelcast IMDG Enterprise New Features:
- Blue-Green and Disaster Recovery for Java Clients: Introduced the support for Hazelcast Java clients to switch between alternative clusters. See the Blue Green Deployment and Disaster Recovery section.
Hazelcast IMDG Open Source New Features:
- CP Subsystem: Implementing the https://raft.github.io/[Raft consensus algorithm], Hazelcast introduces its CP subsystem which runs within a Hazelcast cluster and offers linearizable implementations of Hazelcast's concurrency APIs. See the CP Subsystem chapter.
- Querying JSON Strings: You can now query JSON strings stored inside your Hazelcast clusters. See the Querying JSON Strings section.
- Pipelining: Introduced pipelining mechanism using which you can send multiple requests in parallel to Hazelcast members or clients, and read the responses in a single step. See the Pipelining section.
- Support for Multiple Endpoints When Configuring Member’s Networking: Added the ability to configure the Hazelcast members with separate server sockets for different protocols. See the Advanced Network Configuration section.
- YAML Configuration Support: Added the support for configuring Hazelcast in YAML. See the Configuring Declaratively with YAML section.
- Enhancements
Hazelcast IMDG Enterprise Enhancements:
- Sharing Hot Restart
base-dir
among Multiple Members: The base directory for the Hot Restart feature (base-dir
) is now used as a shared directory between multiple members, and each member uses a unique sub-directory
inside this base directory. This allows using the same configuration on all the members. Previously, each member had to use a separate directory which complicated the deployments on cloud-like environments. During the restart, a member tries to lock an already existing Hot Restart directory inside the base directory. If it cannot acquire any, then it creates a fresh new directory. See the Configuring Hot Restart section. - Lower Latencies and Higher Throughput in WAN Replication: Improved the design of the WAN replication mechanism to allow configuring it for lower latencies and higher throughput. See the Tuning WAN Replication For Lower Latencies and Higher Throughput section.
- Add/Remove WAN Publishers in a Running Cluster: Introduced the ability to dynamically add or remove WAN publishers (target clusters). See the Dynamically Adding WAN Publishers section.
- Automatic Removal of Stale Hot Restart Data: Introduced an option that allows the stale Hot Restart data to be removed automatically. See the description of the
auto-remove-stale-data
configuration element in the Configuring Hot Restart section. - Client Permission Handling When a New Member Joins: Introduced a declarative configuration attribute
on-join-operation
for the client permission in the Security configuration (its programmatic configuration equivalent is thesetOnJoinPermissionOperation()
method). This attribute allows to choose whether a new member joining to a cluster will apply the client permissions stored in its own configuration, or will use the ones defined in the cluster. See the Handling Permissions When a New Member Joins section. - Automatic Cluster Version Change after a Rolling Upgrade: Introduced the ability to automatically upgrade the cluster version after a rolling upgrade. See the Upgrading Cluster Version section.
- FIPS 140-2 Validation: Hazelcast now can be configured to use a FIPS 140-2 validated module. See the FIPS 140-2 section.
Hazelcast IMDG Open Source Enhancements:
- Client Instance Names and Labels: You can now retrieve the names of client instances on the member side. Moreover, client labels have been introduced so that you can group your clients and/or perform special operations for specific clients. See the Defining Client Labels section.
- Composite Indexes: Introduced the ability to recognize the queries that use all the indexed properties and treat them as a composite, e.g.,
foo = 1 and bar = 2 and foobar = 3
. See the Composite Indexes section. - REST Endpoint Groups: With this enhancement you can enable or disable the REST API completely, Memcache protocol and REST endpoint groups. See the Using the REST Endpoint Groups section.
The following are the other improvements performed to solve the enhancement issues opened by the Hazelcast customers/team.
- Improved the YAML configuration so that you can configure multiple WAN member sockets. [hazelcast#14800]
- Members now fail fast when the
max-idle-seconds
element for the entries in a map is set to 1 second. See the note in the Configuring Map Eviction section for this element. [hazelcast#14697] - Removed group password from the Hazelcast’s default XML configuration file. Also improved the non-empty password
INFO
message. It's now only logged if security is disabled, password is not empty and password is not the Hazelcast default one. [hazelcast#14603] - Improved the code comments for the
HazelcastInstance
interface. [hazelcast#14439] - Improved the Javadoc of
HazelcastClient
so that the code comments now use "unisocket client" instead of "dumb client". [hazelcast#14213] - Added the ability to perform an LDAP
subtree
search for groups in Hazelcast Management Center’s LDAP authenticator. [hazelcast#14118] - Added the ability to set the
EvictionConfig.comparatorClassName()
in the client’s declarative configuration, too. [hazelcast#14093] - Introduced the
/ready
endpoint to the REST API to allow checking a member if it is ready to be used after it joins to the cluster. [hazelcast#14089] - Improved the syncing of XSD files. [hazelcast#14070]
- The
IMap.removeAll()
method now supportsPartitionPredicate
. [hazelcast#12238] - Improved the diagnostics tool so that it automatically creates the configured directory for the diagnostic outputs. [hazelcast#11946]
- Fixes
- Fixed an issue where the state of member list on the clients were broken after a hot restart in the cluster. [hazelcast#14839]
- Fixed an issue where the outbound pipeline was not waking up properly after merging the write-through changes. [hazelcast#14830]
- Fixed an issue where a Hazelcast Java client was not able to connect to the cluster (which has the
advanced-network
configuration) after a split-brain syndrome is healed. [hazelcast#14768] - Fixed an issue where the
like
andilike
predicates didn’t catch any entity with thetext
field containing the '\n' character. [hazelcast#14751] - Fixed an issue where
NullPointerException
s was thrown recursively when a client is connected to an unreachable member during a split-brain. [hazelcast#14722] - Fixed an issue where Hazelcast running on RHEL (OpenJDK8) shows
unknown gc
in the logs, instead ofmajor gc
andminor gc
. [hazelcast#14701] - Fixed an issue where the IP client selector was not working for the local clients. [hazelcast#14654]
- Fixed the wording of a misleading error in the first attempt to connect to a wrongly configured cluster. The error message has been changed to “Unable to connect to any cluster”. https://github.com/hazelcast/hazelcast/issues/14574[[#14574]]
- Fixed an issue where a connection configured using
AdvancedNetworkConfig
was not denied correctly for some inappropriate endpoints. [hazelcast#14532] - Fixed the REST service which was not working when the REST endpoint is configured for
AdvancedNetworkConfig
. [hazelcast#14516] - Fixed an issue where the
setAsync()
method was throwingNullPointerException
. [hazelcast#14445] - Fixed an issue where the collection attributes indexed with
[any]
were causing incorrect SQL query results, if the first data inserted to the map has no value for the attribute or the collection is empty. [hazelcast#14358] - Fixed an issue where
mapEvictionPolicy
couldn’t be specified in the JSON configuration file. [hazelcast#14092] - Fixed an issue where the rolling upgrade was failing when all members change their IP addresses. [hazelcast#14088]
- Fixed an issue where the resources were not wholly cleared when destroying
DurableExecutorService
causing some resources to be left in the heap. [hazelcast#14087] - Fixed an issue where the REST API was not handling the HTTP requests without headers correctly: when a client sends an HTTP request without headers to the Hazelcast REST API, the
HttpCommand
class was wrongly expecting an additional new line. [hazelcast#14353] - Fixed an issue where
QueryCache
was not returning the copies of the found objects. [hazelcast#14333] - Fixed an issue where the MultiMap's
RemoveOperation
was iterating through the backing collection, which caused performance degradation (when using theSET
collection type). [hazelcast#14145] - Fixed an issue where the user code deployment feature was throwing
NullPointerException
while loading multiple nested classes and using entry processors. [hazelcast#14105] - Fixed an issue where the newly joining members could not form a cluster when the existing members are killed. [hazelcast#14051]
- Fixed an issue where the
IMap.get()
method was not resetting the idle time counter whenread-backup-data
is enabled. [hazelcast#14026] - Fixed an issue where the
addIndex()
method was performing a full copy of entries when a new member joins the cluster, which is not needed. [hazelcast#13964] - Fixed an issue where the initialization failure of
discoveryService
was causing some threads to remain open and the JVM could not be terminated because of these threads. [hazelcast#13821] - Fixed the discrepancy between the XSD on the website and the one in the download package. [hazelcast#13011]
PagingPredicate
with comparator was failing to serialize when sending from the client or member when the cluster size is more than 1. This has been fixed by making thePagingPredicateQuery
comparator s...