cartodb/app/models/carto/helpers/batch_queries_statement_timeout.rb
2020-06-15 10:58:47 +08:00

31 lines
1.1 KiB
Ruby

module Carto
module BatchQueriesStatementTimeout
def batch_queries_statement_timeout
if !defined?(@batch_queries_statement_timeout)
timeout_str = $users_metadata.HMGET(batch_limits_key, 'timeout').first
@batch_queries_statement_timeout = timeout_str.nil? ? nil : timeout_str.to_i
end
@batch_queries_statement_timeout
end
def batch_queries_statement_timeout=(timeout_ms)
unless !timeout_ms.present? || timeout_ms.to_i > 0
raise 'batch_queries_statement_timeout must be nil or an integer greater than 0'
end
if !timeout_ms.present?
# NOTE: nil is cast to the empty string in redis (""), which can be cast to 0 in
# the SQL API. In order to prevent undesired behavior, just delete this key.
@batch_queries_statement_timeout = nil
$users_metadata.HDEL batch_limits_key, 'timeout'
else
@batch_queries_statement_timeout = timeout_ms.to_i
$users_metadata.HMSET batch_limits_key, 'timeout', @batch_queries_statement_timeout
end
end
def batch_limits_key
"limits:batch:#{username}"
end
end
end