Use optimistic locking to safely migrate a build trace chunk
What does this MR do?
This merge request adds support for using optimistic locking when flushing build trace chunks to the object storage.
This has been explained in a more detail in #263138 (comment 425246081).
Migration
== 20201007115209 AddLockVersionToCiBuildTraceChunk: migrating ================
-- add_column(:ci_build_trace_chunks, :lock_version, :integer, {:default=>0})
-> 0.0921s
== 20201007115209 AddLockVersionToCiBuildTraceChunk: migrated (0.0922s) =======
== 20201007115209 AddLockVersionToCiBuildTraceChunk: reverting ================
-- remove_column(:ci_build_trace_chunks, :lock_version, :integer, {:default=>0})
-> 0.0822s
== 20201007115209 AddLockVersionToCiBuildTraceChunk: reverted (0.0832s) =======
Conformity
/cc @smcgivern
Edited by Grzegorz Bizon