Releases: hazelcast/hazelcast-nodejs-client
Hazelcast Node.js Client 4.0.2
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 4.0.2 release.
New Features
- None.
Enhancements
- None.
Fixes
- Client connection and underlying socket could leak in case of connection timeout. #738
- Client could handle membership changes incorrectly on split brain. #733
- Reconnect to members periodical task was initialized too early leading to potential races. #707
- Connection could not be closed immediately on socket error. #704
- Failed client start could lead to resource leaks. #692
- Map query and Reliable Topic code samples were incorrect. #706
- Fix TS typings for network config. #699
- Client statistics were using incorrect client type identifier leading to issues in Hazelcast Management Center UI. #753
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 4.1.0
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 4.1.0 release.
New Features
- Blue/Green Failover Config: Client now supports blue/green deployment and disaster recovery (IMDG EE feature). #713
- External Smart Client Discovery via Load Balancer: Adds a new discovery mechanism that allows smart client to decide whether it needs to use public addresses for communication with members. As a result, Node.js client does not need a dedicated plugin to communicate with a cluster running on a cloud environment where members are exposed via a load balancer. #703
- Note: this feature requires Hazelcast IMDG 4.2 or higher version.
Enhancements
- Client now supports
IMap.setTtl()
operation. #741 - Client now supports
IAtomicLong.getAndDecrement()
operation. #640 - Map operations that insert and modify map entries now support
maxIdle
parameter. #742 - Client is now capable of reporting statistics to Hazelcast Management Center 4.2020.08 and newer. #751
- Client now avoids random connection delay when port not specified. In prior versions, the client was randomly trying 5701, 5702, and 5703 ports in any order when connecting to members, unless the port is specified in configuration. Now it starts with 5701 port to avoid extra delays in the most common deployment scenario. #735
- Default cluster connect timeout is increased from 20 seconds to 2 minutes in order to provide more reliable behavior in Kubernetes and similar environments where IP resolution or system restart can take around a minute. #744
- Default automated pipelining threshold is increased from 8KB to 64KB. #729
- Primitive number type is now used instead of
Long
for correlation ids. #624
Fixes
- Prevent client ending up with two addresses to same node when node is behind a private network. #713
- Client connection and underlying socket could leak in case of connection timeout. #739
- Client could handle membership changes incorrectly on split brain. #734
- Connection could not be closed immediately on socket error. #709
- Failed client start could lead to resource leaks. #689
- Map query and Reliable Topic code samples were incorrect. #708
- Fix TS typings for network config. #700
Breaking Changes
- None.
Known Issues
- None.
Contributors
We would like to thank the contributors from our open source community who worked on this release:
Hazelcast Node.js Client 4.0.1
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 4.0.1 release.
New Features
- None.
Enhancements
- Listener deregistration was made more fault-tolerant. Now, it returns immediately and proceeds all server-side calls in the background. #627
Fixes
CountDownLatch#countDown
could give up early on timeout error. #620IMap
's lock-related calls may throwOperationTimeoutError
when a member dies. #622- Some public API methods with
Promise<void>
return type could return Promise with wrong non-void resolve type. #633 FencedLock
'slock
/tryLock
methods did not clean up CP session resources on unexpected error. #642- Session-aware
Semaphore
was not properly releasing CP session in case of exception handling. #660 - Java API code snippets and JAAS code sample were using 3.12 API instead of the 4.0 one. #669
- Incorrect splice usage in
IMap#getAll
call for maps with Near Cache. #672 - Client was not waiting for backup acks listener registration on start. #682
- Listener registration did not wait for all connections. #682
- Client had some floating promises which could lead to unhandled promise rejections. #686
- Client did not clean up resources on failed start, i.e. if one of client start's steps failed, there could be active background tasks left. #692
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 3.12.4
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 3.12.4 release.
New Features
- None.
Enhancements
- Code Sample Code sample and documentation for Hazelcast Cloud is now up to date. #550
- npm artifact npm artifact's size is now reduced significantly. #654
Fixes
getDistributedObjects()
call could lead to unhandled promise rejection. #540- Client's member list could be broken by Hot Restart. #610
- Lock call may throw
OperationTimeoutError
when a member dies. #618 - Pending invocations were not rejected or retried on connection close. #662
redoOperation
option was not implemented properly. #662- Incorrect
splice
usage inIMap#getAll
call for maps with Near Cache. #670
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 4.0.0
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 4.0.0 release.
New Features
- Hazelcast IMDG 4.0 Changes: Client protocol enhancements, architectural improvements, serialization improvements. #522
- Ownerless Client: Simpler design to track member leaves and joins to the cluster. #522
- CP Subsystem Support: New concurrency APIs including
AtomicLong
,AtomicReference
,FencedLock
,Semaphore
, andCountDownLatch
. Hazelcast IMDG 4.0 introduces CP Subsystem powered by Raft consensus protocol. It provides CP concurrency primitives with respect to the CAP principle, i.e., they always maintain linearizability and prefer consistency to availability during network partitions and client or server failures. #577, #580, #582, #591, #593 - Backup Acknowledgment: Node.js client now supports backup acks (aka boomerang backups). So far the client was waiting for the sync backups to complete on the member. Boomerang backups decrease the number of network hops, thus improving the performance. #573
Enhancements
- Configuration Redesign: Programmatic configuration was simplified. The configuration is now represented with a plain object. #554
- Idiomatic Node.js API: Redesign of the API in a way that Node.js developers used to. #563
- Performance: The number of allocated
Buffer
s was reduced for writes. #585, #605 - Private APIs were removed from the documentation. #568
- Default serialization now supports native
Buffer
type. #572 - Default serialization now supports Java
UUID
type. #586 - New
serverStackTrace
property was added intoHazelcastError
class. It contains server-side stack trace elements and may be useful for debugging and diagnostics. #576 - The client now uses native promises instead of promises provided by
bluebird
library. #587 - Built-in benchmark now includes warm-up phase and support command-line arguments. #596
Fixes
- Redo configuration option was ignored by the client. It is handled correctly now. #590
- The member list could be broken after Hot Restart enabled member restart. Now the client handles the restart correctly. #575
- Previously
client.getDistributedObjects()
call could lead to an unhandled promise rejection. #522
Breaking Changes
- Minimal required Node.js version is now 10. #574
- AP-based concurrency primitives (
Lock
,Semaphore
,AtomicLong
) were removed from the client. #522 - Programmatic configuration API was changed to work with plain objects and declarative configuration support was removed. Certain configuration options were renamed to match option names from the old declarative configuration and Java client's XML/YAML configuration. #554
- Client API was improved to a more idiomatic JS way. This means introducing properties instead of methods where possible and similar changes. #563
Buffer
type is not used for mappingbyte[]
Java type. #572
Known Issues
- Client statistics format in Node.js client v4.0 is compatible with Management Center v4.0. Support for format compatible with Management Center v4.2020.08 and newer will be added in one of the upcoming minor releases of the client. #556
4.0.0-alpha.1
- Changed minimal required Node.js version to 10 (#574)
- Simplified programmatic configuration and removed declarative configuration support (#554)
- Simplified client API (#563)
- Removed private APIs from documentation and reduced npm artifact size (#568)
- Added
Buffer
type support (#572) - Added boomerang backups support (#573)
- Added serverStackTrace property in HazelcastError class (#576)
- Removed string serialization policy configuration option (#532)
- Removed AP-based concurrency primitives (AtomicLong, Lock, Semaphore) (#522)
- Added support for CP-based AtomicLong (#577)
Note: this is an alpha release, so Hazelcast client API is a subject to change.
Hazelcast Node.js Client 3.12.3
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 3.12.3 release.
New Features
- None.
Enhancements
-
RestValue Serializer: Serialization service is now able to handle RestValue objects that are inserted via the REST endpoints. #528
-
LOADED Event: When an entry is loaded from MapStore, the client now emits a LOADED event. #495
-
README.md: README.md is simplified and the full documentation is moved to DOCUMENTATION.md. #526
Fixes
- None.
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 3.12.2
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 3.12.2 release.
New Features
- None.
Enhancements
- AWS PrivateLink Compatibility: Hazelcast Cloud Discovery is now also compatible with the AWS PrivateLink feature to provide connectivity between VPCs. #513
Fixes
-
A race condition that makes getting not-fully-initialized data structures possible when concurrent calls to get data structure is made is fixed. #512
-
Incorrect code samples and README sections are updated. #498, #504
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 3.12.1
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 3.12.1 release.
New Features
- Automated Pipelining: With this new feature, all operations are pushed into an internal queue and the client tries to send them in batches to reduce the number of
Socket.write()
calls. #481
Enhancements
- Performance: Unnecessary buffer allocations and copying while reading data from the socket is removed where possible. #481
Fixes
- Non-ASCII characters in data structure names was leading to invalid names on the member side because the client was using character count as the length of string in bytes mistakenly. #491
Breaking Changes
- None.
Known Issues
- None.
Hazelcast Node.js Client 3.12
This document includes the new features, enhancements, and fixed issues for Hazelcast Node.js Client 3.12 release.
New Features
- HazelcastJsonValue: Starting with Hazelcast IMDG 3.12, one can query JS objects stored inside the distributed data structures. Querying can also be made with HazelcastJsonValue using JSON strings. #468
Enhancements
-
Performance: Buffer allocations are revised and string serialization/deserialization methods are replaced with standard API calls. With these changes, overall performance of the client is significantly increased. There is up to 7000% throughput improvement on the Imap#get benchmark with 100KB string values. #473
-
Custom Credentials: README is updated with a basic sample of custom credentials. Also, an extensive JAAS based custom credentials code sample is provided. #466
-
Benchmarks: Self-throttling benchmarks are updated to reflect the true performance of the client. #467
Fixes
- Formerly, lifecycle event changes was not logged. Now, they are logged with the info level #471
- Missing statistics like
os.processCpuTime
are added and some statistics collection mechanisms are updated. #451 - Client connection was not sending ping to member when it is constantly reading but not writing any data. #450
Breaking Changes
- String Serialization: Hazelcast Node.js client now follows UTF-8 standard (RFC 3629) for string data type serialization of 4 byte UTF characters. This may lead to compatibility issues with Hazelcast IMDG 3.x and other client libraries for string and JSON values. See String Serialization section for more information.
Known Issues
None.