Releases: devsisters/shardcake
v2.4.2
This release fixes a bug that was introduced in 2.3.2, upgrading is strongly recommended if you use any version after that. It can cause a pod to lose track of some shards that are assigned to them, triggering EntityIsNotManagedByThisPod
errors instead of handling messages.
What's Changed
- Prevent a potential race condition that can cause self assignments to be replaced by @ghostdogpr in #148
Full Changelog: v2.4.1...v2.4.2
v2.4.1
The main change from this release is that on register
, the Shard Manager will check the Health API to make sure the pod is alive before proceeding. That allows detecting early if your Health API is not working as intended.
What's Changed
- Shard Manager: only allow alive pods to register by @yoohaemin in #146
- Keep the shard ids sorted for logging and api by @yoohaemin in #147
- Expose current pod assignments by @yoohaemin in #145
v2.4.0
This release updates dependencies, in particular it now depends on stable zio-http 3.0.x.
It also changes the behavior of simulateRemotePods
, before only sent messages were serialized, now it will use the actual sharding protocol to send messages to itself so that both sent messages and received messages are always serialized.
Finally, we added a regular check of the pods health in order to detect removed pods faster, in particular in scenario with low amounts of messages.
What's Changed
- Upgraded Caliban and ZIO versions by @ghostdogpr in #137 #143
- Added a check of the health of all pods at regular intervals by @nox213 in #140
- Changed behavior of
simulateRemotePods
to use the Pods API by @ghostdogpr in #142 - Removed unused imports by @nox213 in #138
v2.3.2
This release fixes an potential memory leak when using streaming replies with long-running actors. Upgrading is recommended if you use streaming (no problem with single send
).
What's Changed
- Fixed a promise leak when using streaming with long-running actors by @ghostdogpr in #136
- Kept assignments got from shard manager in
updateAssignments
by @pancho-bo in #135
v2.3.1
What's Changed
v2.3.0
This release brings improvements to the message streaming capabilities. Before, it was only possible to send a single message and receive either a single response or a stream of responses. Now we support sending streams as well.
Messenger
now has 4 different methods:
send
for sending a single message and receiving a single responsesendStream
for sending a stream of messages without receiving any response (breaking change: this method was previously used for receiving a stream, you should usesendAndReceiveStream
instead for that purpose)sendAndReceiveStream
for sending a single message and receiving a stream of responsessendStreamAndReceiveStream
for sending a stream of messages and receiving a stream of responses
With this release also come the following dependency upgrades:
- zio to 2.1.1
- sttp to 3.9.6
- caliban to 2.6.0
- zio-http to 3.0.0-RC6
- zio-grpc to 0.6.2
- grpc-netty to 1.63.0
What's Changed
- Bump Caliban to 2.6.0 by @frekw in #125
- Add terminology diagram to documentation by @calvinlfer in #126
- Upgrace grpc lib by @ghostdogpr in #127
- Allow sending streams and not just receiving them by @ghostdogpr in #121
New Contributors
- @calvinlfer made their first contribution in #126
Full Changelog: v2.2.7...v2.3.0
v2.2.7
This release contains the following changes:
- Fixed the
assignedShards
metric (missed it in 2.2.6) #124 by @ghostdogpr
v2.2.6
This release contains the following changes:
- Fixed the
unassignedShards
metric and renamed singletons metric tag fromname
tosingleton_name
#123 by @ghostdogpr
v2.2.5
This release contains the following changes:
- Allow setting a custom
labelSelector
in the k8s health api to filter pods. This is useful if you have several deployments in the same cluster and a given IP address might be reused by another service/environment. #119 by @ghostdogpr
v2.2.4
This release contains the following changes:
- Made the grpc server shutdown timeout configurable. By default, zio-grpc was using
shutdown
thenawaitTermination
without any timeout, which prevents new connections and wait for existing connections to end. The problem is that if those connections are grpc streams, we are waiting forever. Instead, we useawaitTermination
with a timeout, then callshutdownNow
to force the grpc server to shutdown and interrupt the grpc streams. #117 by @ghostdogpr