dynflow 1.4.6 → 1.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dynflow/action.rb +18 -9
- data/lib/dynflow/director/running_steps_manager.rb +1 -1
- data/lib/dynflow/dispatcher/client_dispatcher.rb +1 -1
- data/lib/dynflow/rails.rb +1 -1
- data/lib/dynflow/rails/configuration.rb +5 -1
- data/lib/dynflow/version.rb +1 -1
- data/lib/dynflow/world/invalidation.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ffff17987553c70b701f8f7e8b98f5a159c4d0498ccb45b9d41581204edb1b01
|
4
|
+
data.tar.gz: 1399c875ec759cf98a53925caa822e7e03aa8e1e61d9bd2e1957ab69bb07beb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51f14bfdcae3d32aaae92716a48668f119327cb8873130dbff7ce9551b40f64d0283037c5a77c5fdced78b612ed8046a449c44ec55e1377d56d247a0cedf3256
|
7
|
+
data.tar.gz: 54787c9fe54caa7227c4122470e398891e161618f5bb02f49332ea2e5a54190dd263e3d46a12691fe47218a81d026d67417b501e07785d6e9eda0aa89f4dd916
|
data/lib/dynflow/action.rb
CHANGED
@@ -352,15 +352,12 @@ module Dynflow
|
|
352
352
|
@step.state = state
|
353
353
|
end
|
354
354
|
|
355
|
+
# If this save returns an integer, it means it was an update. The number
|
356
|
+
# represents the number of updated records. If it is 0, then the step was in
|
357
|
+
# an unexpected state and couldn't be updated
|
355
358
|
def save_state(conditions = {})
|
356
359
|
phase! Executable
|
357
|
-
|
358
|
-
# represents the number of updated records. If it is 0, then the step
|
359
|
-
# was in an unexpected state and couldn't be updated, in which case we
|
360
|
-
# raise an exception and crash hard to prevent the step from being
|
361
|
-
# executed twice
|
362
|
-
count = @step.save(conditions)
|
363
|
-
raise 'Could not save state' if count.kind_of?(Integer) && !count.positive?
|
360
|
+
@step.save(conditions)
|
364
361
|
end
|
365
362
|
|
366
363
|
def delay(delay_options, *args)
|
@@ -536,11 +533,11 @@ module Dynflow
|
|
536
533
|
end
|
537
534
|
|
538
535
|
# TODO: This is getting out of hand, refactoring needed
|
536
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
539
537
|
def execute_run(event)
|
540
538
|
phase! Run
|
541
539
|
@world.logger.debug format('%13s %s:%2d got event %s',
|
542
540
|
'Step', execution_plan_id, @step.id, event) if event
|
543
|
-
@input = OutputReference.dereference @input, world.persistence
|
544
541
|
|
545
542
|
case
|
546
543
|
when state == :running
|
@@ -551,8 +548,19 @@ module Dynflow
|
|
551
548
|
raise 'event can be processed only when in suspended state'
|
552
549
|
end
|
553
550
|
|
551
|
+
old_state = self.state
|
554
552
|
self.state = :running unless self.state == :skipping
|
555
|
-
save_state(:state => %w(pending error skipping suspended))
|
553
|
+
saved = save_state(:state => %w(pending error skipping suspended))
|
554
|
+
if saved.kind_of?(Integer) && !saved.positive?
|
555
|
+
# The step was already in a state we're trying to transition to, most
|
556
|
+
# likely we were about to execute it for the second time after first
|
557
|
+
# execution was forcefully interrupted.
|
558
|
+
# Set error and return to prevent the step from being executed twice
|
559
|
+
set_error "Could not transition step from #{old_state} to #{self.state}, step already in #{self.state}."
|
560
|
+
return
|
561
|
+
end
|
562
|
+
|
563
|
+
@input = OutputReference.dereference @input, world.persistence
|
556
564
|
with_error_handling do
|
557
565
|
event = Skip if state == :skipping
|
558
566
|
|
@@ -573,6 +581,7 @@ module Dynflow
|
|
573
581
|
raise "wrong state #{state} when event:#{event}"
|
574
582
|
end
|
575
583
|
end
|
584
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
576
585
|
|
577
586
|
def execute_finalize
|
578
587
|
phase! Finalize
|
@@ -20,7 +20,7 @@ module Dynflow
|
|
20
20
|
def terminate
|
21
21
|
pending_work = @work_items.clear.values.flatten(1)
|
22
22
|
pending_work.each do |w|
|
23
|
-
if EventWorkItem === w
|
23
|
+
if EventWorkItem === w && w.event.result
|
24
24
|
w.event.result.reject UnprocessableEvent.new("dropping due to termination")
|
25
25
|
end
|
26
26
|
end
|
data/lib/dynflow/rails.rb
CHANGED
@@ -38,8 +38,8 @@ module Dynflow
|
|
38
38
|
init_world.tap do |world|
|
39
39
|
@world = world
|
40
40
|
config.run_on_init_hooks(false, world)
|
41
|
+
config.increase_db_pool_size(world)
|
41
42
|
unless config.remote?
|
42
|
-
config.increase_db_pool_size(world)
|
43
43
|
config.run_on_init_hooks(true, world)
|
44
44
|
# leave this just for long-running executors
|
45
45
|
unless config.rake_task_with_executor?
|
@@ -96,7 +96,11 @@ module Dynflow
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def increase_db_pool_size?
|
99
|
-
!::Rails.env.test? && !remote?
|
99
|
+
!::Rails.env.test? && (!remote? || sidekiq_worker?)
|
100
|
+
end
|
101
|
+
|
102
|
+
def sidekiq_worker?
|
103
|
+
defined?(::Sidekiq) && ::Sidekiq.options[:queues].any?
|
100
104
|
end
|
101
105
|
|
102
106
|
def calculate_db_pool_size(world)
|
data/lib/dynflow/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Necas
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 1970-01-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -640,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
640
640
|
- !ruby/object:Gem::Version
|
641
641
|
version: '0'
|
642
642
|
requirements: []
|
643
|
-
rubygems_version: 3.
|
643
|
+
rubygems_version: 3.1.2
|
644
644
|
signing_key:
|
645
645
|
specification_version: 4
|
646
646
|
summary: DYNamic workFLOW engine
|