Bug: database timeouts were set only on the main database, not on the post and pool versions database, so users effectively had an unlimited timeout when dealing with these things.
40 lines
1.0 KiB
Ruby
40 lines
1.0 KiB
Ruby
class PoolVersionsController < ApplicationController
|
|
respond_to :html, :xml, :json
|
|
before_action :check_availabililty
|
|
around_action :set_timeout
|
|
|
|
def index
|
|
if params[:search] && params[:search][:pool_id].present?
|
|
@pool = Pool.find(params[:search][:pool_id])
|
|
end
|
|
|
|
@pool_versions = PoolArchive.search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
|
|
respond_with(@pool_versions)
|
|
end
|
|
|
|
def diff
|
|
@pool_version = PoolArchive.find(params[:id])
|
|
|
|
if params[:other_id]
|
|
@other_version = PoolArchive.find(params[:other_id])
|
|
else
|
|
@other_version = @pool_version.previous
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def set_timeout
|
|
PoolArchive.connection.execute("SET statement_timeout = #{CurrentUser.user.statement_timeout}")
|
|
yield
|
|
ensure
|
|
PoolArchive.connection.execute("SET statement_timeout = 0")
|
|
end
|
|
|
|
def check_availabililty
|
|
if !PoolArchive.enabled?
|
|
raise NotImplementedError.new("Archive service is not configured. Pool versions are not saved.")
|
|
end
|
|
end
|
|
end
|