Skip to content
代码片段 群组 项目
未验证 提交 3813e873 编辑于 作者: Michael Kozono's avatar Michael Kozono 提交者: GitLab
浏览文件

Allow move to failed, from pending or failed

Changelog: fixed
EE: true
上级 86bb7f37
No related branches found
No related tags found
无相关合并请求
...@@ -44,6 +44,13 @@ def fail_sync_timeouts ...@@ -44,6 +44,13 @@ def fail_sync_timeouts
end end
end end
# Overridden by Geo::VerifiableRegistry
def before_pending
self.retry_at = nil
self.retry_count = 0
self.last_synced_at = nil
end
def before_synced def before_synced
self.retry_count = 0 self.retry_count = 0
self.last_sync_failure = nil self.last_sync_failure = nil
...@@ -84,9 +91,7 @@ def replicator_class ...@@ -84,9 +91,7 @@ def replicator_class
end end
before_transition any => :pending do |registry, _| before_transition any => :pending do |registry, _|
registry.retry_at = nil registry.before_pending
registry.retry_count = 0
registry.last_synced_at = nil
end end
before_transition any => :failed do |registry, _| before_transition any => :failed do |registry, _|
...@@ -111,7 +116,7 @@ def replicator_class ...@@ -111,7 +116,7 @@ def replicator_class
end end
event :failed do event :failed do
transition [:started, :synced] => :failed transition [:pending, :started, :synced, :failed] => :failed
end end
event :resync do event :resync do
......
...@@ -108,6 +108,13 @@ def verification_fields_default? ...@@ -108,6 +108,13 @@ def verification_fields_default?
end end
end end
override :before_pending
def before_pending
super
self.verification_disabled
end
override :after_synced override :after_synced
def after_synced def after_synced
unless ready_to_verify? unless ready_to_verify?
......
...@@ -181,6 +181,29 @@ ...@@ -181,6 +181,29 @@
expect(registry.retry_at).to be_within(10.minutes).of(4.hours.from_now) expect(registry.retry_at).to be_within(10.minutes).of(4.hours.from_now)
end end
end end
it 'can transition from any state' do
# initial state is started
registry.failed!(message: message)
expect(registry.reload.failed?).to be_truthy
registry.pending!
registry.failed!(message: message)
expect(registry.reload.failed?).to be_truthy
registry.failed!(message: message)
expect(registry.reload.failed?).to be_truthy
registry.synced!
registry.failed!(message: message)
expect(registry.reload.failed?).to be_truthy
end
end end
describe '#synced!' do describe '#synced!' do
......
...@@ -43,6 +43,28 @@ ...@@ -43,6 +43,28 @@
end end
end end
end end
context 'when transitioning to pending' do
context 'when synced' do
let(:registry) { create(registry_class_factory, :synced) }
it 'marks verification as disabled' do
registry.pending!
expect(registry.reload).to be_verification_disabled
end
end
context 'when failed' do
let(:registry) { create(registry_class_factory, :failed) }
it 'marks verification as disabled' do
registry.pending!
expect(registry.reload).to be_verification_disabled
end
end
end
end end
context 'verification_state machine' do context 'verification_state machine' do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册