cartodb-4.42/script/20200921_do_datasets_redis_report.rb

46 lines
1.5 KiB
Ruby
Raw Normal View History

2024-04-06 13:25:13 +08:00
#!/usr/bin/env ruby
# [RAILS_ENV=staging] bundle exec rails runner script/20200921_do_datasets_redis_report.rb
include ActionView::Helpers::NumberHelper
# header
puts "sync size\t\t datasets/total\t username"
total_space_needed = 0
$users_metadata.keys("do:*:datasets").each do |k|
begin
username = k.split(':')[1]
user = User.where(username: username).first
extra_quota_needed = 0
datasets = $users_metadata.hget(k, :bq)
datasets = JSON.parse(datasets)
user_datasets = []
syncable_datasets = []
datasets.map do |dataset|
# Do not process already enriched datasets:
if !(dataset['sync_status'].present?) then
begin
doss = Carto::DoSyncServiceFactory.get_for_user(user)
entity_info = doss.entity_info(dataset['dataset_id'])
num_bytes = entity_info['num_bytes'].to_i || 0
if num_bytes <= 2147483648 then
extra_quota_needed += num_bytes
syncable_datasets << dataset
end
user_datasets << dataset
rescue Google::Apis::ClientError => e
# pass
end
end
end
total_space_needed += extra_quota_needed
if !user_datasets.empty? then
# printing user's report:
puts "#{number_to_human_size(extra_quota_needed)}\t\t #{syncable_datasets.size}/#{user_datasets.size}\t\t #{username} "
end
rescue
puts "** Error with #{username} **"
end
end
puts "------\nTotal extra quota: #{number_to_human_size(total_space_needed)} (#{total_space_needed} bytes)"