Skip to content

Commit 483824c

Browse files
committed
Optimization
1 parent c394ccc commit 483824c

File tree

1 file changed

+37
-42
lines changed

1 file changed

+37
-42
lines changed

app/models/remote_sandbox.rb

Lines changed: 37 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'rest_client'
24
require 'submission_packager'
35

@@ -17,18 +19,18 @@ def initialize(baseurl)
1719
def self.try_to_send_submission_to_free_server(submission, notify_url)
1820
dir = ExerciseDir.get(submission.exercise.clone_path)
1921
servers = if submission.exercise && dir.safe_for_experimental_sandbox
20-
if dir.type == "java_maven"
21-
all_experimental.shuffle
22-
else
23-
all_experimental.shuffle + all.shuffle
24-
end
25-
else
26-
all.shuffle
22+
if dir.type == 'java_maven'
23+
all_experimental.shuffle
24+
else
25+
all_experimental.shuffle + all.shuffle
26+
end
27+
else
28+
all.shuffle
2729
end
2830
for server in servers # could be smarter about this
2931
begin
3032
server.send_submission(submission, notify_url)
31-
rescue SandboxUnavailableError=>e
33+
rescue SandboxUnavailableError => e
3234
Rails.logger.warn e
3335
# ignore
3436
else
@@ -44,42 +46,38 @@ def self.try_to_send_submission_to_free_server(submission, notify_url)
4446
def send_submission(submission, notify_url)
4547
exercise = submission.exercise
4648

47-
fail 'Submission has no secret token' if submission.secret_token.blank?
48-
fail "Exercise #{submission.exercise_name} for submission gone. Cannot resubmit." if exercise.nil?
49+
raise 'Submission has no secret token' if submission.secret_token.blank?
50+
raise "Exercise #{submission.exercise_name} for submission gone. Cannot resubmit." if exercise.nil?
4951

5052
Dir.mktmpdir do |tmpdir|
51-
begin
52-
zip_path = "#{tmpdir}/submission.zip"
53-
tar_path = "#{tmpdir}/submission.tar"
54-
File.open(zip_path, 'wb') { |f| f.write(submission.return_file) }
55-
SubmissionPackager.get(exercise).package_submission(exercise, zip_path, tar_path, submission.params)
56-
57-
File.open(tar_path, 'r') do |tar_file|
58-
begin
59-
RestClient.post post_url, file: tar_file, notify: notify_url, token: submission.secret_token
60-
submission.sandbox = post_url
61-
submission.save!
62-
rescue => e
63-
puts e
64-
raise SandboxUnavailableError.new
65-
end
66-
end
67-
rescue SandboxUnavailableError
68-
raise
69-
rescue
70-
Rails.logger.info "Submission #{submission.id} could not be packaged: #{$1}"
71-
Rails.logger.info "Marking submission #{submission.id} as failed."
72-
submission.pretest_error = 'Failed to process submission. Likely sent in incorrect format.'
73-
submission.processed = true
53+
zip_path = "#{tmpdir}/submission.zip"
54+
tar_path = "#{tmpdir}/submission.tar"
55+
File.open(zip_path, 'wb') { |f| f.write(submission.return_file) }
56+
SubmissionPackager.get(exercise).package_submission(exercise, zip_path, tar_path, submission.params)
57+
58+
File.open(tar_path, 'r') do |tar_file|
59+
RestClient.post post_url, file: tar_file, notify: notify_url, token: submission.secret_token
60+
submission.sandbox = post_url
7461
submission.save!
75-
raise
62+
rescue StandardError => e
63+
puts e
64+
raise SandboxUnavailableError
7665
end
66+
rescue SandboxUnavailableError
67+
raise
68+
rescue StandardError
69+
Rails.logger.info "Submission #{submission.id} could not be packaged: #{Regexp.last_match(1)}"
70+
Rails.logger.info "Marking submission #{submission.id} as failed."
71+
submission.pretest_error = 'Failed to process submission. Likely sent in incorrect format.'
72+
submission.processed = true
73+
submission.save!
74+
raise
7775
end
7876
end
7977

8078
def try_to_seed_maven_cache(file_path)
8179
seed_maven_cache(file_path)
82-
rescue
80+
rescue StandardError
8381
Rails.logger.warn "Failed to seed maven cache: #{$!}"
8482
end
8583

@@ -104,19 +102,16 @@ def self.total_capacity
104102
def capacity
105103
@capacity ||= begin
106104
get_status['total_instances']
107-
rescue
105+
rescue StandardError
108106
nil
109107
end
110108
@capacity || 0
111109
end
112110

113111
def busy_instances
114-
@busy_instances ||= begin
115-
get_status['busy_instances']
116-
rescue
117-
nil
118-
end
119-
@busy_instances || 0
112+
get_status['busy_instances']
113+
rescue StandardError
114+
0
120115
end
121116

122117
private

0 commit comments

Comments
 (0)