Class: OpenC3::CleanupMicroservice
Instance Attribute Summary
Attributes inherited from Microservice
#count, #custom, #error, #logger, #microservice_status_thread, #name, #scope, #secrets, #state
Instance Method Summary
collapse
#as_json, #microservice_cmd, run, #setup_microservice_topic
Constructor Details
30
31
32
33
34
35
36
|
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 30
def initialize(*args)
super(*args)
@metric.set(name: 'cleanup_total', value: @count, type: 'counter')
@delete_count = 0
@metric.set(name: 'cleanup_delete_total', value: @delete_count, type: 'counter')
@sleeper = Sleeper.new
end
|
Instance Method Details
#cleanup(areas, cleanup_poll_time) ⇒ Object
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 38
def cleanup(areas, cleanup_poll_time)
bucket = Bucket.getClient()
while true
break if @cancel_thread
@state = 'GETTING_OBJECTS'
start_time = Time.now
areas.each do |prefix, retain_time|
next unless retain_time
time = start_time - retain_time
oldest_list = BucketUtilities.files_between_time(ENV['OPENC3_LOGS_BUCKET'], prefix, nil, time)
if oldest_list.length > 0
@state = 'DELETING_OBJECTS'
oldest_list.each_slice(1000) do |slice|
slice.each do |item|
bucket.delete_object(bucket: ENV['OPENC3_LOGS_BUCKET'], key: item)
end
@logger.debug("Cleanup deleted #{slice.length} log files")
@delete_count += slice.length
@metric.set(name: 'cleanup_delete_total', value: @delete_count, type: 'counter')
end
end
end
@count += 1
@metric.set(name: 'cleanup_total', value: @count, type: 'counter')
@state = 'SLEEPING'
break if @sleeper.sleep(cleanup_poll_time)
end
end
|
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 75
def run
split_name = @name.split("__")
target_name = split_name[-1]
target = TargetModel.get_model(name: target_name, scope: @scope)
areas = [
["#{@scope}/raw_logs/cmd/#{target_name}", target.cmd_log_retain_time],
["#{@scope}/decom_logs/cmd/#{target_name}", target.cmd_decom_log_retain_time],
["#{@scope}/raw_logs/tlm/#{target_name}", target.tlm_log_retain_time],
["#{@scope}/decom_logs/tlm/#{target_name}", target.tlm_decom_log_retain_time],
["#{@scope}/reduced_minute_logs/tlm/#{target_name}", target.reduced_minute_log_retain_time],
["#{@scope}/reduced_hour_logs/tlm/#{target_name}", target.reduced_hour_log_retain_time],
["#{@scope}/reduced_day_logs/tlm/#{target_name}", target.reduced_day_log_retain_time],
]
cleanup(areas, target.cleanup_poll_time)
end
|
93
94
95
96
|
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 93
def shutdown
@sleeper.cancel
super()
end
|