wurk 1.7.4 → 1.7.5

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: 33b583b405b2f2cf26f62fea6c6551d0f6900c3d72879ec6968dd7c82c976f26
4
- data.tar.gz: fe626c58ce7bd322765cd0df1f9655097647ab2fdcd5b9aa4200012d9dc09825
3
+ metadata.gz: ac61be234c0359ccb0761df401c351021317cf2a5ae162e2329dcd94d7b8b4af
4
+ data.tar.gz: 00e7d69e0a3d440f1bf335ebbeeceb80b7e93ec1f82a6f48fcc189f54c4737ab
5
5
  SHA512:
6
- metadata.gz: 177b520c3e822141886b62d740dfb88e16fc984bd5c21e949c039f5ecab578121d1e311e01dc917197257a419bb82ee1de23375a15c953b721de74ff22a3fc93
7
- data.tar.gz: a14fb212831e08062df9211bdb2f4e78c6750d7b0380362c735985a662de11da8a7ea8cde08cb7df30c55c44279e959081a39b4e1e330b5129b07d6536a5b4ae
6
+ metadata.gz: bd52c4819554b5cad428d2514379005027aaa21cddf679ae89974edd12568075711e5dbc41b86da656f7df4a6b28ccde88cd421952002cd9966ec0e72b7841cd
7
+ data.tar.gz: 796f59f291295b5681a920cb5c9d04baa70fb416afc3246db55d1ebbd009f5a6f348d785b57c80b1dd9a07dc249771b67b3bb9203927e41becf0484cf27a6c74
data/lib/wurk/swarm.rb CHANGED
@@ -360,7 +360,20 @@ module Wurk
360
360
  # stall signal delivery if the pipe fills. `exception: false` returns
361
361
  # :wait_writable instead of raising when full (drop the coalescible
362
362
  # duplicate); a closed pipe during shutdown is ignored too.
363
+ #
364
+ # The owner check is what keeps ONE child's signal from draining the whole
365
+ # fleet. A forked child inherits both this trap and the parent's live pipe,
366
+ # and `fork_child` cannot drop them until `Process.fork` RETURNS — the
367
+ # `_fork` hook chain runs child-side before that, so there is a window
368
+ # where an operator's `kill <child_pid>` writes TERM into the PARENT's
369
+ # supervise loop and drains every sibling. Measured: with that chain slowed
370
+ # the way a loaded box does, TERMing a single child killed the supervisor
371
+ # and all of it. Comparing pids instead closes it with no window at all —
372
+ # the inherited trap is inert in the child from its first instruction,
373
+ # because `@owner_pid` was stamped before the fork.
363
374
  def emit_signal(sig)
375
+ return unless owner?
376
+
364
377
  @signal_write&.write_nonblock("#{sig}\n", exception: false)
365
378
  rescue ::IOError, ::Errno::EPIPE, ::Errno::EBADF
366
379
  nil
data/lib/wurk/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wurk
4
- VERSION = '1.7.4'
4
+ VERSION = '1.7.5'
5
5
  end
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "1.7.4",
3
- "timestamp": "2026-08-27T19:02:36.342Z"
2
+ "version": "1.7.5",
3
+ "timestamp": "2026-08-27T21:26:34.924Z"
4
4
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wurk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.4
4
+ version: 1.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - developerz.ai