Releases: hazelcast/hazelcast-go-client
v1.0.0
Release Notes
This is the first stable release of Hazelcast Go Client. The client was revamped to support Hazelcast 4.x and 5.x and have a more idiomatic API.
Here are the new features and changes since the last preview release.
New features
- Connection strategy configuration.
- Load balancer implementation.
- Map aggregations.
- Client configuration can be unmarshalled from JSON.
Changes
- Zero value of
hazelcast.Config
is the default configuration. - Removed
Config
suffix from configuration sections. - Unexported these configuration fields which cannot be unmarshalled from JSON:
config.ClusterConfig.SSLConfig.TLSConfig
,config.SerializationConfig.GlobalSerializer
,config.SerializationConfig.CustomSerializers
,config.SerializationConfig.GlobalSerializer
,config.SerializationConfig.IdentifiedDataSerializableFactories
,config.SerializationConfig.PortableFactories
,config.SerializationConfig.ClassDefinitions
- Changed configuration items which are of type
time.Duration
totypes.Duration
in order to support human readable duration values in JSON configuration, such as5s
or10h
. config.ClusterConfig.SmartRouting
(defaulttrue
) is renamed toconfig.Cluster.Unisocket
(defaultfalse
) in order to support zero value ofhazelcast.Config
.config.SerializationConfig.BigEndian
(defaulttrue
) is renamed toconfig.Serialization.LittleEndian
(defaultfalse
) in order to support zero value ofhazelcast.Config
.- Moved
config.ClusterConfig.Address
toconfig.Cluster.Network.Addresses
. - Moved
config.ClusterConfig.ConnectionTimeout
toconfig.Cluster.Network.ConnectionTimeout
. - Moved
config.ClusterConfig.SSLConfig
toconfig.Cluster.Network.SSL
. - Moved
Username
andPassword
settings inconfig.ClusterConfig.SecurityConfig
toconfig.Cluster.Security.Credentials
. - Renamed
config.SerializationConfig.AddPortableFactory
function toconfig.Serialization.SetPortableFactories
. - Renamed
config.SerializationConfig.AddIdentifiedSerializableFactory
function toconfig.Serialization.SetIdentifiedSerializableFactories
. - Renamed
config.SerializationConfig.AddClassDefinition
function toconfig.Serialization.SetClassDefinitions
. - Idiomatic errors: You can use
errors.Is
function to check whether an expected error is returned from Go client functions. Checkhzerrors/errors.go
for the list of errors client functions return. hazelcast.StartNewClient
,hazelcast.StartNewClientWithConfig
andhazelcast.Shutdown
functions take acontext.Context
parameter.hazelcast.LifecycleStateClientConnected
andhazelcast.LifecycleStateClientDisconnected
constants are renamed tohazelcast.LifecycleStateConnected
andhazelcast.LifecycleStateDisconnected
respectively.- Introduced
hazelcast.EntryEventType
type instead ofint32
EventType
inEntryNotified
struct. - Unexported
hzerrors.ServerError
. - Renamed
map.LockWithLeaseTimeout
function tomap.LockWithLeaseAndTimeout
. - Changed the signature of
replicatedMap.AddEntryListener
to have an extrabool
parameter to control including values. - Changed the name and signature of
queue.AddListener
toqueue.AddItemListener
and to have an extrabool
parameter to control including values. - Renamed
topic.AddListener
totopic.AddMessageListener
. - Removed
hazelcast.IndexValidationError
. Expecthazelcast.ErrIllegalArgument
instead. - Changed signature of
replicatedMap.PutAll
function.
Fixed Issues
- Hazelcast Cloud integration: The client attempts to connect to internal addresses when the cluster is re-started.
- Retryable errors.
- Field names with runes outside of ASCII character range in Portable serialization are encoded as expected.
v1.0.0-preview.4
Release Notes
This is the fourth preview release of Hazelcast Go Client.
Here are the new features and changes since the last preview version.
New features
- PNCounter distributed data structure,
- Go context support for all distributed data structures.
- Reentrant locks for maps.
- Hazelcast Management Center integration.
- Hazelcast Cloud integration.
- External smart client discovery (Requires Hazelcast 4.2 or above).
- Distributed object event listeners.
Changes
- All distributed data structure functions require a Go context as the first parameter. Passing
nil
is as the context is discouraged but allowed. - Changed the signature of
hazelcast.Map.putAll
, so it's a variadic function which takes any number oftypes.Entry
values, instead of taking a[]types.Entry
. Don't forget to use the spread operator when passing a slice:m.PutAll(ctx, entries...)
. cluster.Address
is now a type based onstring
.- Removed
cluster.Member
type. hazelcast.List.ToSlice
was renamed tohazelcast.List.GetAll
.hazelcast.Queue.Iterator
was renamed tohazelcast.Queue.GetAll
.- Exported all fields of
types.SimpleEntryView
.
Known Issues
- Hazelcast Cloud integration: The client attempts to connect to internal addresses when the cluster is re-started. This will be fixed before Preview-5.
v1.0.0-preview.3
Release Notes
This is the third preview release of Hazelcast Go Client.
Here are the new features and changes since the last preview version.
New features
- Set distributed data structure,
Changes
- When the client is not ready, it returns
hazelcast.ErrClientNotActive
instead ofhazelcast.ErrClientNotReady
. serialization.ClassDefinition
is public.
Improvements
- Memory utilization is improved and number of allocations are decreased.
v1.0.0-preview.2
Release Notes
This is the second preview release of Hazelcast Go client.
Here are the new features and changes since the last preview version.
New features:
- IList distributed data structure
Changes:
hazelcast.ConfigBuilder
is removed. Usehazelcast.Config
instead.- Signatures of serialization functions have changed to remove returned
error
s. If your serialization code needs to fail, simplypanic
. Panics are recovered and converted toerror
s. hzerrors
package is public.
Improvements:
- Serialization performance is increased, especially for large payloads.
- Memory utilization is improved and number of allocations are decreased.
- Heartbeat service is enabled.
Fixes:
- Fixed a regression introduced in Preview 1 which limited the message size to 8KBs.
- Fixed Non-retryable errors.
Destroy
function of DSSs removes corresponding proxies from the cache.
v1.0.0-preview.1
Release Notes
This is the first preview release of Hazelcast Go Client for Hazelcast 4.x.
The first preview release of the Go client for Hazelcast 4.x has the following features:
New features
- Map,
- Replicated Map,
- Queue
- Topic
- Distributed queries via predicates. Documentation
- Lifecycle and cluster membership event listeners.
- Smart routing
- Ownerless client.
- JSON, identified and portable serialization.
- SSL connections.
Expect breaking changes in the following areas:
- Configuration
- Map lock functions
0.6.0
Breaking Changes
- None.
New Features
- None.
Bug Fixes
- None.
Improvements
0.5
Breaking Changes
- Serialization
DataInput
andPortableReader
APIs are changed. They do not return an error anymore. See #426.
New Features
- Logging Configuration
- Hazelcast JSON support
Bug Fixes
- Statistics error for windows is fixed. #448.
- Data race in PN counter is fixed. #432.
- Sockets are closed correctly after shutdown. #429.
- The statistics update process wasn't correct. #402.
Improvements
0.4
Upgrade Steps
- Make sure you have Go 1.9+.
Breaking Changes
- Change
hazelcast.Instance
interface ashazelcast.Client
. #357. - MessageListener's OnMessage method should return an error. #351.
- AddHeartbeatListener is removed. #360.
- GetMemberByUUID and GetMember methods shouldn't be in cluster service interface. They are removed. #315.
- SetInvocationTimeout, SetHeartbeatInterval and SetHeartbeatTimeout are removed from config as they dont exist in Java Client. #281.
New Features
- SSL/TLS Support With Mutual Authentication(Enterprise)
- Custom Credentials
- Reliable Topic
- Hazelcast Cloud Discovery(Enterprise)
- Statistics
Bug Fixes
- Change
hazelcast.Instance
interface ashazelcast.Client
. #357. - Possible member addresses that were tried to connect to server could have duplicate addresses. #363.
- Update last write time of a connection if there wasnt any error during the writing process. #361.
- Client connection should detect that a connection is reading but not sending any data to server to detect heartbeat idle case. #353.
- AddHeartbeatListener is removed. #360.
- When server returns an error client was returning it as a string. When they need to look up for a certain thing in the error message they needed to do string comparison. ServerError interface is added, which has error className, errorCode, stackTrace etc. #352.
- SetInvocationTimeout, SetHeartbeatInterval and SetHeartbeatTimeout are removed from config as they dont exist in Java Client. #281.
- MessageListener's OnMessage method should return an error. #351.
- Default partition table update interval was 5 seconds instead of 10. #341.
- There was a race condition in cluster service. It was possible that client would try to access reconnectChan when client is shutdown. shutdown and onConnectionClosed methods should be synced. #334.
- Client was hanging because clusterService was using a global waitgroup. The waitgroup should be unique per cluster service. Initial fetch for partition table is added to partition service like Java Client.#334.
- Map TryPutWithTimeout method was missing. #320.
- Multimap Delete method was missing. #317.
- GetMemberByUUID and GetMember methods shouldn't be in cluster service interface. They are removed. #315.
- Lifecycle states (Starting, Started, Connected, Disconnected, Shuttingdown, Shutdown) werent public. #314.
- Connection timeout wasn't used while dialing. #306.
- If a data was serialized by an unknown serializer and if it was tried to be deserialized on Go side, it would panic..#275.
Improvements
0.3
This document includes the new features, enhancements, and fixed issues for Hazelcast Go Client 0.3 release.
New Features
- CRDT Counter
- ID Generator backed by Flake IDs.
- Projections & Aggregations
Enhancements
- Code is heavily refactored according to https://github.com/golang/go/wiki/CodeReviewComments
- Invocation service and Connection manager are refactored according to Java Client.
- Go subroutine leakage is fixed.
Fixes
0.2
This document includes the new features, enhancements, and fixed issues for Hazelcast Go Client 0.2 release.
New Features
New Distributed Structures implemented
- Queue
- Set
- List
- MultiMap
- ReplicatedMap
- RingBuffer
- Topic