Class: OpenC3::CleanupMicroservice
- Inherits:
-
Microservice
- Object
- Microservice
- OpenC3::CleanupMicroservice
- Defined in:
- lib/openc3/microservices/cleanup_microservice.rb
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Microservice
#count, #custom, #error, #logger, #microservice_status_thread, #name, #scope, #secrets, #state
Instance Method Summary collapse
- #cleanup(areas, cleanup_poll_time) ⇒ Object
-
#initialize(*args) ⇒ CleanupMicroservice
constructor
A new instance of CleanupMicroservice.
- #run ⇒ Object
- #shutdown ⇒ Object
Methods inherited from Microservice
Constructor Details
#initialize(*args) ⇒ CleanupMicroservice
Returns a new instance of CleanupMicroservice.
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 |
# 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| bucket.delete_objects(bucket: ENV['OPENC3_LOGS_BUCKET'], keys: slice) @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 |
#run ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 68 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 |
#shutdown ⇒ Object
86 87 88 89 |
# File 'lib/openc3/microservices/cleanup_microservice.rb', line 86 def shutdown @sleeper.cancel super() end |