Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Sep 29, 2025

Bumps process_hub from 0.3.3-alpha to 0.4.0-beta.

Release notes

Sourced from process_hub's releases.

v0.4.0-beta - 2025-09-29

This release introduces improvements to ProcessHub's API design and internal architecture. The major focus is on enhancing the developer experience with new promise-based return types and improving system performance with experimental load balancing capabilities.

This release maintains backward compatibility with the main ProcessHub module while introducing new patterns that will become the standard in future versions.

Added

  • ProcessHub.StartResult module which can be used to format and manipulate the results of process startups. This struct is returned by the ProcessHub.Future.await/1 function.
  • ProcessHub.StopResult module which can be used to format and manipulate the results of process shutdowns. This struct is returned by the ProcessHub.Future.await/1 function.

Fixed

  • Nested child processes were returned using ProcessHub.Strategy.Redundancy.Replication strategy. The result is now properly formatted.
  • Using the async_wait option on process startup or shutdown now returns a promise that can be awaited instead of a function. This avoids polluting the caller's mailbox if the caller does not await the result. It also prevents the caller from receiving messages from their mailbox before executing the await function. The new :await_timeout option specifies a timeout for the spawned collector process to wait before automatically terminating itself.
  • Gossip synchronization was sending empty messages during cluster updates.
  • Race condition when multiple nodes were started simultaneously and the cluster information was not seen the same by all nodes.
  • ProcessHub.Strategy.PartitionTolerance.StaticQuorum with startup_confirm: true shuts down the distributed supervisor when in partition mode. When new nodes joining the cluster this leads to errors when trying to call the dead distributed supervisor process.

Changed

  • Internal messaging system redesigned: ProcessHub no longer converts hub_id atoms to other process-specific atoms internally. Instead, it uses Registry with tuples for message dispatching. This change:
    • Eliminates the overhead of atom conversion
    • Prevents dangerous dynamic atom generation
    • Reduces the number of dynamic atoms created per hub_id
    • Breaking change: Users directly accessing ProcessHub service modules (instead of the main ProcessHub module) may experience issues. Users who only use the main ProcessHub module are unaffected.
  • All public API functions defined in the ProcessHub module now call the coordinator process instead of calling the services directly. This avoids the potential issue of generating new atoms when calling those functions with a hub_id that is not known to the system.
  • Calling ProcessHub.start_child/3, ProcessHub.start_children/3, ProcessHub.stop_child/3, ProcessHub.stop_child/3 with the awaitable: true option (or deprecated async_wait: true) now returns a ProcessHub.Future.t() struct that can be awaited instead of regular anonymous function. Calling ProcessHub.Future.await/1 will either return ProcessHub.StartResult.t() or ProcessHub.StopResult.t() instead of tuples.

Deprecated

  • The option :async_wait is deprecated in favor of :awaitable. This option will be removed in the 0.5.x version.
  • ProcessHub.await/1 is deprecated in favor of ProcessHub.Future.await/1. The ProcessHub.await/1 function will be removed in the 0.5.x version or replaced with the new implementation.

Soft deprecations

  • ProcessHub.which_children/2 is soft deprecated. Use ProcessHub.process_list/2 instead.

Breaking changes

  • If you are defining your own custom distribution strategy, you must update the belongs_to/4 to accepts a list of child ids instead of a single child id. This allows the strategy to optimize the node selection for multiple children at once.
Changelog

Sourced from process_hub's changelog.

v0.4.0-beta - 2025-09-29

This release introduces improvements to ProcessHub's API design and internal architecture. The major focus is on enhancing the developer experience with new promise-based return types and improving system performance with experimental load balancing capabilities.

This release maintains backward compatibility with the main ProcessHub module while introducing new patterns that will become the standard in future versions.

Added

  • ProcessHub.StartResult module which can be used to format and manipulate the results of process startups. This struct is returned by the ProcessHub.Future.await/1 function.
  • ProcessHub.StopResult module which can be used to format and manipulate the results of process shutdowns. This struct is returned by the ProcessHub.Future.await/1 function.

Fixed

  • Nested child processes were returned using ProcessHub.Strategy.Redundancy.Replication strategy. The result is now properly formatted.
  • Using the async_wait option on process startup or shutdown now returns a promise that can be awaited instead of a function. This avoids polluting the caller's mailbox if the caller does not await the result. It also prevents the caller from receiving messages from their mailbox before executing the await function. The new :await_timeout option specifies a timeout for the spawned collector process to wait before automatically terminating itself.
  • Gossip synchronization was sending empty messages during cluster updates.
  • Race condition when multiple nodes were started simultaneously and the cluster information was not seen the same by all nodes.
  • ProcessHub.Strategy.PartitionTolerance.StaticQuorum with startup_confirm: true shuts down the distributed supervisor when in partition mode. When new nodes joining the cluster this leads to errors when trying to call the dead distributed supervisor process.

Changed

  • Internal messaging system redesigned: ProcessHub no longer converts hub_id atoms to other process-specific atoms internally. Instead, it uses Registry with tuples for message dispatching. This change:
    • Eliminates the overhead of atom conversion
    • Prevents dangerous dynamic atom generation
    • Reduces the number of dynamic atoms created per hub_id
    • Breaking change: Users directly accessing ProcessHub service modules (instead of the main ProcessHub module) may experience issues. Users who only use the main ProcessHub module are unaffected.
  • All public API functions defined in the ProcessHub module now call the coordinator process instead of calling the services directly. This avoids the potential issue of generating new atoms when calling those functions with a hub_id that is not known to the system.
  • Calling ProcessHub.start_child/3, ProcessHub.start_children/3, ProcessHub.stop_child/3, ProcessHub.stop_child/3 with the awaitable: true option (or deprecated async_wait: true) now returns a ProcessHub.Future.t() struct that can be awaited instead of regular anonymous function. Calling ProcessHub.Future.await/1 will either return ProcessHub.StartResult.t() or ProcessHub.StopResult.t() instead of tuples.

Deprecated

  • The option :async_wait is deprecated in favor of :awaitable. This option will be removed in the 0.5.x version.
  • ProcessHub.await/1 is deprecated in favor of ProcessHub.Future.await/1. The ProcessHub.await/1 function will be removed in the 0.5.x version or replaced with the new implementation.

Soft deprecations

  • ProcessHub.which_children/2 is soft deprecated. Use ProcessHub.process_list/2 instead.

Breaking changes

  • If you are defining your own custom distribution strategy, you must update the belongs_to/4 to accepts a list of child ids instead of a single child id. This allows the strategy to optimize the node selection for multiple children at once.
Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [process_hub](https://github.com/alfetahe/process-hub) from 0.3.3-alpha to 0.4.0-beta.
- [Release notes](https://github.com/alfetahe/process-hub/releases)
- [Changelog](https://github.com/alfetahe/process-hub/blob/master/CHANGELOG.md)
- [Commits](alfetahe/process-hub@v0.3.3-alpha...v0.4.0-beta)

---
updated-dependencies:
- dependency-name: process_hub
  dependency-version: 0.4.0-beta
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file elixir Pull requests that update Elixir code labels Sep 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file elixir Pull requests that update Elixir code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant