solid_objects 0.17.3 → 0.17.4

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: 218b1090ca466db8385017c23f98120d78b605b1db03a7ad69e82156c7669fe5
4
- data.tar.gz: f0deae94f1fa479882d3d47bc5205c30d30b30c3aadfee663959ad7e787ff265
3
+ metadata.gz: 3d26650acca584b91a9933ee43ce1aeb310200d240994040a3ae8c8ea81dea1b
4
+ data.tar.gz: e97ad7100bd3822b005c571c2479ab833b65082ad0a249fd88c619a83da62980
5
5
  SHA512:
6
- metadata.gz: 97c597751ea4330ec9857faec8bc4ef8d3449891f29abd6d99fe13709e785971c42e6d3faf24ab02835685857104ad82e20df42088a0b84a32573a8519177368
7
- data.tar.gz: db9450e6f7657b630cf6d6c2eb191a57614690ef7f34d3d47fea079a5bd388d1b7bc31b84ac22667b6cdd296f0a426e29f00acb20b3473fe53af0e656d146b28
6
+ metadata.gz: c89b65cc0a103afb36bdc8570e55ab53adcd21fa59118d34291c2e174e9c0fc603cdf4c8c534a13acf21bcae54c6e3f1f54510635e89ff53d88b63f3ff09e7a2
7
+ data.tar.gz: '08a065d488f819ed054e8b57fd7bef8666be7c8c4dea41bd340cf07f8661c4570dd69d0a37a96c9f80c9a3fabcec6a6f691ab8d061c4e9293b1891da9da07cc4'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.4 - 2026-10-12
4
+
5
+ - Renew activations between turns in a drain pass when renewal is due,
6
+ including when the renewal thread has not run.
7
+ - Keep the activation fence and expiry while an outstanding message claim
8
+ remains. The next worker pass recovers an expired turn in mailbox order,
9
+ including with `max_attempts: 1`. Reclaiming increments `attempt_count`;
10
+ lease loss alone does not create a dead letter.
11
+
3
12
  ## 0.17.3 - 2026-10-09
4
13
 
5
14
  - Add four problem guides in `docs/guides/`: preventing race conditions in
data/docs/roadmap.md CHANGED
@@ -23,7 +23,8 @@
23
23
  instead of 12. Concurrent creation causes no deadlock on SQLite, PostgreSQL,
24
24
  or MySQL. MySQL needs a shared read after a duplicate key, because it uses
25
25
  repeatable read. The tests count statements, and do not measure latency.
26
- - Activation leases, renewal, unique activation tokens, generations, and
26
+ - Activation leases, renewal between turns as well as in the renewal thread,
27
+ unique activation tokens, generations, and
27
28
  fenced commits
28
29
  - Bounded activation passes, idle cache, hot-actor yield, and process records
29
30
  - At-least-once retries, terminal domain rejection, strict poison ordering,
@@ -139,6 +139,7 @@ module SolidObjects
139
139
  break
140
140
  end
141
141
 
142
+ renew_lease if processed_count.positive? && lease_renewal_due?
142
143
  message = claim_next_message
143
144
  break unless message
144
145
 
@@ -123,6 +123,7 @@ module SolidObjects
123
123
  instance = Instance.lock.find_by(id: instance_id)
124
124
  next false unless instance
125
125
  next false unless owned_generation?(instance)
126
+ next false if ClaimedMessage.where(instance_id:).exists?
126
127
 
127
128
  instance.update!(
128
129
  activation_owner_id: nil,
@@ -1,5 +1,5 @@
1
1
  # rbs_inline: enabled
2
2
 
3
3
  module SolidObjects
4
- VERSION = "0.17.3"
4
+ VERSION = "0.17.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.3
4
+ version: 0.17.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Carlson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-10-09 00:00:00.000000000 Z
11
+ date: 2026-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actioncable