Module: DispatchPolicy

Defined in:
lib/dispatch_policy.rb,
lib/dispatch_policy/gate.rb,
lib/dispatch_policy/tick.rb,
lib/dispatch_policy/engine.rb,
lib/dispatch_policy/policy.rb,
lib/dispatch_policy/version.rb,
lib/dispatch_policy/tick_loop.rb,
lib/dispatch_policy/dispatchable.rb,
lib/dispatch_policy/gates/throttle.rb,
lib/dispatch_policy/dispatch_context.rb,
lib/dispatch_policy/gates/global_cap.rb,
app/models/dispatch_policy/staged_job.rb,
lib/dispatch_policy/gates/concurrency.rb,
lib/dispatch_policy/gates/fair_interleave.rb,
app/models/dispatch_policy/throttle_bucket.rb,
app/models/dispatch_policy/application_record.rb,
lib/dispatch_policy/gates/adaptive_concurrency.rb,
app/models/dispatch_policy/partition_observation.rb,
app/controllers/dispatch_policy/policies_controller.rb,
app/models/dispatch_policy/partition_inflight_count.rb,
app/models/dispatch_policy/adaptive_concurrency_stats.rb,
app/controllers/dispatch_policy/application_controller.rb,
lib/dispatch_policy/active_job_perform_all_later_patch.rb

Defined Under Namespace

Modules: ActiveJobPerformAllLaterPatch, Dispatchable, Gates Classes: AdaptiveConcurrencyStats, ApplicationController, ApplicationRecord, Config, DispatchContext, Engine, Gate, PartitionInflightCount, PartitionObservation, PoliciesController, Policy, StagedJob, ThrottleBucket, Tick, TickLoop

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.configObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dispatch_policy.rb', line 23

def self.config
  @config ||= Config.new(
    enabled:               true,
    lease_duration:        15 * 60,          # 15.minutes
    batch_size:            500,
    round_robin_quantum:   50,
    tick_max_duration:     60,               # 1.minute
    tick_sleep:            1,                # idle sleep
    tick_sleep_busy:       0.05,             # busy sleep
    partition_idle_ttl:    30 * 60,          # 30.minutes
    # Hard cap on rows the admin's partition breakdown will pull per
    # aggregation. Protects the host DB and process when a policy has
    # tens of thousands of partitions: the admin shows the top-N most
    # active and a truncation banner instead of dragging in everything.
    admin_partition_limit: 5_000
  )
end

.configure {|config| ... } ⇒ Object

Yields:



41
42
43
# File 'lib/dispatch_policy.rb', line 41

def self.configure
  yield config
end

.enabled?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/dispatch_policy.rb', line 45

def self.enabled?
  config.enabled != false
end

.registryObject

Registry: policy_name => job_class. Populated by Policy#initialize.



50
51
52
# File 'lib/dispatch_policy.rb', line 50

def self.registry
  @registry ||= {}
end

.reset_registry!Object



54
55
56
# File 'lib/dispatch_policy.rb', line 54

def self.reset_registry!
  @registry = {}
end