Hazelcast IMDG C++ Client
APACHE-2.0 License
Bot releases are hidden (Show)
This document describes the new features, enhancements, and fixed issues for the Hazelcast C++ Client v5.3.0 release.
This version is a minor release and therefore is fully backward-compatible with all 5.x and 4.x versions.
Refer to the 5.3.0 milestone for details on all issues and PRs that were involved in this release.
See Installing section for installing the library.
To community user @cngzhnp, sending PRs for compilation enhancements.
Published by akeles85 over 1 year ago
This document describes the new features, enhancements, and fixed issues for the Hazelcast C++ Client v5.2.0 release.
This version is a minor release and therefore is fully backward-compatible with all 5.x and 4.x versions.
Refer to the 5.2.0 milestone for details on all issues and PRs that were involved in this release.
Important note, minimum boost version is upgraded to 1.73 for Windows due to this bug.
See Installing section for installing the library.
To community user @cngzhnp, sending PRs for compilation enhancements.
Published by OzanCansel almost 2 years ago
hazelcast::client::member::version
symbols are exported.(#1041 )proxy_session_manager
is fixed. (#1005, #1027)std::random_shuffle
usage removed due to it is removed in C++17 (#1043)You can find the full list of closed issues and merged pull requests here
See Installing section for installing the library.
Published by ihsandemir about 2 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.2.1 release.
There are no new features.
There are no enhancements.
You can find the full list of closed issues and merged pull requests here.
See Installing section for installing the library.
Published by yemreinci about 3 years ago
This document describes the new features, enhancements, and fixed issues in Hazelcast C++ Client v5.0.0.
No new features.
No enhancements.
imap::get_all
when value type is hazelcast_json_value
was fixed by @RikeVoltz in https://github.com/hazelcast/hazelcast-cpp-client/pull/926.See the Installing section for installing the library.
Published by yemreinci about 3 years ago
This document describes the new features, enhancements, and fixed issues in Hazelcast C++ Client v4.2.0.
hazelcast::client::query::in_predicate
now supports passing values in a vector. This was introduced by https://github.com/hazelcast/hazelcast-cpp-client/pull/890.You can find the full list of issues and pull-request for this release here.
See the Installing section for installing the library.
Published by yemreinci over 3 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.1.1 release.
There are no new features.
There are no enhancements.
You can find the full list of closed issues and merged pull requests here.
See Installing section for installing the library.
Published by ihsandemir over 3 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.1.0 release.
The following are the major changes performed in this release:
Mutual Authentication (Two Way Authentication): Mutual Authentication is the process where the client verifies the identity of the server via server's certificate (either self-signed or signed by a CA authority) and the server verifies the client identity via the client provided certificate (either self-signed or signed by a CA authority). See PR #820
Hazelcast Cloud Discovery: If you are using Hazelcast Cloud Service and you want to write an application that will utilize the Hazelcast Cloud Database service, you can use the C++ client. See the detailed documentation and implementation PR.
Vcpkg and Conan Integrations: You can now use C++ client library with Conan and Vcpkg.
config::ssl_config::set_context(boost::asio::ssl::context context)
API. Hence, you have full access to the SSL context to be used and the you can configure it and provide it externally: config::ssl_config::set_enabled
, config::ssl_config::set_protocol
, config::ssl_config::get_protocol
, config::ssl_config::get_verify_files
, config::ssl_config::add_verify_file
.The following major issues have been fixed for this release.
client_config::reliable_topic_config_map_
is now cannot be modified concurrently. [#849]
You can find the full list of closed issues here.
See Installing section for installing the library.
Published by ihsandemir over 3 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.0.1 release.
This is a patch only release fully compatible with 4.0.0.
The following are the major changes performed in this release:
There are no new features.
The generated hazelcast library and cmake target name are changed from hazelcastcxx
to hazelcast-cpp-client
to match the name of the project. You can find the details [#812]
The following major issue has been fixed for this release.
You can find the full list of all issues closed and PRs merged for this release at the repository.
There are no known issues for this release.
See Installing section for installing the library.
Published by ihsandemir over 3 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.0.0 release.
This is a major API breaking release. We switched to the new Hazelcast Open Binary Protocol v2.0 with this release of the client so that it can used with server versions 4.0 and later.
The following are the major changes performed in this release:
New Client Protocol: We have implemented the new Hazelcast Open Binary protocol version 2. This new protocol eliminates some of the message size limitations of the previous version and solves the problems of backward compatibility of custom field definitions.
C++11 Support: The client code has been upgraded to use the C++11 features. The API has been changed to reflect the C++11 usages.
Fully Async API: Almost all API methods now return boost::future
which allows async programming for all the API calls. boost::future
also supports continuations which can be very useful for async programming. You can also use utilities such as boost::when_all
, boost::wait_for_all
, boost::when_any
to handle multiple futures.
new_client Factory Method: We made the hazelcast_client
constructor as private and provided the new hazelcast::new_client
API to obtain and start a new client. The new API returns a future from which you can actually obtain the client or do an async continuation to the future.
No Binary Release: We now have full support for cmake install and also cmake find_package(hazelcast)
support for projects using Hazelcast. The release version numbering is also updated to reflect the 3 digit numbering support of Linux/Unix/Windows environments. Current version library produces library version 4.0.0
. We decreased the client compile time from source code (you can download source zip or git checkout the v4.0.0
tag) so that it made more sense to make source distributions and let you compile it in your own environments. This also works better when you use certain boost and openssl versions. Please see the documentation for further details.
CP Subsystem: Hazelcast IMDG 4.0 has introduced CP concurrency primitives with respect to the CAP principle, i.e., they always maintain linearizability and prefer consistency over availability during network partitions and client or server failures. All data structures within CP Subsystem are available through the hazelcast_client::get_cp_subsystem()
API. In favor of CP subsystem API, we have removed the legacy IAtomicLong
, ISemaphore
, and ICountDownLatch.h
APIs. The new API provides CP atomic_long
, latch
, counting_semaphore
, fenced_lock
and atomic_reference
.
Exponential Retry Configuration: We removed the getConnectionAttemptLimit
and setAttemptPeriod
configurations and replaced them with the exponential backoff configuration connection_retry_config
in the connection strategy configuration. The client by default tries to connect to the cluster starting with a small timeout time and exponentially increases the timeout up to a configured maximum. This allows a faster connection attempt and more dynamic configuration.
optional
: The new API uses boost::optional
for return types where it is possible to return nullable objects. This is more efficient and simpler API than using the shared_ptr
approach.
New Backup Aware Client: The client is now by default processing the backup event notifications. When an operation with sync backup is sent by a client to the Hazelcast member(s), the acknowledgment of the operation's backup is sent to the client by the backup replica member(s). This improves the performance of the client operations. You can turn off this feature back to the old behavior using the client_config::backup_acks_enabled(bool)
API.
API Mixed Type Support: We have removed the old RawPointer API. The new API allows you to pass the type of object for each method call. Hence, this new API can now support mixed types, and you do not need to provide a specific object type when instantiating a Hazelcast structure such as imap
.
Single External Dependency: We only depend on the Boost library. You need to have Boost installed in your environment. Particularly, we depend on boost::thread
and boost::asio
.
IO Level Design Change: We now use asio for SSL and non-SSL sockets. This eliminates the socket descriptor number limitation of the previous implementation which used the select
system API. We also utilize asio::thread_pool
for our internal executor implementation.
Non-blocking Atomics: Eliminated the previous lock based atomic implementations and switched fully to the std::atomic
standard library.
Serialization Changes: We have changed the way how object serializations are coded so that the serialization is mostly resolved at compile-time. The new serialization does not need any specific configurations but it simply fails at compile-time if not implemented correctly, e.g., missing method. The new serialization also allows keeping your legacy classes (see the hz_serializer<T>
specializations).
Group Name Removal: Group configuration has been removed. We now have cluster_name
in the ClientConfig
API which has replaced the GroupConfig
.
New Listener API: You can now use the listener APIs with lambda and std::function
objects.
New Logger Configuration: We have introduced a new logger_config
API and a new way to configure integrating your logger.
Snake Case: API naming has been changed from camelCase to snake_case.
Version API. [#612]
The following major issue has been fixed for this release.
You can find the full list of closed issues here.
There are no known issues for this release.
See Installing section for installing the library.
Published by ihsandemir almost 4 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 4.0-BETA release.
This is a major API breaking release. We switched to the new Hazelcast Open Binary Protocol v2.0 with this release of the client so that it can used with server versions 4.0 and later.
The following are the major changes performed in this release:
New Client Protocol: We have implemented the new Hazelcast Open Binary protocol version 2. This new protocol eliminates some of the size limitations of the previous version and solves the problems of backward compatibility of custom field definitions.
C++11 Support: The client code has been upgraded to use the C++11 features. The API has been changed to reflect the C++11 usages.
Fully Async API: Almost all API methods now return boost::future
which allows async programming for all the API calls. boost::future
also supports continuations which can be very useful for async programming. You can also use utilities such as boost::when_all
, boost::wait_for_all
, boost::when_any
to handle multiple futures.
CP Subsystem: Hazelcast IMDG 4.0 has introduced CP concurrency primitives with respect to the CAP principle, i.e., they always maintain linearizability and prefer consistency over availability during network partitions and client or server failures. All data structures within CP Subsystem are available through the hazelcast_client::get_cp_subsystem()
API. In favor of CP subsystem API, we have removed the legacy IAtomicLong
, ISemaphore
, and ICountDownLatch.h
APIs. The new API provides CP atomic_long
, latch
, counting_semaphore
, fenced_lock
and atomic_reference
.
optional
: The new API uses boost::optional
for return types where it is possible to return nullable objects. This is more efficient and simpler API than using the shared_ptr
approach.
New Backup Aware Client: The client is now by default processing the backup event notifications. When an operation with sync backup is sent by a client to the Hazelcast member(s), the acknowledgment of the operation's backup is sent to the client by the backup replica member(s). This improves the performance of the client operations. You can turn off this feature back to the old behavior using the client_config::backup_acks_enabled(bool)
API.
API Mixed Type Support: We have removed the old RawPointer API. The new API allows you to pass the type of object for each method call. Hence, this new API can now support mixed types, and you do not need to provide a specific object type when instantiating a Hazelcast structure such as imap
.
Single External Dependency: We only depend on the Boost library. You need to have Boost installed in your environment. Particularly, we depend on boost::thread
and boost::asio
.
IO Level Design Change: We now use asio for SSL and non-SSL sockets. This eliminates the socket descriptor number limitation of the previous implementation which used the select
system API. We also utilize asio::thread_pool
for our internal executor implementation.
Non-blocking Atomics: We have eliminated the previous lock based atomic implementations and switched fully to the std::atomic
standard library.
Serialization Changes: We have changed the way how object serializations are coded so that the serialization is mostly resolved at compile-time. The new serialization does not need any specific configurations but it simply fails at compile-time if not implemented correctly, e.g., missing method). The new serialization also allows keeping your legacy classes (see hz_serializer<T>
specializations).
Group Name Removal: Group configuration has been removed. We now have cluster_name
in the ClientConfig
API which has replaced the GroupConfig
.
New Listener API: You can now use the listener APIs with lambda and std::function
objects.
New Logger Configuration: We have introduced a new logger_config
API and a new way to configure integrating your logger.
Snake Case: API naming changed from camelCase to snake_case.
Version API. [#612]
The following major issue has been fixed for this release.
You can find the full list of closed issues here.
There are no known issues for this release.
See Reproducing Released Libraries From Source for generating custom built-binaries for your environment.
Published by ihsandemir over 4 years ago
This document includes the fixed issues for Hazelcast C++ Client 3.12.1 release.
No new features in this release.
No enhancements in this release.
There is only one major issue fixed in this release which is listed below. You can find the full list of closed issues and closed PRs.
There are no known issues for this release.
Published by ihsandemir over 5 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.12 release.
JSON Serializer: You can now use the JSON formatted strings as objects in the Hazelcast cluster. Starting with Hazelcast IMDG 3.12, the JSON serialization is one of the formerly supported serialization methods. Creating JSON objects in the cluster does not require any server side coding and hence you can just send a JSON formatted string object to the cluster and query these objects by fields. See the JSON Serialization for details. Examples can be found here.
Async API: Asynchronous methods are added for more powerful operations like batched writing or reading. The asynchronous methods do not block but return immediately with an ICompletableFuture
interface. You can later query the result of the operation using this interface or even provide a callback method to be executed on the user executor threads when the response to the call is received. The IMap, Ringbuffer and IAtomicLong support asynchronous operations. See the Using IMap Non-Blocking Async Methods, Using Ringbuffer Non-Blocking Async Methods and Using Atomic Long Non-Blocking Async Methods for details. Examples can be found here.
Distributed Executor Service: Hazelcast C++ client allows you to asynchronously execute your tasks (logical units of work) in the cluster, such as database queries, complex calculations and image rendering. With IExecutorService, you can execute tasks asynchronously and perform other useful tasks. If your task execution takes longer than expected, you can cancel it. See the Distributed Executor Service for details. Examples can be found here.
Pipelining API: With the new Pipelining API, you can send multiple requests in parallel using a single thread and, therefore, increase the throughput. See the Pipelining for details. Examples can be found here.
HazelcastClient::getLocalEndpoint()
API so that you can get the client UUID. [#524]
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs.
TopologyChangedException
was retryable. [#522]
There are no known issues for this release.
Published by ihsandemir almost 6 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.11 release.
Replicated Map: Hazelcast Replicated Map is a distributed key-value data structure where the data is replicated to all members in the cluster. It provides full replication of entries to all members for high speed access. See the Using Replicated Map section for details. Examples can be found here.
Client Statistics: You can now monitor C++ client statistics including Near Cache metrics on the Hazelcast Management Center console. See the Enabling Client Statistics section for details. Examples can be found here.
Logger Configuration: Introduced new logger capabilities such as redirecting the client logs to a file and filtering certain log levels, and integrated the easylogging++ library. You can configure a custom logger using the ClientConfig::getLoggerConfig()::setConfigurationFileName("logger config file path");
method, See the Logging Configuration section for details. Examples can be found here.
getMap()
method. [#54]
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with the 3.11 milestone.
Fixed an issue where large value sized IMap.set
performance was decreasing without the suitable socket options setting - send/receive buffer sizes. [#465]
Fixed an issue in 3.10.1 where there was a leak in the client memory (thread allocation). [#455]
Fixed an issue where the client was trying to connect to the cluster and got a context:asio.ssl
error. Introduced SSL FIPS compliance for auto-discovery on AWS for this. [#337]
Fixed an error in asio while compiling it with SSL enabled. [#284]
There are no known issues for this release.
Published by ihsandemir about 6 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.10.1 release.
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.10.1
There are no known issues for this release.
Published by ihsandemir over 6 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.10 release.
ClientConfig::getConnectionStrategyConfig().setAsyncStart(bool);
ClientConfig::getConnectionStrategyConfig().setReconnectMode(const hazelcast::client::config::ClientConnectionStrategyConfig::ReconnectMode &);
Possible values for the ReconnectMode are:
Shuffle Cluster Connection Member List: When the client is connecting to the cluster, by default the configured and discovered member addresses are tried randomly. If you would like the client to try connecting in a configured order, you can set the hazelcast.client.shuffle.member.list
configuration property to false
.
Listener Events: When a listener is added then the events are being delivered to the listener as they are received. The events are delivered to your listener implementation via event threads. The number of these event threads can be configured using this property:
config.setProperty("hazelcast.client.event.thread.count", "7");
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.10
There are no known issues for this release.
Published by ihsandemir over 6 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.10-BETA-1 release.
ClientConfig::getConnectionStrategyConfig().setAsyncStart(bool);
ClientConfig::getConnectionStrategyConfig().setReconnectMode(const hazelcast::client::config::ClientConnectionStrategyConfig::ReconnectMode &);
Possible values for the ReconnectMode are:
config.setProperty("hazelcast.client.shuffle.member.list", "false")
config.setProperty("hazelcast.client.event.thread.count", "7");
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.10
There are no known issues for this release.
Published by ihsandemir almost 7 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.9.1 release.
getHazelcastTypeId
.There are no enhancements for this release.
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.9.1.
ObjectDataInput::readByteArray()
. [#328]
refreshPartition
sleep is not working. [#293]
There are no known issues for this release.
Published by ihsandemir almost 7 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.9 release.
There are no new features for this release.
Polymorphic Object Support: This release adds the polymorphic object support for all serialization types; IdentifiedDataSerializable
, Portable
and custom
types. You can now use the base type when you get a data structure, for example client.getMap<BaseKey, BaseValue>("mymap"), and put and get derived polymorphic objects to the same data structure.
Mixed Type Unrelated Object Support: This release adds the support for all serialization types for completely unrelated object types to be used at the Hazelcast data structures. You can do this by using the mixed type adopted HazelcastClient
. You can adopt the client in this way:
ClientConfig config;
HazelcastClient client(config);
mixedtype::HazelcastClient &hazelcastClient = client.toMixedType();
The mixedtype::HazelcastClient
interface is designed to provide you the data structures which allows you to work with any object types in a mixed manner. For example, the interface allows you to provide the key and value type differently for each map.put call. An example usage is shown below:
mixedtype::IMap map = hazelcastClient.getMap("MyMap");
map.put<int, int>(3, 5);
map.put<string, std::string>("string key1", "MyStringValue");
map.put<int, MyCustomObject>("string key1", myCustomInstance);
TypedData result = map.get<int>(3);
As you can see in the above code snippet, we are putting int
, string
and MyCustomObject to the same map. Both the key and value can be of different type for each map.put call.
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.9
There are no known issues for this release.
Published by ihsandemir about 7 years ago
This document includes the new features, enhancements, and fixed issues for Hazelcast C++ Client 3.8.3 release.
IMap::removeAll
API. This API allows you to remove entries from the map based on the criteria (predicate) that you provide.There are no enhancements for this release.
Some of the major bug fixes for this release are listed below. You can find the full list of closed issues and closed PRs at the repo with milestone 3.8.3.
AttemptPeriod
is 1 second or less. [#322]
There are no known issues for this release.