omq 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 997f3d83d6ddc56d44341f69743f4f30b9e122f046718246de78da75969ec6fa
4
- data.tar.gz: 65f4f071d952c477630bfae4c25f136abfa79350099b58b1be4ca79ec500f2e3
3
+ metadata.gz: 851ef7f69ffe66641f2bd7ada2afdd0429867b9c518451b91c0ba0ea87706579
4
+ data.tar.gz: 8ae83e9074fb824907dd9b25f2826c895d7ed0541e55a0d3efa45266ab34461a
5
5
  SHA512:
6
- metadata.gz: d92503d56e3106987bda522497f42630d7999bca8ba1ddd5190129d0dc567c5dac1714a8f8566601ac1fa309d0e142f87936342667b36588f81e39f785a2b502
7
- data.tar.gz: bed4e86b9404a7ecc175c50ba85a2b7ad8daaea1490c8f39a449c8f92c197b039326d73708279838c1678a29235c7a5ff30c1bf36903306d452dccd743059b76
6
+ metadata.gz: '096166f698305a29706aebf68a3d22eb28565972cd04fbfe705ca01c63d153a2b0200c50b6d9e7d3a22dfbcb9c721f08372a6f8ffed13649dcab3396587aa330'
7
+ data.tar.gz: b7adf1b1f0a6b1d8f2beb6156174770e893ac03eb36d705a94c002011906e891f634527c53f7c44a2ce9176d95335a1845cbad63da5a97d0428252292213cf44
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.1 — 2026-04-07
4
+
5
+ - **Fix per-connection task tree** — recv pump, heartbeat, and reaper tasks
6
+ were spawned under `@parent_task` (socket-level) instead of the connection
7
+ task. When `@parent_task` finished before a late connection completed its
8
+ handshake, `spawn_pump_task` raised `Async::Task::FinishedError`. Now uses
9
+ `Async::Task.current` so per-connection subtasks are children of their
10
+ connection task, matching the DESIGN.md task tree.
11
+
3
12
  ## 0.14.0 — 2026-04-07
4
13
 
5
14
  - **Fix recv pump crash with connection wrappers** — `start_direct` called
@@ -35,7 +35,7 @@ module OMQ
35
35
  def run(io, as_server:, endpoint: nil, done: nil)
36
36
  conn = build_connection(io, as_server)
37
37
  conn.handshake!
38
- Heartbeat.start(@engine.parent_task, conn, @engine.options, @engine.tasks)
38
+ Heartbeat.start(Async::Task.current, conn, @engine.options, @engine.tasks)
39
39
  conn = @engine.connection_wrapper.call(conn) if @engine.connection_wrapper
40
40
  register(conn, endpoint, done)
41
41
  @engine.emit_monitor_event(:handshake_succeeded, endpoint: endpoint)
data/lib/omq/engine.rb CHANGED
@@ -290,7 +290,7 @@ module OMQ
290
290
  # @return [Async::Task, nil]
291
291
  #
292
292
  def start_recv_pump(conn, recv_queue, &transform)
293
- task = RecvPump.start(@parent_task, conn, recv_queue, self, transform)
293
+ task = RecvPump.start(Async::Task.current, conn, recv_queue, self, transform)
294
294
  @tasks << task if task
295
295
  task
296
296
  end
@@ -342,7 +342,7 @@ module OMQ
342
342
  # @return [Async::Task]
343
343
  #
344
344
  def spawn_pump_task(annotation:, &block)
345
- @parent_task.async(transient: true, annotation: annotation) do
345
+ Async::Task.current.async(transient: true, annotation: annotation) do
346
346
  yield
347
347
  rescue Async::Stop, Protocol::ZMTP::Error, *CONNECTION_LOST
348
348
  # normal shutdown / expected disconnect
data/lib/omq/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OMQ
4
- VERSION = "0.14.0"
4
+ VERSION = "0.14.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger