Skip to content

Releases: Tochemey/goakt

v2.10.2

20 Dec 14:00
Compare
Choose a tag to compare

v2.10.1

19 Dec 23:19
Compare
Choose a tag to compare

What's Changed

  • perf: change boundedmailbox implementation by @Tochemey in #559
  • refactor: renamed test proto messages for proper naming by @Tochemey in #562
  • fix: fix potential resource leakage by @Tochemey in #564
  • feat: add ActorSuspended event to the events stream by @Tochemey in #566
  • refactor: refactor deadletters by @Tochemey in #571
  • fix(bugs): enforce actors uniqueness creation in cluster by @Tochemey in #575

Full Changelog: v2.10.0...v2.10.1

v2.10.0

12 Dec 15:19
Compare
Choose a tag to compare

What's Changed

  • Refactor supervisor strategy. See breaking change note.
  • Modify testkit method Send signature to enforce that testing remains in the probe context by using the actor name instead of the PID
  • New testkit method SendSync to assert Ask-pattern messages has been added.
  • Actor restart implementation has been refactored. This is the new restart behavior:
    • Restart the given actor
    • Restart all direct children of the given actor that are alive before the actor is restarted. Grand children are excluded.
    • Respect hierarchical relationship between the direct children and the restarted actor in a parent-child relation.
    • The restarted actor should be added back to its parent if any.
  • Message processing implementation has been refactored to enhance the throughput of number of messages to handle and reduce resource consumption.
  • Unbounded priority mailbox added. Performance wise it seems ok for most use cases. Further work may enhance its performance.

BREAKING CHANGE

The main breaking in this release is how the supervisor strategy work now. The developer can easily create mappings between error types and supervisor strategy directives via the NewSupervisorStrategy method and SpawnOption. This allows fine-grained error handling during message processing by actor. In that regard the same actor can have one more ways of dealing with error types. Supervisor strategies are defined during the creation of actors. Therefore a faulty actor can be handled differently depending upon the error type. For instance with this new enhancement one can restart an actor with the following error type &runtime.PanicNilError{} and the same actor to be stopped on a different error type. More information on the readme.

The following methods are removed:

  • WithSupervisorDirective: removed from the actor system option
  • WithSupervisor: removed from the SpawnOption

Pull requests

Full Changelog: v2.9.1...v2.10.0

v2.9.1

01 Dec 15:30
219ddaf
Compare
Choose a tag to compare

What's Changed

  • Revert the DNS feature. Only IP addresses will be used due to this issues hashicorp/memberlist#147 and hashicorp/memberlist#162. At the moment DNS hinder cluster nodes discovery. The best option for the meantime is to set the host to "0.0.0.0" and then GoAkt will figure out the right IP address.
  • Refactor the whole actors storage using a tree-like structure
  • Add two methods to ActorSystem: Host and Port
  • Fully tested (cluster mode included)
  • Fix some bugs introduced from version v2.8.3 around clustering.

Commits

  • refactor(enhancement): refactor the actors data structure by @Tochemey in #543

Full Changelog: v2.9.0...v2.9.1

v2.9.0

28 Nov 21:41
Compare
Choose a tag to compare

New Features

  • ForwardTo on the ReceiveContext to forward message to a given actor when cluster mode is enabled. It passes a message from one actor to another actor by preserving the initial sender of the message.
  • RemoteForward on the ReceiveContext to pass a message from one actor to another actor on a remote machine by preserving the initial sender of the message.

Breaking Changes

  • Fix bad api design of the remoting methods which necessitated a breaking changes in the accepted arguments of the following methods which now accepts a from alongside the existing arguments
    • RemoteTell
    • RemoteAsk
    • RemoteBatchAsk
    • RemoteBatchTell

Commits and PRs

  • feat(enhancement): add ForwardTo and RemoteForward by @Tochemey in #538
  • fix(design): fix bad design of remoting call by @Tochemey in #539

Full Changelog: v2.8.3...v.2.8.4

v2.8.3

27 Nov 19:04
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.2...v2.8.3

v2.8.2

26 Nov 10:54
c07cce7
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.1...v2.8.2

v2.8.1

22 Nov 19:40
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.8.0...v2.8.1

v2.8.0

12 Nov 11:05
9760b03
Compare
Choose a tag to compare

Breaking Changes

  • WithReplyTimeout removed from the ActorSystem option
  • All ask-based methods on PID and ReceiveContext accept a mandatory timeout argument:
    • Ask`
    • SendSync`
    • BatchAsk
    • RemoteAsk
    • RemoteBatchAsk

Add-ons

  • Add Schedule and RemoteSchedule methods to Scheduler
  • ExpectMessage and ExpectMessageWithin in the testkit have been refactored
  • New remoting API that will allow to extend it with mTLS in the future
  • Abstract remoting into a nice struct called Remoting for client communication
  • Refactor the cluster client to accept concrete Node instance rather than mere array list of addresses. This help to tailor client connection appropriately to the given node
  • Ensure that every http client connection closes appropriately to avoid resource leakage.

What's Changed

  • feat: add Schedule and RemoteSchedule to scheduler by @Tochemey in #493
  • refactor: refactor ExpectMessage and ExpectMessageWithin by @Tochemey in #496
  • Fix typo by @autodidaddict in #503
  • refactor: cleanup the code to allow easy extensibility by @Tochemey in #505
  • refactor: use sync.Map for peersCache in actor system by @Tochemey in #512
  • refactor: remove system ask timeout and pass timeout to asks by @Tochemey in #515

New Contributors

Full Changelog: v2.7.1...v2.8.0

v2.7.1

12 Oct 14:31
Compare
Choose a tag to compare

What's Changed

Note

🎉🎉🎉This release enhances the performance of the framework drastically by the introduction of sync.Map and sync.Pool🎉🎉🎉

Full Changelog: v2.7.0...v2.7.1