What's New in Hazelcast 3.2

Release Notes

New Features

This section provides the new features introduced with Hazelcast 3.2 release.

  • NIO Client: New architecture based on NIO introduced to support more scalable and concurrent client usage.
  • MapReduce Framework: MapReduce implemented for your key-value collections that need to be reduced by grouping the keys. Please see the interview and Chapter 14 - Hazelcast MapReduce.
  • Order/Limit Support: Now you can order and limit results returned by queries performed on Hazelcast Distributed Map.
  • C++ Client: Native C++ client developed for C++ users which can connect to a Hazelcast cluster and realize almost all operations that a node can perform. Please see Native Clients.
  • C# Client: Also, Native C# client that has a very similar API with Native Java client developed. Please see Native Clients.

Improvements

This section provides the improvements performed for Hazelcast 3.2 release.

  • Size of a distributed queue via REST API can be returned. [#1809]
  • InitialLoadMode configuration parameter (having Lazy and Eager as values) added to MapStoreConfig. [#1751]
  • Tagging support for Executor Service introduced such that nodes can be tagged for IExecutorService. [1457]
  • getForUpdate() operation for transactional map introduced. [#1033]
  • Entry processor can run on a set of keys with the introduction of executeOnKeys(keys,entryprocessor) method for IMap. [1423]
  • getNearCacheStats() introduced. Statistics for near cache can be retrieved. [#30]

Please see the list of all enhancement issues here.

Fixes

This section lists issues solved for Hazelcast 3.2 release.

  • LocalMapStats.getNearCacheStats() can return null when it is called before a map get that calls initNearCache(). [#2009]
  • testMapWithIndexAfterShutDown fails in OpenJDK. [#2001]
  • Portable Serialization needs objects to be shared between client and server. [#1957]
  • Near cache entries should be locally invalidate on IMap.executeOnKey(). [#1951]
  • OperationTimeoutException is thrown when executing task that runs longer than hazelcast.operation.call.timeout.millis. [#1949]
  • MapStore#store was called when executing AbstractEntryProcessor on backup. [#1940]
  • After an OperationTimeoutException is thrown from `ILock.tryLock() (and after the system is back in a normal state), the named lock remains locked. [#1937]
  • Hazelcast client needs OutOfMemoryErrorDispatcher. [#1933]
  • Near Cache: Caching of local entries may lead to race condition. [#1905]
  • After key owner node dies, it takes too much time for threads to wakeup from condition.await(). [#1879]
  • Possible improvements/fixes for NearCache. [#1863]
  • MultipleEntryBackupOperation does not handle deletion of entries. [#1854]
  • If topics are created/destroyed, then the statistics for that topic are not destroyed and this can cause a memory leak. [#1847]
  • PartitionService backup/replication fixes. [#1840]
  • Cached null values remain in near cache after evict is called. [#1829]
  • NullPointerException in MultiMap when the service is shutdown before the migration is processed. [#1823]
  • Network interruption causes node to continually warn with WrongTargetException. [#1815]
  • DefaultRecordStore#removeAll should be modified so that it keeps "key objects to delete" as a list, not a set. [#1795]
  • Very long operation.run() call stack especially when high partition count is used. [#1745]
  • When executing an entry processor with an index aware predicate, the index is not used, instead the predicate is applied to the entire entry set. [#1719]
  • When one node goes down in a cluster with 2 nodes (where near cache is enabled), containsKey call hangs in the second node. [#1688]
  • When deleting an entry from an entry processor by setting the value to null, it is not removed from the backup store. [#1687]
  • Client calls executed at server side cause unwanted (de)serialization. [#1669]
  • In TrackableJobFuture.get(long, TimeUnit), there is a 100 ms of sleep-spin while waiting for the result of a MapReduce task to be set. [#1648]
  • If storeAll takes much time and if instance terminates while map store is running, data can be lost. [#1644]
  • A missing Spring 4 Cache method added to hazelcast-spring package (namely public T get(Object key, Class type)). [#1627]
  • When eviction tasks are canceled, scheduledExecutorService is not cleaned. [#1595]
  • storeAll() with new value for the same key should not be executed until any previous storeAll() operations with the same key are not completed. [#1592]
  • When using native client to interact with Hazelcast cluster, some JMX MBean attribute values on cluster nodes are not set/updated. [#1576]
  • IMap.getAll(keys) method does not read from near cache. [#1532]
  • Near Cache cache-local-entries attribute is missing in hazelcast-spring-3.2 XSD. [#1524]
  • Exception while executing script in OpenJDK 8. [#1518]
  • Infinite waiting on merge operations when cluster shuts down. [#1504]
  • Client side socket interceptor is not needed to be MemberSocketInterceptor. [#1444]
  • Near cache on the local node should be enabled if its InMemoryFormat is different from that of the map. [#1438]
  • Async EntryProcessor does not deserialize the value before it is called back. [#1433]
  • A submitted task cannot be canceled via the native client. [#1394]
  • executeOnKeys(keys,entryprocessor) introduced on IMap. With this feature entry processor can be run on a set of keys. [#1339]
  • FINEST logging should be guarded where appropriate. [#1332]
  • False errors reported in Eclipse due to schema definition. [#1330]
  • Index based operations are not synchronized with partition changes. [#1297]
  • Management Center: InvocationTargetException in Tomcat console when a node is started and then stopped. [#1267]
  • The system property hazelcast.map.load.chunk.size is being ignored in Hazelcast 3.1. [#1110]
  • Master should fire repartitioning after getting confirmation from nodes. [#1058]
  • SqlPredicate does not Implement equals/hashCode. [#960]
  • DelegatingFuture.isDone seems to always return false until the method DelegatingFuture.get is called. [#850]
  • Predicate support for entry processor. [#826]

RC2 Fixes

  • ClientService.getConnectedClients returns all end points [#1883].
  • MultiMap is throwing ConcurrentModificationExceptions [#1882].
  • executorPoolSize field of ClientConfig cannot be configured using XML [#1867].
  • Partition processing cannot be postponed [#1856].
  • Memory leak at client endpoints [#1842].
  • Errors related to management center configuration on startup [#1821].
  • XML parsing error by client [#1818].
  • ClientReAuthOperation cannot return response without call ID [#1816].
  • MemberAttributeOperationType should be introduced to remove the dependency to MapOperationType [#1811].
  • Entry listener removal from MultiMap [#1810].
  • Change DefaultRecordStore#removeAll to keep "key objects to delete" as a list, not a set [#1795].

RC1 Fixes

  • TransactionalMap does not support put(K,V,long,TimeUnit) [#1718].
  • Entry is not removed from backup store when it is deleted using entry processor [#1687].
  • Possibility of losing data when MapStore takes a long time [#1644].
  • When eviction tasks are cancelled, scheduledExecutorService should be cleaned [#1595].
  • A fix related to StoreAll is needed in a write-behind scenario [#1592].
  • Update problem at map statistics [#1576].
  • Exception while executing script in OpenJDK 8 [#1518].
  • StackOverflowError at AndResultSet [#1501].
  • Near Cache using InMemoryFormat.OBJECT also for local node [#1438].
  • Async entry processor is not deserializing the value before returning [#1433].
  • Distributed Executor; Future Cancel is not working [#1394].
  • HazelcastInstanceFactory$InstanceFuture.get() never returns when newHazelcastInstance() method fails/throws exception [#1253].
  • Changes for Vertx on Openshift [#1176].
  • Serialization should be performed after database interaction for MapStore [#1115].
  • System property related to chunk size is passed over in Hazelcast 3.1 [#1110].
  • Map backups lack eviction of some specific data [#1085].
  • DelegatingFuture.isDone always returns false until get is called [#850].
  • Predicate support for entry processor [#826].
  • Full replication of Maps should be performed [#360].
  • Near cache statistics [#30].

Known Issues & Workarounds

Plese see here for the known issues.