comparison of Integer with nil failed with canceling pipelines
Seen on dev (https://sentry.gitlab.net/gitlab/devgitlaborg/issues/2665399/):
Backtrace:
ActiveRecord::StaleObjectError: Attempted to update a stale object: Ci::Build.
from active_record/locking/optimistic.rb:95:in `_update_row'
from active_record/persistence.rb:918:in `_update_record'
from active_record/attribute_methods/dirty.rb:205:in `_update_record'
from active_record/callbacks.rb:335:in `block in _update_record'
from active_support/callbacks.rb:135:in `run_callbacks'
from active_support/callbacks.rb:825:in `_run_update_callbacks'
from active_record/callbacks.rb:335:in `_update_record'
from active_record/timestamp.rb:123:in `_update_record'
from active_record/persistence.rb:905:in `create_or_update'
from active_record/callbacks.rb:327:in `block in create_or_update'
from active_support/callbacks.rb:135:in `run_callbacks'
from active_support/callbacks.rb:825:in `_run_save_callbacks'
from active_record/callbacks.rb:327:in `create_or_update'
from active_record/timestamp.rb:128:in `create_or_update'
from active_record/persistence.rb:470:in `save'
from active_record/validations.rb:47:in `save'
from active_record/transactions.rb:314:in `block in save'
from active_record/transactions.rb:375:in `block in with_transaction_returning_status'
from active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
from active_record/transactions.rb:212:in `transaction'
from gitlab/database.rb:372:in `block in transaction'
from active_support/notifications.rb:180:in `block in instrument'
from active_support/notifications/instrumenter.rb:24:in `instrument'
from active_support/notifications.rb:180:in `instrument'
from gitlab/database.rb:371:in `transaction'
from active_record/transactions.rb:366:in `with_transaction_returning_status'
from active_record/transactions.rb:314:in `save'
from active_record/suppressor.rb:44:in `save'
from state_machines/integrations/active_record.rb:511:in `block in save'
from state_machines/integrations/active_record.rb:530:in `block in around_save'
from state_machines/transition_collection.rb:150:in `block in run_actions'
from state_machines/transition_collection.rb:170:in `catch_exceptions'
from state_machines/transition_collection.rb:148:in `run_actions'
from state_machines/transition_collection.rb:133:in `run_callbacks'
from state_machines/transition_collection.rb:224:in `run_callbacks'
from state_machines/transition_collection.rb:128:in `block in run_callbacks'
from state_machines/transition.rb:371:in `before'
from state_machines/transition.rb:190:in `block in run_callbacks'
from state_machines/transition.rb:292:in `block in pausable'
from state_machines/transition.rb:292:in `catch'
from state_machines/transition.rb:292:in `pausable'
from state_machines/transition.rb:190:in `run_callbacks'
from state_machines/transition_collection.rb:127:in `run_callbacks'
from state_machines/transition_collection.rb:212:in `run_callbacks'
from state_machines/transition_collection.rb:63:in `block (2 levels) in perform'
from state_machines/transition_collection.rb:63:in `catch'
from state_machines/transition_collection.rb:63:in `block in perform'
from state_machines/transition_collection.rb:182:in `block in within_transaction'
from state_machines/transition.rb:171:in `block in within_transaction'
from state_machines/machine.rb:1868:in `block in within_transaction'
from state_machines/integrations/active_record.rb:557:in `block in transaction'
from active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
from active_record/transactions.rb:212:in `transaction'
from gitlab/database.rb:372:in `block in transaction'
from active_support/notifications.rb:180:in `block in instrument'
from active_support/notifications/instrumenter.rb:24:in `instrument'
from active_support/notifications.rb:180:in `instrument'
from gitlab/database.rb:371:in `transaction'
from state_machines/integrations/active_record.rb:556:in `transaction'
from state_machines/machine.rb:1868:in `within_transaction'
from state_machines/transition.rb:170:in `within_transaction'
from state_machines/transition_collection.rb:181:in `within_transaction'
from state_machines/transition_collection.rb:62:in `perform'
from state_machines/integrations/active_record.rb:530:in `around_save'
from state_machines/integrations/active_record.rb:511:in `save'
from state_machines/transition_collection.rb:154:in `block (2 levels) in run_actions'
from state_machines/transition_collection.rb:154:in `each'
from state_machines/transition_collection.rb:154:in `block in run_actions'
from state_machines/transition_collection.rb:170:in `catch_exceptions'
from state_machines/transition_collection.rb:148:in `run_actions'
from state_machines/transition_collection.rb:60:in `perform'
from state_machines/transition.rb:163:in `perform'
from state_machines/event.rb:155:in `fire'
from state_machines/event.rb:219:in `block in add_actions'
from state_machines/machine.rb:729:in `block (2 levels) in define_helper'
from ci/pipeline.rb:591:in `block (3 levels) in cancel_running'
from ci/pipeline.rb:589:in `each'
from ci/pipeline.rb:589:in `block (2 levels) in cancel_running'
from active_record/relation/batches.rb:136:in `block in find_in_batches'
from active_record/relation/batches.rb:238:in `block in in_batches'
from active_record/relation/batches.rb:222:in `loop'
from active_record/relation/batches.rb:222:in `in_batches'
from active_record/relation/batches.rb:135:in `find_in_batches'
from ci/pipeline.rb:585:in `block in cancel_running'
from gitlab/optimistic_locking.rb:15:in `block in retry_lock'
from active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
from active_record/transactions.rb:212:in `transaction'
from gitlab/database.rb:372:in `block in transaction'
from active_support/notifications.rb:180:in `block in instrument'
from active_support/notifications/instrumenter.rb:24:in `instrument'
from active_support/notifications.rb:180:in `instrument'
from gitlab/database.rb:371:in `transaction'
from gitlab/optimistic_locking.rb:14:in `retry_lock'
from ci/pipeline.rb:584:in `cancel_running'
from gitlab/metrics/instrumentation.rb:162:in `cancel_running'
from ci/pipeline.rb:600:in `auto_cancel_running'
from gitlab/ci/pipeline/chain/cancel_pending_pipelines.rb:15:in `block (2 levels) in perform!'
from active_record/relation/batches.rb:70:in `block (2 levels) in find_each'
from active_record/relation/batches.rb:70:in `each'
from active_record/relation/batches.rb:70:in `block in find_each'
from active_record/relation/batches.rb:136:in `block in find_in_batches'
from active_record/relation/batches.rb:238:in `block in in_batches'
from active_record/relation/batches.rb:222:in `loop'
from active_record/relation/batches.rb:222:in `in_batches'
from active_record/relation/batches.rb:135:in `find_in_batches'
from active_record/relation/batches.rb:69:in `find_each'
from gitlab/ci/pipeline/chain/cancel_pending_pipelines.rb:14:in `block in perform!'
from gitlab/optimistic_locking.rb:15:in `block in retry_lock'
from active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
from active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
from active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
from active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
from active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
from active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
from active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
from active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
from active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
from active_record/transactions.rb:212:in `transaction'
from gitlab/database.rb:372:in `block in transaction'
from active_support/notifications.rb:180:in `block in instrument'
from active_support/notifications/instrumenter.rb:24:in `instrument'
from active_support/notifications.rb:180:in `instrument'
from gitlab/database.rb:371:in `transaction'
from gitlab/optimistic_locking.rb:14:in `retry_lock'
from gitlab/ci/pipeline/chain/cancel_pending_pipelines.rb:13:in `perform!'
from gitlab/ci/pipeline/chain/sequence.rb:19:in `block in build!'
from gitlab/ci/pipeline/chain/sequence.rb:16:in `each'
from gitlab/ci/pipeline/chain/sequence.rb:16:in `build!'
from ci/create_pipeline_service.rb:84:in `execute'
from ci/create_pipeline_service.rb:102:in `execute!'
from git/base_hooks_service.rb:61:in `create_pipelines'
from gitlab/metrics/instrumentation.rb:162:in `create_pipelines'
from git/base_hooks_service.rb:13:in `execute'
from gitlab/metrics/instrumentation.rb:162:in `execute'
from git/branch_hooks_service.rb:10:in `execute'
from gitlab/metrics/instrumentation.rb:162:in `execute'
from git/branch_push_service.rb:71:in `execute_related_hooks'
from gitlab/metrics/instrumentation.rb:162:in `execute_related_hooks'
from git/branch_push_service.rb:28:in `execute'
from gitlab/metrics/instrumentation.rb:162:in `execute'
from git/process_ref_changes_service.rb:57:in `block in process_changes'
from git/process_ref_changes_service.rb:47:in `each'
from git/process_ref_changes_service.rb:47:in `process_changes'
from gitlab/metrics/instrumentation.rb:162:in `process_changes'
from git/process_ref_changes_service.rb:20:in `block in process_changes_by_action'
from git/process_ref_changes_service.rb:19:in `each'
from git/process_ref_changes_service.rb:19:in `process_changes_by_action'
from gitlab/metrics/instrumentation.rb:162:in `process_changes_by_action'
from git/process_ref_changes_service.rb:10:in `execute'
from gitlab/metrics/instrumentation.rb:162:in `execute'
from post_receive.rb:114:in `process_ref_changes'
from post_receive.rb:60:in `process_project_changes'
from post_receive.rb:32:in `perform'
from sidekiq/processor.rb:192:in `execute_job'
from sidekiq/processor.rb:165:in `block (2 levels) in process'
from sidekiq/middleware/chain.rb:128:in `block in invoke'
from gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform'
from gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:40:in `perform'
from gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call'
from sidekiq/middleware/chain.rb:130:in `block in invoke'
from gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context'
from gitlab/sidekiq_middleware/worker_context/server.rb:17:in `block in call'
from gitlab/application_context.rb:70:in `block in use'
from labkit/context.rb:36:in `with_context'
from gitlab/application_context.rb:70:in `use'
from gitlab/application_context.rb:27:in `with_context'
from gitlab/sidekiq_middleware/worker_context/server.rb:15:in `call'
from sidekiq/middleware/chain.rb:130:in `block in invoke'
from gitlab/sidekiq_status/server_middleware.rb:7:in `call'
from sidekiq/middleware/chain.rb:130:in `block in invoke'
from gitlab/sidekiq_versioning/middleware.rb:9:in `call'
from sidekiq/middleware/chain.rb:130:in `block in invoke'
Edited by Furkan Ayhan