solid_objects 0.2.1 → 0.3.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 +14 -0
- data/README.md +129 -8
- data/docs/architecture.md +62 -15
- data/docs/authorization.md +16 -3
- data/docs/benchmarks.md +6 -2
- data/docs/correctness.md +19 -1
- data/docs/database-schema.md +5 -0
- data/docs/development.md +40 -0
- data/docs/fit.md +10 -2
- data/docs/migrating-existing-state.md +8 -1
- data/docs/operations.md +74 -36
- data/docs/roadmap.md +8 -2
- data/docs/security.md +25 -3
- data/docs/state-migrations.md +2 -0
- data/lib/generators/solid_objects/templates/solid_objects.rb +30 -2
- data/lib/solid_objects/activation.rb +33 -4
- data/lib/solid_objects/actor.rb +47 -6
- data/lib/solid_objects/actor_definition.rb +2 -0
- data/lib/solid_objects/actor_snapshot.rb +10 -4
- data/lib/solid_objects/application_write_guard.rb +24 -0
- data/lib/solid_objects/caller_process.rb +28 -0
- data/lib/solid_objects/cli.rb +44 -5
- data/lib/solid_objects/client.rb +98 -5
- data/lib/solid_objects/commit_action_registry.rb +42 -0
- data/lib/solid_objects/configuration.rb +27 -1
- data/lib/solid_objects/database_adapter.rb +28 -1
- data/lib/solid_objects/database_adapters/mysql.rb +46 -0
- data/lib/solid_objects/database_adapters/postgresql.rb +29 -0
- data/lib/solid_objects/database_adapters/sqlite.rb +28 -0
- data/lib/solid_objects/errors.rb +144 -0
- data/lib/solid_objects/executor.rb +64 -4
- data/lib/solid_objects/instance_pruner.rb +97 -0
- data/lib/solid_objects/message_pruner.rb +97 -0
- data/lib/solid_objects/message_reference.rb +9 -0
- data/lib/solid_objects/process_pruner.rb +49 -0
- data/lib/solid_objects/reference.rb +5 -0
- data/lib/solid_objects/state_snapshot.rb +41 -0
- data/lib/solid_objects/sync_deadline.rb +57 -0
- data/lib/solid_objects/sync_diagnostics.rb +133 -0
- data/lib/solid_objects/synchronous_invocation.rb +26 -7
- data/lib/solid_objects/test_helper.rb +78 -0
- data/lib/solid_objects/version.rb +1 -1
- data/lib/solid_objects/worker.rb +1 -1
- data/lib/solid_objects.rb +34 -0
- data/sig/generated/lib/solid_objects/activation.rbs +3 -0
- data/sig/generated/lib/solid_objects/actor.rbs +26 -0
- data/sig/generated/lib/solid_objects/application_write_guard.rbs +8 -0
- data/sig/generated/lib/solid_objects/caller_process.rbs +11 -0
- data/sig/generated/lib/solid_objects/cli.rbs +11 -2
- data/sig/generated/lib/solid_objects/client.rbs +15 -0
- data/sig/generated/lib/solid_objects/commit_action_registry.rbs +43 -0
- data/sig/generated/lib/solid_objects/configuration.rbs +27 -7
- data/sig/generated/lib/solid_objects/database_adapter.rbs +9 -0
- data/sig/generated/lib/solid_objects/database_adapters/mysql.rbs +8 -0
- data/sig/generated/lib/solid_objects/database_adapters/postgresql.rbs +8 -0
- data/sig/generated/lib/solid_objects/database_adapters/sqlite.rbs +8 -0
- data/sig/generated/lib/solid_objects/errors.rbs +118 -0
- data/sig/generated/lib/solid_objects/executor.rbs +12 -0
- data/sig/generated/lib/solid_objects/instance_pruner.rbs +36 -0
- data/sig/generated/lib/solid_objects/message_pruner.rbs +42 -0
- data/sig/generated/lib/solid_objects/message_reference.rbs +3 -0
- data/sig/generated/lib/solid_objects/process_pruner.rbs +27 -0
- data/sig/generated/lib/solid_objects/reference.rbs +3 -0
- data/sig/generated/lib/solid_objects/state_snapshot.rbs +30 -0
- data/sig/generated/lib/solid_objects/sync_deadline.rbs +31 -0
- data/sig/generated/lib/solid_objects/sync_diagnostics.rbs +34 -0
- data/sig/generated/lib/solid_objects/synchronous_invocation.rbs +3 -0
- data/sig/generated/lib/solid_objects/test_helper.rbs +25 -0
- data/sig/generated/lib/solid_objects.rbs +12 -0
- metadata +19 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/process_pruner.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class ProcessPruner
|
|
5
|
+
@now: Time
|
|
6
|
+
|
|
7
|
+
@batch_size: Integer
|
|
8
|
+
|
|
9
|
+
# @rbs (?now: Time, ?batch_size: Integer) -> void
|
|
10
|
+
def initialize: (?now: Time, ?batch_size: Integer) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> Integer
|
|
13
|
+
def preview: () -> Integer
|
|
14
|
+
|
|
15
|
+
# @rbs () -> Integer
|
|
16
|
+
def prune: () -> Integer
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
attr_reader now: untyped
|
|
21
|
+
|
|
22
|
+
attr_reader batch_size: untyped
|
|
23
|
+
|
|
24
|
+
# @rbs () -> ActiveRecord::Relation[Process]
|
|
25
|
+
def prunable: () -> ActiveRecord::Relation[Process]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -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 (?authorization_context: untyped) -> StateSnapshot
|
|
26
|
+
def snapshot: (?authorization_context: untyped) -> StateSnapshot
|
|
27
|
+
|
|
25
28
|
# @rbs (Symbol, *untyped, **untyped) -> untyped
|
|
26
29
|
def method_missing: (Symbol, *untyped, **untyped) -> untyped
|
|
27
30
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/state_snapshot.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class StateSnapshot
|
|
5
|
+
@actor_class: Class
|
|
6
|
+
|
|
7
|
+
@data: Hash[String, untyped]
|
|
8
|
+
|
|
9
|
+
# @rbs (Reference) -> void
|
|
10
|
+
def initialize: (Reference) -> void
|
|
11
|
+
|
|
12
|
+
# @rbs () -> Hash[String, untyped]
|
|
13
|
+
def to_h: () -> Hash[String, untyped]
|
|
14
|
+
|
|
15
|
+
# @rbs (Symbol, *untyped, **untyped) -> untyped
|
|
16
|
+
def method_missing: (Symbol, *untyped, **untyped) -> untyped
|
|
17
|
+
|
|
18
|
+
# @rbs (Symbol, bool) -> bool
|
|
19
|
+
def respond_to_missing?: (Symbol, bool) -> bool
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
attr_reader actor_class: untyped
|
|
24
|
+
|
|
25
|
+
attr_reader data: untyped
|
|
26
|
+
|
|
27
|
+
# @rbs (Symbol | String) -> bool
|
|
28
|
+
def attribute?: (Symbol | String) -> bool
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/sync_deadline.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class SyncDeadline
|
|
5
|
+
KEY: ::Symbol
|
|
6
|
+
|
|
7
|
+
# @rbs (timeout: Numeric) { () -> untyped } -> untyped
|
|
8
|
+
def self.with: (timeout: Numeric) { () -> untyped } -> untyped
|
|
9
|
+
|
|
10
|
+
# @rbs () -> bool
|
|
11
|
+
def self.active?: () -> bool
|
|
12
|
+
|
|
13
|
+
# @rbs () -> bool
|
|
14
|
+
def self.expired?: () -> bool
|
|
15
|
+
|
|
16
|
+
# @rbs () -> Float
|
|
17
|
+
def self.remaining: () -> Float
|
|
18
|
+
|
|
19
|
+
# @rbs () -> Integer
|
|
20
|
+
def self.remaining_milliseconds: () -> Integer
|
|
21
|
+
|
|
22
|
+
# @rbs () -> Integer
|
|
23
|
+
def self.remaining_seconds: () -> Integer
|
|
24
|
+
|
|
25
|
+
# @rbs () -> Float?
|
|
26
|
+
private def self.deadline: () -> Float?
|
|
27
|
+
|
|
28
|
+
# @rbs () -> Float
|
|
29
|
+
private def self.monotonic_now: () -> Float
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/sync_diagnostics.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
class SyncDiagnostics
|
|
5
|
+
# @rbs (Message, timeout: Numeric) -> SyncTimeout
|
|
6
|
+
def call: (Message, timeout: Numeric) -> SyncTimeout
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
# @rbs (Message) -> String
|
|
11
|
+
def message_status: (Message) -> String
|
|
12
|
+
|
|
13
|
+
# @rbs (Message, Instance, Message?) -> String
|
|
14
|
+
def waiting_reason: (Message, Instance, Message?) -> String
|
|
15
|
+
|
|
16
|
+
# @rbs (ReadyMessage?) -> bool
|
|
17
|
+
def future?: (ReadyMessage?) -> bool
|
|
18
|
+
|
|
19
|
+
# @rbs (Instance) -> bool
|
|
20
|
+
def live_activation?: (Instance) -> bool
|
|
21
|
+
|
|
22
|
+
# @rbs (Message) -> Message?
|
|
23
|
+
def earlier_blocker: (Message) -> Message?
|
|
24
|
+
|
|
25
|
+
# @rbs (Instance) -> Hash[String, untyped]
|
|
26
|
+
def activation_details: (Instance) -> Hash[String, untyped]
|
|
27
|
+
|
|
28
|
+
# @rbs (Process?) -> Hash[String, untyped]?
|
|
29
|
+
def process_details: (Process?) -> Hash[String, untyped]?
|
|
30
|
+
|
|
31
|
+
# @rbs (Message?) -> Hash[String, untyped]?
|
|
32
|
+
def blocker_details: (Message?) -> Hash[String, untyped]?
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -7,6 +7,9 @@ module SolidObjects
|
|
|
7
7
|
|
|
8
8
|
private
|
|
9
9
|
|
|
10
|
+
# @rbs (MessageReference, timeout: Numeric) -> untyped
|
|
11
|
+
def call_before_deadline: (MessageReference, timeout: Numeric) -> untyped
|
|
12
|
+
|
|
10
13
|
# @rbs (MessageReference) -> Message
|
|
11
14
|
def load_message: (MessageReference) -> Message
|
|
12
15
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/solid_objects/test_helper.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module SolidObjects
|
|
4
|
+
module TestHelper
|
|
5
|
+
# @rbs (Class) -> void
|
|
6
|
+
def self.included: (Class) -> void
|
|
7
|
+
|
|
8
|
+
# @rbs () -> void
|
|
9
|
+
def self.reset_actors!: () -> void
|
|
10
|
+
|
|
11
|
+
# @rbs () -> void
|
|
12
|
+
def reset_actors!: () -> void
|
|
13
|
+
|
|
14
|
+
# @rbs (?roles: Array[Symbol], ?max_passes: Integer) -> Integer
|
|
15
|
+
def drain_solid_objects: (?roles: Array[Symbol], ?max_passes: Integer) -> Integer
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# @rbs (Array[Symbol]) -> Array[Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor]
|
|
20
|
+
def build_solid_objects_runners: (Array[Symbol]) -> Array[Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor]
|
|
21
|
+
|
|
22
|
+
# @rbs (Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor) -> Integer
|
|
23
|
+
def solid_objects_runner_result: (Worker | EffectExecutor | ReminderScheduler | BroadcastExecutor) -> Integer
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -18,12 +18,21 @@ module SolidObjects
|
|
|
18
18
|
# @rbs (String | Symbol) { (Hash[String, untyped], EffectContext) -> untyped } -> Proc
|
|
19
19
|
def self.register_effect: (String | Symbol) { (Hash[String, untyped], EffectContext) -> untyped } -> Proc
|
|
20
20
|
|
|
21
|
+
# @rbs () -> CommitActionRegistry
|
|
22
|
+
def self.commit_action_registry: () -> CommitActionRegistry
|
|
23
|
+
|
|
24
|
+
# @rbs (String | Symbol) { (Hash[String, untyped], CommitActionContext) -> untyped } -> Proc
|
|
25
|
+
def self.register_commit_action: (String | Symbol) { (Hash[String, untyped], CommitActionContext) -> untyped } -> Proc
|
|
26
|
+
|
|
21
27
|
# @rbs () -> Client
|
|
22
28
|
def self.client: () -> Client
|
|
23
29
|
|
|
24
30
|
# @rbs () -> CallerProcess
|
|
25
31
|
def self.caller_process: () -> CallerProcess
|
|
26
32
|
|
|
33
|
+
# @rbs () -> bool
|
|
34
|
+
def self.reset_caller_process!: () -> bool
|
|
35
|
+
|
|
27
36
|
# @rbs () -> DeadLetterManager
|
|
28
37
|
def self.dead_letters: () -> DeadLetterManager
|
|
29
38
|
|
|
@@ -33,6 +42,9 @@ module SolidObjects
|
|
|
33
42
|
# @rbs (String, Class) -> Class
|
|
34
43
|
def self.register_actor: (String, Class) -> Class
|
|
35
44
|
|
|
45
|
+
# @rbs (untyped) -> untyped
|
|
46
|
+
def self.mutable_copy: (untyped) -> untyped
|
|
47
|
+
|
|
36
48
|
# @rbs () -> void
|
|
37
49
|
def self.reset!: () -> void
|
|
38
50
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solid_objects
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lucas Carlson
|
|
@@ -342,10 +342,12 @@ files:
|
|
|
342
342
|
- lib/solid_objects/actor_registry.rb
|
|
343
343
|
- lib/solid_objects/actor_snapshot.rb
|
|
344
344
|
- lib/solid_objects/actor_view.rb
|
|
345
|
+
- lib/solid_objects/application_write_guard.rb
|
|
345
346
|
- lib/solid_objects/broadcast_executor.rb
|
|
346
347
|
- lib/solid_objects/caller_process.rb
|
|
347
348
|
- lib/solid_objects/cli.rb
|
|
348
349
|
- lib/solid_objects/client.rb
|
|
350
|
+
- lib/solid_objects/commit_action_registry.rb
|
|
349
351
|
- lib/solid_objects/configuration.rb
|
|
350
352
|
- lib/solid_objects/context.rb
|
|
351
353
|
- lib/solid_objects/database_adapter.rb
|
|
@@ -360,21 +362,28 @@ files:
|
|
|
360
362
|
- lib/solid_objects/engine.rb
|
|
361
363
|
- lib/solid_objects/errors.rb
|
|
362
364
|
- lib/solid_objects/executor.rb
|
|
365
|
+
- lib/solid_objects/instance_pruner.rb
|
|
363
366
|
- lib/solid_objects/instrumentation.rb
|
|
364
367
|
- lib/solid_objects/lease.rb
|
|
365
368
|
- lib/solid_objects/lease_renewer.rb
|
|
366
369
|
- lib/solid_objects/log_subscriber.rb
|
|
367
370
|
- lib/solid_objects/mailbox.rb
|
|
371
|
+
- lib/solid_objects/message_pruner.rb
|
|
368
372
|
- lib/solid_objects/message_reference.rb
|
|
373
|
+
- lib/solid_objects/process_pruner.rb
|
|
369
374
|
- lib/solid_objects/process_registry.rb
|
|
370
375
|
- lib/solid_objects/reference.rb
|
|
371
376
|
- lib/solid_objects/reminder_scheduler.rb
|
|
372
377
|
- lib/solid_objects/serialization.rb
|
|
373
378
|
- lib/solid_objects/state.rb
|
|
379
|
+
- lib/solid_objects/state_snapshot.rb
|
|
374
380
|
- lib/solid_objects/stream_name.rb
|
|
375
381
|
- lib/solid_objects/stream_token.rb
|
|
376
382
|
- lib/solid_objects/supervisor.rb
|
|
383
|
+
- lib/solid_objects/sync_deadline.rb
|
|
384
|
+
- lib/solid_objects/sync_diagnostics.rb
|
|
377
385
|
- lib/solid_objects/synchronous_invocation.rb
|
|
386
|
+
- lib/solid_objects/test_helper.rb
|
|
378
387
|
- lib/solid_objects/turbo_stream_renderer.rb
|
|
379
388
|
- lib/solid_objects/version.rb
|
|
380
389
|
- lib/solid_objects/wake_up.rb
|
|
@@ -395,10 +404,12 @@ files:
|
|
|
395
404
|
- sig/generated/lib/solid_objects/actor_registry.rbs
|
|
396
405
|
- sig/generated/lib/solid_objects/actor_snapshot.rbs
|
|
397
406
|
- sig/generated/lib/solid_objects/actor_view.rbs
|
|
407
|
+
- sig/generated/lib/solid_objects/application_write_guard.rbs
|
|
398
408
|
- sig/generated/lib/solid_objects/broadcast_executor.rbs
|
|
399
409
|
- sig/generated/lib/solid_objects/caller_process.rbs
|
|
400
410
|
- sig/generated/lib/solid_objects/cli.rbs
|
|
401
411
|
- sig/generated/lib/solid_objects/client.rbs
|
|
412
|
+
- sig/generated/lib/solid_objects/commit_action_registry.rbs
|
|
402
413
|
- sig/generated/lib/solid_objects/configuration.rbs
|
|
403
414
|
- sig/generated/lib/solid_objects/context.rbs
|
|
404
415
|
- sig/generated/lib/solid_objects/database_adapter.rbs
|
|
@@ -413,21 +424,28 @@ files:
|
|
|
413
424
|
- sig/generated/lib/solid_objects/engine.rbs
|
|
414
425
|
- sig/generated/lib/solid_objects/errors.rbs
|
|
415
426
|
- sig/generated/lib/solid_objects/executor.rbs
|
|
427
|
+
- sig/generated/lib/solid_objects/instance_pruner.rbs
|
|
416
428
|
- sig/generated/lib/solid_objects/instrumentation.rbs
|
|
417
429
|
- sig/generated/lib/solid_objects/lease.rbs
|
|
418
430
|
- sig/generated/lib/solid_objects/lease_renewer.rbs
|
|
419
431
|
- sig/generated/lib/solid_objects/log_subscriber.rbs
|
|
420
432
|
- sig/generated/lib/solid_objects/mailbox.rbs
|
|
433
|
+
- sig/generated/lib/solid_objects/message_pruner.rbs
|
|
421
434
|
- sig/generated/lib/solid_objects/message_reference.rbs
|
|
435
|
+
- sig/generated/lib/solid_objects/process_pruner.rbs
|
|
422
436
|
- sig/generated/lib/solid_objects/process_registry.rbs
|
|
423
437
|
- sig/generated/lib/solid_objects/reference.rbs
|
|
424
438
|
- sig/generated/lib/solid_objects/reminder_scheduler.rbs
|
|
425
439
|
- sig/generated/lib/solid_objects/serialization.rbs
|
|
426
440
|
- sig/generated/lib/solid_objects/state.rbs
|
|
441
|
+
- sig/generated/lib/solid_objects/state_snapshot.rbs
|
|
427
442
|
- sig/generated/lib/solid_objects/stream_name.rbs
|
|
428
443
|
- sig/generated/lib/solid_objects/stream_token.rbs
|
|
429
444
|
- sig/generated/lib/solid_objects/supervisor.rbs
|
|
445
|
+
- sig/generated/lib/solid_objects/sync_deadline.rbs
|
|
446
|
+
- sig/generated/lib/solid_objects/sync_diagnostics.rbs
|
|
430
447
|
- sig/generated/lib/solid_objects/synchronous_invocation.rbs
|
|
448
|
+
- sig/generated/lib/solid_objects/test_helper.rbs
|
|
431
449
|
- sig/generated/lib/solid_objects/turbo_stream_renderer.rbs
|
|
432
450
|
- sig/generated/lib/solid_objects/version.rbs
|
|
433
451
|
- sig/generated/lib/solid_objects/wake_up.rbs
|