Class: Ci::BuildTraceMetadata
Constant Summary
collapse
- MAX_ATTEMPTS =
5
Partitionable::MUTEX
ApplicationRecord::MAX_PLUCK
ResetOnUnionError::MAX_RESET_PERIOD
Class Method Summary
collapse
Instance Method Summary
collapse
model_name, table_name_prefix
cached_column_list, #create_or_load_association, declarative_enum, default_select_columns, id_in, id_not_in, iid_in, pluck_primary_key, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
#serializable_hash
Class Method Details
.find_or_upsert_for!(build_id, partition_id) ⇒ Object
22
23
24
25
26
27
28
|
# File 'app/models/ci/build_trace_metadata.rb', line 22
def self.find_or_upsert_for!(build_id, partition_id)
record = find_by(build_id: build_id, partition_id: partition_id)
return record if record
upsert({ build_id: build_id, partition_id: partition_id }, unique_by: :build_id)
find_by!(build_id: build_id, partition_id: partition_id)
end
|
Instance Method Details
#archival_attempts_available? ⇒ Boolean
39
40
41
|
# File 'app/models/ci/build_trace_metadata.rb', line 39
def archival_attempts_available?
archival_attempts <= MAX_ATTEMPTS
end
|
#archival_attempts_message ⇒ Object
51
52
53
54
55
56
57
|
# File 'app/models/ci/build_trace_metadata.rb', line 51
def archival_attempts_message
if archival_attempts_available?
'The job can not be archived right now.'
else
'The job is out of archival attempts.'
end
end
|
#can_attempt_archival_now? ⇒ Boolean
The job is retried around 5 times during the 7 days retention period for trace chunks as defined in ‘Ci::BuildTraceChunks::RedisBase::CHUNK_REDIS_TTL`
32
33
34
35
36
37
|
# File 'app/models/ci/build_trace_metadata.rb', line 32
def can_attempt_archival_now?
return false unless archival_attempts_available?
return true unless last_archival_attempt_at
last_archival_attempt_at + backoff < Time.current
end
|
#increment_archival_attempts! ⇒ Object
43
44
45
|
# File 'app/models/ci/build_trace_metadata.rb', line 43
def increment_archival_attempts!
increment!(:archival_attempts, touch: :last_archival_attempt_at)
end
|
#remote_checksum_valid? ⇒ Boolean
59
60
61
62
|
# File 'app/models/ci/build_trace_metadata.rb', line 59
def remote_checksum_valid?
checksum.present? &&
checksum == remote_checksum
end
|
#track_archival!(trace_artifact_id, checksum) ⇒ Object
47
48
49
|
# File 'app/models/ci/build_trace_metadata.rb', line 47
def track_archival!(trace_artifact_id, checksum)
update!(trace_artifact_id: trace_artifact_id, checksum: checksum, archived_at: Time.current)
end
|