Retry inserts, lazy patch to solve sqlite3 concurrency

This commit is contained in:
Hugo Peixoto 2023-08-01 14:21:01 +01:00
parent 53fc8b74bb
commit d1a4ea3d16

15
main.rb
View File

@ -20,6 +20,19 @@ def h(bytes)
end end
end end
def attempt(attempts, &block)
begin
block.call
rescue
if attempts > 1
attempts -= 1
retry
else
raise
end
end
end
set :public_folder, __dir__ + '/public' set :public_folder, __dir__ + '/public'
get '/' do get '/' do
downloads = ActiveRecord::Base.connection.execute(" downloads = ActiveRecord::Base.connection.execute("
@ -73,12 +86,14 @@ post '/video' do
data = JSON.parse(request.body.read) data = JSON.parse(request.body.read)
attempt(10) do
Download.create!( Download.create!(
video: Video.find_by!(randname: data["video_id"]), video: Video.find_by!(randname: data["video_id"]),
size: data["size"], size: data["size"],
sha256: data["sha256"], sha256: data["sha256"],
email: data["email"], email: data["email"],
) )
end
{ status: 'ok' }.to_json { status: 'ok' }.to_json
end end