Method: Perus::Server::DB.cleanup

Defined in:
lib/perus/server/db.rb

.cleanupObject



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/perus/server/db.rb', line 103

def self.cleanup
    puts 'Cleaning old values and metrics'
    keep_hours = Server.options.keep_hours

    # remove old values
    min_timestamp = Time.now.to_i - (keep_hours * 60 * 60)
    values = Value.where("timestamp < #{min_timestamp}")
    puts "Deleting #{values.count} values"
    values.each(&:destroy)

    # remove metrics from systems if they no longer have any values
    empty_deleted = 0
    file_deleted = 0

    Metric.each do |metric|
        if metric.file
            path = metric.path
            if !File.exists?(path) || File.mtime(path).to_i < min_timestamp
                metric.destroy
                file_deleted += 1
            end
        elsif metric.values_dataset.empty?
            metric.destroy
            empty_deleted += 1
        end
    end

    puts "#{empty_deleted} metrics were deleted as they had no values"
    puts "#{file_deleted} metrics were deleted as they had old files"
end