solid_objects 0.15.2 → 0.16.0
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 +4 -4
- data/CHANGELOG.md +151 -0
- data/README.md +1 -1
- data/app/models/solid_objects/administration_event.rb +7 -0
- data/app/models/solid_objects/redrive.rb +7 -0
- data/benchmark/support.rb +2 -8
- data/db/migrate/20260922000000_add_solid_objects_administration_events.rb +26 -0
- data/db/migrate/20260922000001_add_solid_objects_redrives.rb +32 -0
- data/db/migrate/20260923000000_add_solid_objects_completed_idempotency_keys.rb +10 -0
- data/docs/adr/0011-wake-up-strategy.md +11 -1
- data/docs/architecture.md +41 -5
- data/docs/dashboard.md +10 -0
- data/docs/fit.md +6 -0
- data/docs/operations.md +153 -7
- data/docs/realtime.md +32 -26
- data/docs/roadmap.md +60 -32
- data/examples/at_least_once/boot.rb +2 -8
- data/lib/solid_objects/activation.rb +13 -6
- data/lib/solid_objects/actor.rb +134 -8
- data/lib/solid_objects/actor_snapshot.rb +8 -5
- data/lib/solid_objects/administration_audit.rb +30 -0
- data/lib/solid_objects/client.rb +81 -0
- data/lib/solid_objects/configuration.rb +47 -2
- data/lib/solid_objects/context.rb +10 -4
- data/lib/solid_objects/dead_letter_manager.rb +42 -6
- data/lib/solid_objects/dead_letter_scope.rb +143 -0
- data/lib/solid_objects/dead_row.rb +15 -0
- data/lib/solid_objects/doctor.rb +24 -5
- data/lib/solid_objects/errors.rb +11 -0
- data/lib/solid_objects/executor.rb +41 -3
- data/lib/solid_objects/message_reference.rb +29 -9
- data/lib/solid_objects/outcome.rb +31 -0
- data/lib/solid_objects/process_registry.rb +3 -1
- data/lib/solid_objects/redrive_manager.rb +130 -0
- data/lib/solid_objects/redrive_runner.rb +60 -0
- data/lib/solid_objects/redrive_task.rb +14 -0
- data/lib/solid_objects/reference.rb +5 -0
- data/lib/solid_objects/schema_bootstrap.rb +27 -0
- data/lib/solid_objects/supervisor.rb +43 -0
- data/lib/solid_objects/test_helper.rb +2 -0
- data/lib/solid_objects/version.rb +1 -1
- data/lib/solid_objects/wake_up.rb +12 -0
- data/lib/solid_objects/wake_up_adapters/postgresql.rb +12 -0
- data/lib/solid_objects/wake_up_adapters/redis.rb +12 -0
- data/lib/solid_objects/wake_up_adapters.rb +206 -11
- data/lib/solid_objects/wake_up_capability.rb +15 -0
- data/lib/solid_objects.rb +46 -3
- data/sig/generated/lib/solid_objects/activation.rbs +7 -0
- data/sig/generated/lib/solid_objects/actor.rbs +93 -2
- data/sig/generated/lib/solid_objects/administration_audit.rbs +11 -0
- data/sig/generated/lib/solid_objects/client.rbs +12 -0
- data/sig/generated/lib/solid_objects/configuration.rbs +54 -28
- data/sig/generated/lib/solid_objects/context.rbs +11 -6
- data/sig/generated/lib/solid_objects/dead_letter_manager.rbs +9 -0
- data/sig/generated/lib/solid_objects/dead_letter_scope.rbs +58 -0
- data/sig/generated/lib/solid_objects/dead_row.rbs +30 -0
- data/sig/generated/lib/solid_objects/doctor.rbs +3 -0
- data/sig/generated/lib/solid_objects/errors.rbs +8 -0
- data/sig/generated/lib/solid_objects/executor.rbs +9 -0
- data/sig/generated/lib/solid_objects/message_reference.rbs +8 -0
- data/sig/generated/lib/solid_objects/outcome.rbs +52 -0
- data/sig/generated/lib/solid_objects/redrive_manager.rbs +43 -0
- data/sig/generated/lib/solid_objects/redrive_runner.rbs +22 -0
- data/sig/generated/lib/solid_objects/redrive_task.rbs +33 -0
- data/sig/generated/lib/solid_objects/reference.rbs +5 -2
- data/sig/generated/lib/solid_objects/schema_bootstrap.rbs +11 -0
- data/sig/generated/lib/solid_objects/supervisor.rbs +15 -0
- data/sig/generated/lib/solid_objects/wake_up.rbs +5 -0
- data/sig/generated/lib/solid_objects/wake_up_adapters/postgresql.rbs +5 -0
- data/sig/generated/lib/solid_objects/wake_up_adapters/redis.rbs +5 -0
- data/sig/generated/lib/solid_objects/wake_up_adapters.rbs +75 -9
- data/sig/generated/lib/solid_objects/wake_up_capability.rbs +28 -0
- data/sig/generated/lib/solid_objects.rbs +14 -2
- data/sig/generated/models/solid_objects/administration_event.rbs +6 -0
- data/sig/generated/models/solid_objects/redrive.rbs +6 -0
- data/sig/public/reminder_payload.rbs +3 -0
- metadata +28 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/outcome.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class ErrorRecord < Data
|
|
5
|
+
attr_reader class_name(): untyped
|
|
6
|
+
|
|
7
|
+
attr_reader message(): untyped
|
|
8
|
+
|
|
9
|
+
attr_reader backtrace(): untyped
|
|
10
|
+
|
|
11
|
+
def self.new: (untyped class_name, untyped message, untyped backtrace) -> instance
|
|
12
|
+
| (class_name: untyped, message: untyped, backtrace: untyped) -> instance
|
|
13
|
+
|
|
14
|
+
def self.members: () -> [ :class_name, :message, :backtrace ]
|
|
15
|
+
|
|
16
|
+
def members: () -> [ :class_name, :message, :backtrace ]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class RejectionRecord < Data
|
|
20
|
+
attr_reader code(): untyped
|
|
21
|
+
|
|
22
|
+
attr_reader message(): untyped
|
|
23
|
+
|
|
24
|
+
attr_reader details(): untyped
|
|
25
|
+
|
|
26
|
+
def self.new: (untyped code, untyped message, untyped details) -> instance
|
|
27
|
+
| (code: untyped, message: untyped, details: untyped) -> instance
|
|
28
|
+
|
|
29
|
+
def self.members: () -> [ :code, :message, :details ]
|
|
30
|
+
|
|
31
|
+
def members: () -> [ :code, :message, :details ]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class Outcome < Data
|
|
35
|
+
attr_reader status(): untyped
|
|
36
|
+
|
|
37
|
+
attr_reader result(): untyped
|
|
38
|
+
|
|
39
|
+
attr_reader error(): untyped
|
|
40
|
+
|
|
41
|
+
attr_reader rejection(): untyped
|
|
42
|
+
|
|
43
|
+
attr_reader attempts(): untyped
|
|
44
|
+
|
|
45
|
+
def self.new: (untyped status, untyped result, untyped error, untyped rejection, untyped attempts) -> instance
|
|
46
|
+
| (status: untyped, result: untyped, error: untyped, rejection: untyped, attempts: untyped) -> instance
|
|
47
|
+
|
|
48
|
+
def self.members: () -> [ :status, :result, :error, :rejection, :attempts ]
|
|
49
|
+
|
|
50
|
+
def members: () -> [ :status, :result, :error, :rejection, :attempts ]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/redrive_manager.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class RedriveManager
|
|
5
|
+
RUNNING: ::String
|
|
6
|
+
|
|
7
|
+
COMPLETED: ::String
|
|
8
|
+
|
|
9
|
+
CANCELLED: ::String
|
|
10
|
+
|
|
11
|
+
# @rbs (scope: DeadLetterScope, filters: Hash[String, untyped], authorization_context: untyped) -> RedriveTask
|
|
12
|
+
def start: (scope: DeadLetterScope, filters: Hash[String, untyped], authorization_context: untyped) -> RedriveTask
|
|
13
|
+
|
|
14
|
+
# @rbs (String, ?authorization_context: untyped) -> RedriveTask
|
|
15
|
+
def find: (String, ?authorization_context: untyped) -> RedriveTask
|
|
16
|
+
|
|
17
|
+
# @rbs (?status: Symbol | String | nil, ?authorization_context: untyped) -> Array[RedriveTask]
|
|
18
|
+
def all: (?status: Symbol | String | nil, ?authorization_context: untyped) -> Array[RedriveTask]
|
|
19
|
+
|
|
20
|
+
# @rbs (String, ?authorization_context: untyped) -> RedriveTask
|
|
21
|
+
def cancel: (String, ?authorization_context: untyped) -> RedriveTask
|
|
22
|
+
|
|
23
|
+
# @rbs (Redrive, status: String) -> bool
|
|
24
|
+
def close: (Redrive, status: String) -> bool
|
|
25
|
+
|
|
26
|
+
# @rbs (Redrive, action: String) -> void
|
|
27
|
+
def audit: (Redrive, action: String) -> void
|
|
28
|
+
|
|
29
|
+
# @rbs (Redrive) -> RedriveTask
|
|
30
|
+
def task_for: (Redrive) -> RedriveTask
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
# @rbs (scope: DeadLetterScope, filters: Hash[String, untyped], active_scope: String, authorization_context: untyped) -> Redrive
|
|
35
|
+
def open_task: (scope: DeadLetterScope, filters: Hash[String, untyped], active_scope: String, authorization_context: untyped) -> Redrive
|
|
36
|
+
|
|
37
|
+
# @rbs (Redrive) -> Integer
|
|
38
|
+
def remaining_for: (Redrive) -> Integer
|
|
39
|
+
|
|
40
|
+
# @rbs (Symbol, authorization_context: untyped, ?resource_id: String?) -> void
|
|
41
|
+
def authorize!: (Symbol, authorization_context: untyped, ?resource_id: String?) -> void
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/redrive_runner.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class RedriveRunner
|
|
5
|
+
# @rbs () -> bool
|
|
6
|
+
def run_once: () -> bool
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs () -> Redrive?
|
|
11
|
+
def claim: () -> Redrive?
|
|
12
|
+
|
|
13
|
+
# @rbs (Redrive) -> bool
|
|
14
|
+
def advance: (Redrive) -> bool
|
|
15
|
+
|
|
16
|
+
# @rbs (Redrive) -> Integer
|
|
17
|
+
def move_batch: (Redrive) -> Integer
|
|
18
|
+
|
|
19
|
+
# @rbs (Redrive) -> void
|
|
20
|
+
def finish: (Redrive) -> void
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/redrive_task.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class RedriveTask < Data
|
|
5
|
+
attr_reader id(): untyped
|
|
6
|
+
|
|
7
|
+
attr_reader kind(): untyped
|
|
8
|
+
|
|
9
|
+
attr_reader filters(): untyped
|
|
10
|
+
|
|
11
|
+
attr_reader status(): untyped
|
|
12
|
+
|
|
13
|
+
attr_reader moved(): untyped
|
|
14
|
+
|
|
15
|
+
attr_reader remaining(): untyped
|
|
16
|
+
|
|
17
|
+
attr_reader started_at(): untyped
|
|
18
|
+
|
|
19
|
+
attr_reader finished_at(): untyped
|
|
20
|
+
|
|
21
|
+
def self.new: (untyped id, untyped kind, untyped filters, untyped status, untyped moved, untyped remaining, untyped started_at, untyped finished_at) -> instance
|
|
22
|
+
| (id: untyped, kind: untyped, filters: untyped, status: untyped, moved: untyped, remaining: untyped, started_at: untyped, finished_at: untyped) -> instance
|
|
23
|
+
|
|
24
|
+
def self.members: () -> [ :id, :kind, :filters, :status, :moved, :remaining, :started_at, :finished_at ]
|
|
25
|
+
|
|
26
|
+
def members: () -> [ :id, :kind, :filters, :status, :moved, :remaining, :started_at, :finished_at ]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class RedriveTask
|
|
30
|
+
# @rbs (?authorization_context: untyped) -> RedriveTask
|
|
31
|
+
def cancel: (?authorization_context: untyped) -> RedriveTask
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
module SolidObjects
|
|
4
4
|
class Reference
|
|
5
|
-
@actor_type: String
|
|
6
|
-
|
|
7
5
|
@actor_id: String
|
|
8
6
|
|
|
7
|
+
@actor_type: String
|
|
8
|
+
|
|
9
9
|
attr_reader actor_type: untyped
|
|
10
10
|
|
|
11
11
|
attr_reader actor_id: untyped
|
|
@@ -22,6 +22,9 @@ module SolidObjects
|
|
|
22
22
|
# @rbs (?authorization_context: untyped) -> bool
|
|
23
23
|
def destroy: (?authorization_context: untyped) -> bool
|
|
24
24
|
|
|
25
|
+
# @rbs (idempotency_key: String, ?authorization_context: untyped) -> MessageReference?
|
|
26
|
+
def find_by: (idempotency_key: String, ?authorization_context: untyped) -> MessageReference?
|
|
27
|
+
|
|
25
28
|
# @rbs (?authorization_context: untyped) -> StateSnapshot
|
|
26
29
|
def snapshot: (?authorization_context: untyped) -> StateSnapshot
|
|
27
30
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/schema_bootstrap.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
module SchemaBootstrap
|
|
5
|
+
# @rbs (?connection: untyped) -> void
|
|
6
|
+
def self.install: (?connection: untyped) -> void
|
|
7
|
+
|
|
8
|
+
# @rbs () -> Array[Class]
|
|
9
|
+
def self.migrations: () -> Array[Class]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -83,6 +83,21 @@ module SolidObjects
|
|
|
83
83
|
# @rbs (Integer) -> Float
|
|
84
84
|
def retention_pause: (Integer) -> Float
|
|
85
85
|
|
|
86
|
+
# @rbs () -> void
|
|
87
|
+
def redrive_loop: () -> void
|
|
88
|
+
|
|
89
|
+
# @rbs () -> bool
|
|
90
|
+
def advance_redrive: () -> bool
|
|
91
|
+
|
|
92
|
+
# @rbs () -> void
|
|
93
|
+
def pause_between_batches: () -> void
|
|
94
|
+
|
|
95
|
+
# @rbs () -> void
|
|
96
|
+
def wait_for_next_redrive: () -> void
|
|
97
|
+
|
|
98
|
+
# @rbs () -> void
|
|
99
|
+
def stop_redrive: () -> void
|
|
100
|
+
|
|
86
101
|
# @rbs () -> void
|
|
87
102
|
def stop_retention: () -> void
|
|
88
103
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module SolidObjects
|
|
4
4
|
class WakeUp
|
|
5
|
+
include ReportsWakeUpCapability
|
|
6
|
+
|
|
5
7
|
class Watch
|
|
6
8
|
@wake_up: WakeUp
|
|
7
9
|
|
|
@@ -23,6 +25,9 @@ module SolidObjects
|
|
|
23
25
|
# @rbs () -> void
|
|
24
26
|
def initialize: () -> void
|
|
25
27
|
|
|
28
|
+
# @rbs () -> WakeUpCapability
|
|
29
|
+
def default_capability: () -> WakeUpCapability
|
|
30
|
+
|
|
26
31
|
# @rbs () -> void
|
|
27
32
|
def signal: () -> void
|
|
28
33
|
|
|
@@ -10,6 +10,8 @@ module SolidObjects
|
|
|
10
10
|
# when one is available, so a missed or failed notification costs latency
|
|
11
11
|
# rather than correctness.
|
|
12
12
|
class Postgresql
|
|
13
|
+
include ReportsWakeUpCapability
|
|
14
|
+
|
|
13
15
|
CHANNEL: ::String
|
|
14
16
|
|
|
15
17
|
FAILED_WAIT_INTERVAL: ::Float
|
|
@@ -22,6 +24,9 @@ module SolidObjects
|
|
|
22
24
|
|
|
23
25
|
attr_reader channel: untyped
|
|
24
26
|
|
|
27
|
+
# @rbs () -> WakeUpCapability
|
|
28
|
+
def default_capability: () -> WakeUpCapability
|
|
29
|
+
|
|
25
30
|
# @rbs (?channel: String) -> void
|
|
26
31
|
def initialize: (?channel: String) -> void
|
|
27
32
|
|
|
@@ -10,6 +10,8 @@ module SolidObjects
|
|
|
10
10
|
# polling interval remains the upper bound, so a missed or failed
|
|
11
11
|
# notification costs latency rather than correctness.
|
|
12
12
|
class Redis
|
|
13
|
+
include ReportsWakeUpCapability
|
|
14
|
+
|
|
13
15
|
class Watch
|
|
14
16
|
@adapter: Redis
|
|
15
17
|
|
|
@@ -46,6 +48,9 @@ module SolidObjects
|
|
|
46
48
|
|
|
47
49
|
attr_reader channel: untyped
|
|
48
50
|
|
|
51
|
+
# @rbs () -> WakeUpCapability
|
|
52
|
+
def default_capability: () -> WakeUpCapability
|
|
53
|
+
|
|
49
54
|
# @rbs (?channel: String, ?url: String?, ?client: untyped) -> void
|
|
50
55
|
def initialize: (?channel: String, ?url: String?, ?client: untyped) -> void
|
|
51
56
|
|
|
@@ -2,16 +2,82 @@
|
|
|
2
2
|
|
|
3
3
|
module SolidObjects
|
|
4
4
|
module WakeUpAdapters
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
POSTGRESQL_FLOOR_MS: ::Float
|
|
6
|
+
|
|
7
|
+
REDIS_FLOOR_MS: ::Float
|
|
8
|
+
|
|
9
|
+
REDIS_URL_VARIABLE: ::String
|
|
10
|
+
|
|
11
|
+
PROBE_TIMEOUT_SECONDS: ::Float
|
|
12
|
+
|
|
13
|
+
PROBE_CHANNEL: ::String
|
|
14
|
+
|
|
15
|
+
NAMES: untyped
|
|
16
|
+
|
|
14
17
|
# @rbs (?untyped) -> untyped
|
|
15
18
|
def self?.for: (?untyped) -> untyped
|
|
19
|
+
|
|
20
|
+
# @rbs (untyped) -> untyped
|
|
21
|
+
def self?.build: (untyped) -> untyped
|
|
22
|
+
|
|
23
|
+
# @rbs (Symbol) -> untyped
|
|
24
|
+
def self?.named: (Symbol) -> untyped
|
|
25
|
+
|
|
26
|
+
# @rbs () -> untyped
|
|
27
|
+
def self?.requested_postgresql: () -> untyped
|
|
28
|
+
|
|
29
|
+
# @rbs () -> untyped
|
|
30
|
+
def self?.requested_redis: () -> untyped
|
|
31
|
+
|
|
32
|
+
# @rbs (String, String) -> untyped
|
|
33
|
+
def self?.redis_adapter: (String, String) -> untyped
|
|
34
|
+
|
|
35
|
+
# @rbs () -> bool
|
|
36
|
+
def self?.redis_installed?: () -> bool
|
|
37
|
+
|
|
38
|
+
# @rbs (String) -> untyped
|
|
39
|
+
def self?.unavailable_selection: (String) -> untyped
|
|
40
|
+
|
|
41
|
+
# @rbs (untyped) -> untyped
|
|
42
|
+
def self?.configured: (untyped) -> untyped
|
|
43
|
+
|
|
44
|
+
# @rbs (untyped, Symbol, bool, Numeric?, String) -> untyped
|
|
45
|
+
def self?.labelled: (untyped, Symbol, bool, Numeric?, String) -> untyped
|
|
46
|
+
|
|
47
|
+
# @rbs (?untyped) -> untyped
|
|
48
|
+
def self?.select: (?untyped) -> untyped
|
|
49
|
+
|
|
50
|
+
# @rbs () -> bool
|
|
51
|
+
def self?.notifications_deliver?: () -> bool
|
|
52
|
+
|
|
53
|
+
# @rbs () -> bool
|
|
54
|
+
def self?.notify_probe_channel: () -> bool
|
|
55
|
+
|
|
56
|
+
# @rbs (untyped) -> void
|
|
57
|
+
def self?.disconnect_probe: (untyped) -> void
|
|
58
|
+
|
|
59
|
+
# @rbs () -> void
|
|
60
|
+
def self?.reset_pooled_warning!: () -> void
|
|
61
|
+
|
|
62
|
+
# @rbs () -> String?
|
|
63
|
+
def self?.redis_url: () -> String?
|
|
64
|
+
|
|
65
|
+
# @rbs (String) -> untyped
|
|
66
|
+
def self?.redis_selection: (String) -> untyped
|
|
67
|
+
|
|
68
|
+
# @rbs () -> untyped
|
|
69
|
+
def self?.postgresql_selection: () -> untyped
|
|
70
|
+
|
|
71
|
+
# @rbs () -> untyped
|
|
72
|
+
def self?.pooled_selection: () -> untyped
|
|
73
|
+
|
|
74
|
+
# @rbs (Symbol?) -> untyped
|
|
75
|
+
def self?.polling_selection: (Symbol?) -> untyped
|
|
76
|
+
|
|
77
|
+
# @rbs (String) -> untyped
|
|
78
|
+
def self?.polling_adapter: (String) -> untyped
|
|
79
|
+
|
|
80
|
+
# @rbs () -> void
|
|
81
|
+
def self?.warn_pooled_session_once: () -> void
|
|
16
82
|
end
|
|
17
83
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/wake_up_capability.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class WakeUpCapability < Data
|
|
5
|
+
attr_reader adapter(): untyped
|
|
6
|
+
|
|
7
|
+
attr_reader crosses_processes(): untyped
|
|
8
|
+
|
|
9
|
+
attr_reader measured_floor_ms(): untyped
|
|
10
|
+
|
|
11
|
+
attr_reader reason(): untyped
|
|
12
|
+
|
|
13
|
+
def self.new: (untyped adapter, untyped crosses_processes, untyped measured_floor_ms, untyped reason) -> instance
|
|
14
|
+
| (adapter: untyped, crosses_processes: untyped, measured_floor_ms: untyped, reason: untyped) -> instance
|
|
15
|
+
|
|
16
|
+
def self.members: () -> [ :adapter, :crosses_processes, :measured_floor_ms, :reason ]
|
|
17
|
+
|
|
18
|
+
def members: () -> [ :adapter, :crosses_processes, :measured_floor_ms, :reason ]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module ReportsWakeUpCapability
|
|
22
|
+
# @rbs (WakeUpCapability) -> void
|
|
23
|
+
attr_writer capability: untyped
|
|
24
|
+
|
|
25
|
+
# @rbs () -> WakeUpCapability
|
|
26
|
+
def capability: () -> WakeUpCapability
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -39,6 +39,9 @@ module SolidObjects
|
|
|
39
39
|
# @rbs () -> DeadLetterManager
|
|
40
40
|
def self.dead_letters: () -> DeadLetterManager
|
|
41
41
|
|
|
42
|
+
# @rbs () -> RedriveManager
|
|
43
|
+
def self.redrives: () -> RedriveManager
|
|
44
|
+
|
|
42
45
|
# @rbs () -> Administration
|
|
43
46
|
def self.administration: () -> Administration
|
|
44
47
|
|
|
@@ -57,6 +60,15 @@ module SolidObjects
|
|
|
57
60
|
# @rbs () -> DatabaseAdapter
|
|
58
61
|
def self.database_adapter: () -> DatabaseAdapter
|
|
59
62
|
|
|
60
|
-
# @rbs () ->
|
|
61
|
-
def self.wake_up: () ->
|
|
63
|
+
# @rbs () -> untyped
|
|
64
|
+
def self.wake_up: () -> untyped
|
|
65
|
+
|
|
66
|
+
# @rbs () -> void
|
|
67
|
+
def self.reset_wake_up!: () -> void
|
|
68
|
+
|
|
69
|
+
# @rbs () -> untyped
|
|
70
|
+
def self.resolve_wake_up: () -> untyped
|
|
71
|
+
|
|
72
|
+
# @rbs (Exception) -> untyped
|
|
73
|
+
def self.unreachable_wake_up: (Exception) -> untyped
|
|
62
74
|
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.
|
|
4
|
+
version: 0.16.0
|
|
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-09-
|
|
11
|
+
date: 2026-09-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actioncable
|
|
@@ -299,6 +299,7 @@ files:
|
|
|
299
299
|
- app/controllers/solid_objects/instances_controller.rb
|
|
300
300
|
- app/controllers/solid_objects/transmissions_controller.rb
|
|
301
301
|
- app/helpers/solid_objects/actor_helper.rb
|
|
302
|
+
- app/models/solid_objects/administration_event.rb
|
|
302
303
|
- app/models/solid_objects/broadcast.rb
|
|
303
304
|
- app/models/solid_objects/claimed_message.rb
|
|
304
305
|
- app/models/solid_objects/dead_letter.rb
|
|
@@ -309,6 +310,7 @@ files:
|
|
|
309
310
|
- app/models/solid_objects/process.rb
|
|
310
311
|
- app/models/solid_objects/ready_message.rb
|
|
311
312
|
- app/models/solid_objects/record.rb
|
|
313
|
+
- app/models/solid_objects/redrive.rb
|
|
312
314
|
- app/models/solid_objects/reminder.rb
|
|
313
315
|
- app/views/solid_objects/dead_letters/index.html.erb
|
|
314
316
|
- app/views/solid_objects/instances/index.html.erb
|
|
@@ -332,6 +334,9 @@ files:
|
|
|
332
334
|
- db/migrate/20260806000000_add_state_revision_to_solid_objects_instances.rb
|
|
333
335
|
- db/migrate/20260813000000_rename_message_dispatch_columns.rb
|
|
334
336
|
- db/migrate/20260915000000_add_solid_objects_effect_recoveries.rb
|
|
337
|
+
- db/migrate/20260922000000_add_solid_objects_administration_events.rb
|
|
338
|
+
- db/migrate/20260922000001_add_solid_objects_redrives.rb
|
|
339
|
+
- db/migrate/20260923000000_add_solid_objects_completed_idempotency_keys.rb
|
|
335
340
|
- docs/adr/0001-postgresql-backend.md
|
|
336
341
|
- docs/adr/0002-jsonb-actor-state.md
|
|
337
342
|
- docs/adr/0003-mailbox-ordering.md
|
|
@@ -396,6 +401,7 @@ files:
|
|
|
396
401
|
- lib/solid_objects/actor_snapshot.rb
|
|
397
402
|
- lib/solid_objects/actor_view.rb
|
|
398
403
|
- lib/solid_objects/administration.rb
|
|
404
|
+
- lib/solid_objects/administration_audit.rb
|
|
399
405
|
- lib/solid_objects/application_actor_loader.rb
|
|
400
406
|
- lib/solid_objects/application_write_guard.rb
|
|
401
407
|
- lib/solid_objects/broadcast_executor.rb
|
|
@@ -417,6 +423,8 @@ files:
|
|
|
417
423
|
- lib/solid_objects/database_adapters/postgresql.rb
|
|
418
424
|
- lib/solid_objects/database_adapters/sqlite.rb
|
|
419
425
|
- lib/solid_objects/dead_letter_manager.rb
|
|
426
|
+
- lib/solid_objects/dead_letter_scope.rb
|
|
427
|
+
- lib/solid_objects/dead_row.rb
|
|
420
428
|
- lib/solid_objects/doctor.rb
|
|
421
429
|
- lib/solid_objects/dom_identity.rb
|
|
422
430
|
- lib/solid_objects/effect_executor.rb
|
|
@@ -435,13 +443,18 @@ files:
|
|
|
435
443
|
- lib/solid_objects/message_pruner.rb
|
|
436
444
|
- lib/solid_objects/message_reference.rb
|
|
437
445
|
- lib/solid_objects/operation_dispatcher.rb
|
|
446
|
+
- lib/solid_objects/outcome.rb
|
|
438
447
|
- lib/solid_objects/payload_broadcast.rb
|
|
439
448
|
- lib/solid_objects/polling_backoff.rb
|
|
440
449
|
- lib/solid_objects/process_heartbeat.rb
|
|
441
450
|
- lib/solid_objects/process_pruner.rb
|
|
442
451
|
- lib/solid_objects/process_registry.rb
|
|
452
|
+
- lib/solid_objects/redrive_manager.rb
|
|
453
|
+
- lib/solid_objects/redrive_runner.rb
|
|
454
|
+
- lib/solid_objects/redrive_task.rb
|
|
443
455
|
- lib/solid_objects/reference.rb
|
|
444
456
|
- lib/solid_objects/reminder_scheduler.rb
|
|
457
|
+
- lib/solid_objects/schema_bootstrap.rb
|
|
445
458
|
- lib/solid_objects/serialization.rb
|
|
446
459
|
- lib/solid_objects/state.rb
|
|
447
460
|
- lib/solid_objects/state_snapshot.rb
|
|
@@ -459,6 +472,7 @@ files:
|
|
|
459
472
|
- lib/solid_objects/wake_up_adapters.rb
|
|
460
473
|
- lib/solid_objects/wake_up_adapters/postgresql.rb
|
|
461
474
|
- lib/solid_objects/wake_up_adapters/redis.rb
|
|
475
|
+
- lib/solid_objects/wake_up_capability.rb
|
|
462
476
|
- lib/solid_objects/web.rb
|
|
463
477
|
- lib/solid_objects/web/action.rb
|
|
464
478
|
- lib/solid_objects/web/application.rb
|
|
@@ -489,6 +503,7 @@ files:
|
|
|
489
503
|
- sig/generated/lib/solid_objects/actor_snapshot.rbs
|
|
490
504
|
- sig/generated/lib/solid_objects/actor_view.rbs
|
|
491
505
|
- sig/generated/lib/solid_objects/administration.rbs
|
|
506
|
+
- sig/generated/lib/solid_objects/administration_audit.rbs
|
|
492
507
|
- sig/generated/lib/solid_objects/application_actor_loader.rbs
|
|
493
508
|
- sig/generated/lib/solid_objects/application_write_guard.rbs
|
|
494
509
|
- sig/generated/lib/solid_objects/broadcast_executor.rbs
|
|
@@ -510,6 +525,8 @@ files:
|
|
|
510
525
|
- sig/generated/lib/solid_objects/database_adapters/postgresql.rbs
|
|
511
526
|
- sig/generated/lib/solid_objects/database_adapters/sqlite.rbs
|
|
512
527
|
- sig/generated/lib/solid_objects/dead_letter_manager.rbs
|
|
528
|
+
- sig/generated/lib/solid_objects/dead_letter_scope.rbs
|
|
529
|
+
- sig/generated/lib/solid_objects/dead_row.rbs
|
|
513
530
|
- sig/generated/lib/solid_objects/doctor.rbs
|
|
514
531
|
- sig/generated/lib/solid_objects/dom_identity.rbs
|
|
515
532
|
- sig/generated/lib/solid_objects/effect_executor.rbs
|
|
@@ -528,13 +545,18 @@ files:
|
|
|
528
545
|
- sig/generated/lib/solid_objects/message_pruner.rbs
|
|
529
546
|
- sig/generated/lib/solid_objects/message_reference.rbs
|
|
530
547
|
- sig/generated/lib/solid_objects/operation_dispatcher.rbs
|
|
548
|
+
- sig/generated/lib/solid_objects/outcome.rbs
|
|
531
549
|
- sig/generated/lib/solid_objects/payload_broadcast.rbs
|
|
532
550
|
- sig/generated/lib/solid_objects/polling_backoff.rbs
|
|
533
551
|
- sig/generated/lib/solid_objects/process_heartbeat.rbs
|
|
534
552
|
- sig/generated/lib/solid_objects/process_pruner.rbs
|
|
535
553
|
- sig/generated/lib/solid_objects/process_registry.rbs
|
|
554
|
+
- sig/generated/lib/solid_objects/redrive_manager.rbs
|
|
555
|
+
- sig/generated/lib/solid_objects/redrive_runner.rbs
|
|
556
|
+
- sig/generated/lib/solid_objects/redrive_task.rbs
|
|
536
557
|
- sig/generated/lib/solid_objects/reference.rbs
|
|
537
558
|
- sig/generated/lib/solid_objects/reminder_scheduler.rbs
|
|
559
|
+
- sig/generated/lib/solid_objects/schema_bootstrap.rbs
|
|
538
560
|
- sig/generated/lib/solid_objects/serialization.rbs
|
|
539
561
|
- sig/generated/lib/solid_objects/state.rbs
|
|
540
562
|
- sig/generated/lib/solid_objects/state_snapshot.rbs
|
|
@@ -552,6 +574,7 @@ files:
|
|
|
552
574
|
- sig/generated/lib/solid_objects/wake_up_adapters.rbs
|
|
553
575
|
- sig/generated/lib/solid_objects/wake_up_adapters/postgresql.rbs
|
|
554
576
|
- sig/generated/lib/solid_objects/wake_up_adapters/redis.rbs
|
|
577
|
+
- sig/generated/lib/solid_objects/wake_up_capability.rbs
|
|
555
578
|
- sig/generated/lib/solid_objects/web.rbs
|
|
556
579
|
- sig/generated/lib/solid_objects/web/action.rbs
|
|
557
580
|
- sig/generated/lib/solid_objects/web/application.rbs
|
|
@@ -562,6 +585,7 @@ files:
|
|
|
562
585
|
- sig/generated/lib/solid_objects/web/router.rbs
|
|
563
586
|
- sig/generated/lib/solid_objects/web/statistics.rbs
|
|
564
587
|
- sig/generated/lib/solid_objects/worker.rbs
|
|
588
|
+
- sig/generated/models/solid_objects/administration_event.rbs
|
|
565
589
|
- sig/generated/models/solid_objects/broadcast.rbs
|
|
566
590
|
- sig/generated/models/solid_objects/claimed_message.rbs
|
|
567
591
|
- sig/generated/models/solid_objects/dead_letter.rbs
|
|
@@ -572,8 +596,10 @@ files:
|
|
|
572
596
|
- sig/generated/models/solid_objects/process.rbs
|
|
573
597
|
- sig/generated/models/solid_objects/ready_message.rbs
|
|
574
598
|
- sig/generated/models/solid_objects/record.rbs
|
|
599
|
+
- sig/generated/models/solid_objects/redrive.rbs
|
|
575
600
|
- sig/generated/models/solid_objects/reminder.rbs
|
|
576
601
|
- sig/public/effect_payload.rbs
|
|
602
|
+
- sig/public/reminder_payload.rbs
|
|
577
603
|
- sig/support/framework.rbs
|
|
578
604
|
- web/assets/javascripts/application.js
|
|
579
605
|
- web/assets/javascripts/charts.js
|