Hazelcast v4.1-BETA Release Notes
Release Date: 2020-09-09 // over 4 years ago-
๐ This document lists the new features, enhancements, fixed issues and, removed or deprecated features for Hazelcast IMDG 4.1-BETA-1 release. The numbers in the square brackets refer to the issues in Hazelcast's GitHub repositories.
๐ New Features
- Instance Tracking: It is a feature which writes a file on the Hazelcast instance startup
๐ at the configured location. This file contains metadata about the instance, such as version, product name
and process ID, and it is not deleted on the member shutdown.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/#instance-tracking. - SQL Implementation: Implemented the SQL engine that
๐ supports map scans, index scans, projections and filters.
It also introduces thehazelcast-sql
module to handle the
SQL engine's dependencies on Apache Calcite.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/index.html#sql. - Automatic Detection of Discovery Strategy: It tries to automatically detect the
applicable discovery mechanism based on the runtime environment.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/index.html#auto-detection. - ๐ง Overriding Configuration: You can now override the configuration entries
๐ง of your cluster without changing the declarative configuration files (XML/YAML).
๐ See the https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/index.html#overriding-configuration. - Auditlog: This feature allows observing some important cluster events.
Auditable events have a unique type ID, and contain a timestamp and importance level.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/index.html#auditlog.
โจ Enhancements
- ๐ Improvements in Partial Network Disconnections: Introduced properties
๐ง to be configured to detect and resolve the partial network issues among the
Hazelcast IMDG members.
๐ See #16680 and the https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/#partial-network-partitions. - CP Subsystem Listeners: Added membership and group availability
listeners for CP Subsystem.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/#cp-subsystem-listeners. - Trusted Interfaces: It is now possible to restrict the source IP addresses
from which the Management Center operations are allowed.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/#limiting-source-addresses. - ๐ Out-of-the-Box Kerberos Support: Introduced support for Kerberos
authentication protocol which is one of the standard
๐ solutions for single-sign-on. It also adds the GSSAPI authentication support in
๐ง LDAP configuration.
๐ See https://docs.hazelcast.org/docs/4.1-BETA-1/manual/html-single/#kerberos-authentication-type. - WAN Throttling Mechanism : This prevents the WAN consumers from
getting overloaded by the WAN producers if transferring the WAN events takes
less time than processing them in the target cluster. This can be the case with
๐ค WAN synchronization if the network latency is low enough. It can be configured using
the following properties:
**hazelcast.wan.consumer.invocation.threshold
**hazelcast.wan.consumer.ack.delay.backoff.init
**hazelcast.wan.consumer.ack.delay.backoff.max
**hazelcast.wan.consumer.ack.delay.backoff.multiplier
#17113
The following are the other improvements performed to solve the enhancement
issues opened by the Hazelcast customers/team.- โ Added support for the merge operation in IMap. [#17419]
- โ Added support for publishing CP Subsystem and CP data structure
statistics via Metrics. [#17369] - โ Added public classes to expose the member- and
client-side caching provider implementations (in the JCache implementation)
without referring to internal classes. [#17320] - ๐ Improved the entry processing mechanism so that the read-only processors on backups
are not executed anymore. [#17318] - ๐ Improved
CacheSimpleConfig
so that it now accepts cache name in its constructors. [#17287] - โ Added support for advanced persistent memory configuration. [#17282]
- ๐ฒ Cleaned up the noisy initial log messages on Hazelcast startups. [#17243]
- โฑ Introduced auto-disposable tasks for the scheduled executor service. [#17215]
- โ Added support for configurable priority queues. [#17201]
- Parallelized the partition replica migrations so that
the time needed for rebalancing the partitions after adding
or removing a member to/from a cluster is reduced. [#17197] - โ Added support for basic SQL expressions. [#17183]
- โ Added client labels to
ClientEndpointImpl.toString()
to simplify the client identification (in addition to client uuid)
on the Hazelcast member side. [#17178] - โ Added the statistics entry to phone home, that counts the caches having WAN replication
๐ง configured. [#17143] - โ Added support for tenant control when creating caches. [#17122]
- โ Added support for accessing domain objects without domain classes (
GenericRecord
). [#17105] - โ Added metric count support for sets, and maps having backup reads enabled,
๐ง query caches, map stores, custom attributes and WAN replication configurations.
[#17053], [#17071], [#17069], [#17081] - โ Added support for
IMap.compute()
. [#17030] - โ Added support to allow submitting and executing operations while a member
is shutting down to increase the availability of a cluster more that keeps
large data. [#17028] - โ Added
ExtendedMapEntry
in order to create a mechanism for setting TTLs in
entry processors. [#16991] - โ Added
hazelcast-azure
discovery plugin to thehazelcast-all
module. [#16982] - Introduced the
ConfigRecognition
API that determines if a
๐ง provided declarative configuration is recognized by the rules defined in a given
implementation. Along with the API the following three implementations are added:
**MemberConfigRecognizer
for recognizing member XML and YAML configurations
**ClientConfigRecognizer
for recognizing client XML and YAML configurations
**ClientFailoverConfigRecognizer
for recognizing failover client XML and YAML configurations
[#16958] - ๐ Made the diagnostics logs more cloud-friendly so that they are sent to
stdout
instead of sending to local files. [#16941] - ๐ Improved the mechanism of partition table updates to
โก๏ธ eliminate the latencies when these updates are sent to the clients by a member. [#16939] - ๐ Improved the client configuration such that when the client
๐ง failover configuration is provided, the reconnect mode cannot
be set asoff
; it now fails fast in this case. [#16886] - ๐ Introduced the
forEach()
loop support for IMap. [#16877] - โ Added the
load()
method toConfig
,ClientConfig
and
๐งClientFailoverConfig
classes. This method loads the configuration
๐ง with the known locations. If not found, the default configuration is returned. [#16864] - ๐ Improved the
deleteAll()
(MapStore) and ITopic Javadocs. [#16862], [#16861], - Introduced the
ServerConnection
andClientConnection
interfaces
that extendConnection
for cleaning up purposes. [#16849] - Implemented the
root
operator for the SQL engine
responsible for getting the final result stream. [#16829] - โ Added support for
IMap.computeIfAbsent()
. [#16808] - Introduced SQL thread pools for query processing. [#16805]
- Introduced the network protocol, base executor and row
interfaces for the SQL engine. [#16799], [#16762] - โ Added the
setAll()
andsetAllAsync()
methods for IMap. [#16787] - โ Added the
writeOrdered()
method to theConnection
class
for the purpose of ordered delivery of messages. [#16776] - โ Added the creation time metric for the executor service. [#16775]
- ๐ Improved an unclear exception message for credentials. [#16756]
- โก๏ธ Updated the related aspects of Hazelcast IMDG after the
๐ changes done on the client protocol side to add the ability
to add new parameters, methods, services, events and custom types
to codecs. [#16718] - โ Added the
offset
parameter that can be used while creating
inputs inBufferObjectDataInput
. [#16701] - Introduced the
putAllAsync()
method for MultiMap. [#16698] - Defined metrics for ISet and IList collections. [#16665]
- โฌ๏ธ Upgraded log4j2 version to 2.13.0. [#16654]
- ๐ Renamed MultiMap proxy implementation to follow the established naming convention:
ObjectMultiMapProxy
->MultiMapProxyImpl
. [#16637] - ๐ Improved the
computeIfPresent()
implementation so that now it keeps a
๐ฏ clone of the old/existing value and uses that for replace/delete operations. [#16636] - ๐ฒ Introduced the
hazelcast.logging.details.enabled
property
๐ฒ to make the logging of cluster version, name and IP optional to
โฌ decrease the noise in the logs when, for example, you have a single-member cluster. [#16622]
- โฌ๏ธ Upgraded the Hazelcast Kubernetes plugin version to 2.0.1. [#16590]
- Added the support for automatically detecting the classloader
๐ of a type for the user code deployment feature. [#16585]- Made
IMap.putAllAsync()
andIMap.submitToKeys()
methods public API. [#16449] - Implemented the base type system for SQL: the base SQL data types
have been defined and mapped to the corresponding Java types.
Type information is used by executor stages to use the right strategy
of expression evaluation. [#15241] - ๐ป Clarified the exception message when you connect to a cluster with an
invalid group name. [#15099] - ๐จ Refactored the check and retry initialization logic of
ReplicatedMapProxy
so that they are performed in parallel for different
partitions. [#14331] - โ Added a test for the
ClientConsoleApp
class. [#12298] - ๐ Improved the behavior of
ConcurrentMap.computeIfPresent
:
combined single client-server round trips instead of two (forget
and
replace
methods). [#11958]
- Made
๐ฅ Breaking Changes
- In a CP subsystem session, a generic
IllegalStateException
was being thrown when Hazelcast
is shutdown. Now the same situation throwsHazelcastInstanceNotActiveException
. [#17120] - The
TcpIpConnection
class has been renamed asServerConnection
. [#16839]
๐ Fixes
- ๐ Fixed an issue where the custom load balancers
๐ง could not be configured declaratively. [#17415] - ๐ Fixed the issue of dangling pointers in global indexes. [#17338]
- ๐ Fixed a race issue when creating a cache (JCache) using
multiple methods with the same cache name but having different keys.[#17286] - ๐ Fixed an issue where the repeated calls of
executeOnKeys()
in Hazelcast clients forNATIVE
maps was causing a continuous
increase in the used memory and exhaustion of the memory pool after a while. [#17276] - ๐ Fixed an issue where
ReliableTopicMessageListener
was firing a warning when the client is shutting down. [#17153] - ๐ Fixed an issue where the client was stuck with an outdated
member list after a split-brain scenario. [#17147] - ๐ Fixed the broken interoperability between the
CompletableFuture
methods. [#17020] - ๐ Fixed an issue where touching a map entry having an entry processor working on it
was modifying its time-to-live. [#16987] - ๐ Fixed an issue in the cache service where its pre-join
operation was consideringCacheConfig
as resolved: it
was assuming that key/value types, user customizations and
๐ง other cache configurations have been loaded. This was an issue
when the cache is not touched yet. [#16917] - ๐ Fixed an issue where Management Center was not working as expected
๐ง when the cluster is set up using advanced network configuration. [#16910] - ๐ Fixed an issue where
ServiceLoader
was round-tripping between URL and URI,
and consequently loses the associatedURLStreamHandler
when trying to load
Hazelcast from a custom class loader. [#16846] - ๐ Fixed an issue where the class definitions, that are registered explicitly in
๐ง the serialization configuration and have the same class ID in different factories,
were not handled properly. [#16831] - ๐ Fixed the
NullPointerException
inIndexCopyBehavior.NEVER
mode. [#16784] - ๐ Fixed an issue where the client permissions for Reliable Topic and Ringbuffer
we're missing. [#16755] - ๐ Fixed an issue where the type information was missing the Metrics MBeans. [#16747]
- ๐ Fixed an issue where the RESP API was always requiring the call URLs
to end with a slash character. [#16688] - ๐ Fixed an issue where the service URL for Eureka could not be set
๐ง using the declarative configuration. [#16679] - ๐ Fixed an issue where the wait key of a blocking call within
a Raft invocation was still being reported as a live operation,
when the key times out. [#16614] - ๐ Fixed an issue where the upload of classes using the client
๐ user code deployment were not successful when they are retrieved not
in their created order. [#16612] - ๐ Fixed an issue where the size() method was returning a negative
value when map, cache and multimap contain more than Integer.MAX_VALUE entries. [#16594] - ๐ Fixed an invalidation issue when using a transactional map
from a cache with a Near Cache: the cache invalidation event occurs
when thetransactionalMap.put
method is called. As a result,
the entry was getting invalidated before the change is committed to the map. [#16579] - ๐ Fixed an issue where
InPredicate
was not invoking value comparison when the
read attribute is null. [#15100] - ๐ Fixed an issue where Map, Cache, MultiMap data structures
were returning negative values (size()
) when the size is more than
Integer.MAX_VALUE
. [#14935]
Contributors
We would like to thank the contributors from our open source
๐ community who worked on this release:- Inel Pandzic
- Omid Pourhadi
- Ryan Lindeborg
- Santhosh Kumar
- Bartek Kowalczyk
- Ashutosh Agrawal
- รdรกm Berkecz
- HugeOrangeDev
- Harry Tran
- Stephen Russett
- Ulf Adams
- Abdul Aziz Ali
- Dmitry Konstantinov
- Anmol Chaddha
- lprimak
- keteracel
- Burak Sezer
- wangumer
- Marcin L
- Instance Tracking: It is a feature which writes a file on the Hazelcast instance startup