Skip to content

Releases: general-CbIC/poolex

[1.0.0] Support any `GenServer.name()` as `pool_id`

23 Sep 14:02
Compare
Choose a tag to compare

What's changed

Changed

  • Monitoring implementation now uses Agent instead of :ets. It's needed to be more flexible in pool naming.
  • The pool_id can now be any valid GenServer.name(). For example, {:global, :biba} or {:via, Registry, {MyRegistry, "boba"}}.

[0.10.0] Change pool size in runtime

26 Aug 12:21
Compare
Choose a tag to compare

What's changed

Added

  • Added functions add_idle_workers!/2 and remove_idle_workers!/2 for changing the count of idle workers in runtime.

Changed

  • Refactored private start_workers function. It no longer accepts monitor_id as it already is in the state.
  • Updated telemetry dependency.

[0.9.0] Pool size metrics

24 Apr 09:01
Compare
Choose a tag to compare

What's Changed

Pool size metrics (using telemetry) were added. How to use them is described here: Working with metrics guide.

To enable pool size metrics, you need to set the pool_size_metrics parameter to true on the pool initialization:

children = [
  {Poolex, 
    pool_id: :worker_pool,
    worker_module: SomeWorker,
    workers_count: 5,
    pool_size_metrics: true}
]

[0.8.0] Merge `run` interfaces

30 Aug 13:29
Compare
Choose a tag to compare

What's Changed

Breaking changes

  • Option :timeout renamed to :checkout_timeout.

    • Reason: This option configures only the waiting time for worker from the pool, not the task's work time. This naming should be more understandable on the call site.

      # Before
      Poolex.run(:my_awesome_pool, fn worker -> some_work(worker) end, timeout: 10_000)
      
      # After
      Poolex.run(:my_awesome_pool, fn worker -> some_work(worker) end, checkout_timeout: 10_000)
  • Poolex.run/3 returns tuple {:error, :checkout_timeout} instead of :all_workers_are_busy.

    • Reason: It is easier to understand the uniform format of the response from the function: {:ok, result} or {:error, reason}.
  • Poolex.caller() type replaced with struct defined in Poolex.Caller.t().

    • Reason: We need to save unique caller references.
  • Poolex.run!/3 was removed in favor of Poolex.run/3. The new unified function returns {:ok, result} or {:error, :checkout_timeout} and not handles runtime errors anymore.

    • Reason: We should not catch errors in the caller process. The caller process itself must choose how to handle exceptions and exit signals.

Fixed

  • Fixed a bug when workers get stuck in busy status after checkout timeout.

[0.7.6] Handling caller's death

03 Aug 08:34
Compare
Choose a tag to compare

What's Changed

Fixed

  • Fixed a bug with workers stuck in busy status. Added caller monitoring. #56

[0.7.5] Fixed breaking bug

31 Jul 07:52
Compare
Choose a tag to compare

What's Changed

Fixed

  • Fixed breaking bug with releasing workers in #55. Version 0.7.4 retired.

[0.7.4] Fixed processing of restarting a fallen worker

23 Jul 07:44
Compare
Choose a tag to compare

What's Changed

Fixed

  • Fixed a bug where a restarted worker was not automatically dispatched to pending callers #54.

Changed

  • Upgraded ex_doc from 0.29.4 to 0.30.3

[0.7.3] Fixed bugs

21 Jun 12:23
Compare
Choose a tag to compare

What's Changed

Fixed

  • Fixed a bug with an incorrect number of running workers when specifying a zero or negative number in the workers_count parameter by @alexcastano in #49

[0.7.2] Improve the shutdown process

11 Jun 08:41
Compare
Choose a tag to compare

What's Changed

Fixed

Changed

  • Implementation settings are stored in the pool process state instead of the ETS table. This makes the testing process easier and removes unnecessary entities.

New Contributors

[0.7.1] Improve the shutdown process

03 Jun 06:38
Compare
Choose a tag to compare

Fixed

  • Fix the shutdown process: stop workers before the pool. Issue: #44.