Enhancements

The following are the the enhancements performed for Hazelcast 3.6 release.

  • Replicated Map improvements: The implementation of Hazelcast replicated maps has been revisited. Please especially refer to the Considerations for Replicated Map section.
  • Management Center improvements: Alerting mechanism added. Please refer to the Management Center section.
  • Paging Predicate improvements: With the performed improvements, now random page accessing is supported. Please refer to the Filtering with Paging Predicates section.
  • Rule based query optimizations: This improvement introduces a query optimizer based on static rewriting rules. The optimizer treats predicates as immutable and returns a modified copy when the optimized one is found. Please refer to the hazelcast.query.optimizer.type property definition in the System Properties section.
  • WAN replication improvements: With the improvements performed on Hazelcast's WAN replication feature, you can now monitor WAN replication events for each data structure and WAN replication now supports different acknowledge types for each target cluster group. Please refer to the WAN Replication Event Filtering API section and WAN Replication Acknowledge Types section for more information.
  • Improvements on Hazelcast's OSGI support: With this improvement, Hazelcast bundles provide OSGI services so that the users can manage (create, access, shutdown) the Hazelcast instances through this service on OSGI environments. Having the hazelcast.osgi.start property enabled, when an Hazelcast OSGI service is activated, a default Hazelcast instance is created automatically. These instances can be served as an OSGI service to be accessed by other bundles. Registering the created Hazelcast instances behavior is enabled by default and can be disabled using the hazelcast.osgi.register.disabled property. Each Hazelcast bundle provides a different OSGI service and their instances can be grouped (clustered) together to prevent possible compatibility issues between different Hazelcast versions/bundles. This grouping behavior is enabled by default and can be disabled using the hazelcast.osgi.grouping.disabled property. Hazelcast OSGI service's lifecycle (and also the owned/created instances' lifecycles) are the same as the owner Hazelcast bundles. When the bundle is stopped (deactivated), owned service and Hazelcast instances are also deactivated/shutdown and deregistered automatically. Then, when the bundle is re-activated, its service is registered again. In addition, the Hazelcast Enterprise JAR file is also an OSGI bundle like the Hazelcast OSS JAR file.

The following are the other improvements performed to solve the enhancement issues opened by the Hazelcast customers/team.

  • There exists a misleading log entry for the method EventServiceImpl.sendEvent: "logFailure("IO Queue overloaded! Failed to send event packet to: %s", subscriber);". However, the failure is not about I/O queue, it is about connection drop. [6723]
  • Approximate max-size calculation should be removed for IMap eviction. [6463]
  • SpringAwareWebFilter should have a constructor which takes properties as arguments. [6438]
  • Client side and server side cache proxies handle putAll operation one by one. This is not efficient. Records for this operation should be grouped as per their partitions and should be sent and processed in batches. [6367]
  • Not requested events should not be sent to MapListener [6349]
  • Inconsistent and potentially buggy design in BasicCompletableFuture. [6080]
  • Starting with "hazelcast-wm 3.3", OSGI Manifest Spring package imports should be optional. [6072]
    • The new client determines the partition ID for every invocation for data structures like queue and list where the partition ID is static. There is no need for this behavior. It should calculate the partition ID for once when the proxy is created and continue to re-use it. [5848]
  • Map.Entry supplied to Entry Processor is not Serializable any more. [5611]
  • The configuration file minimal-json with the provided scope is not picked up by the shade plugin. [5543]
  • In Spring configuration, when a boolean property is injected for hazelcast bean (<hz:hazelcast:....</hz:hazelcast) a SAXParse exception is thrown. [5528]
  • Currently, key/value pairs are deserialized prior to the execution of entry processor by default. This leads to the need of domain object at the server side, even if entry processor never uses it. [5301]
  • In Spring XML configuration, the attributes of socket-options should be of type xs:string. [4700]
  • ClientMembershipEvent does not need to have the member field. [4282]
  • Hazelcast has lock with lease time feature but does not support tryLock with lease time. [1564]