1
+ # frozen_string_literal: true
2
+
1
3
require 'rest_client'
2
4
require 'submission_packager'
3
5
@@ -17,18 +19,18 @@ def initialize(baseurl)
17
19
def self . try_to_send_submission_to_free_server ( submission , notify_url )
18
20
dir = ExerciseDir . get ( submission . exercise . clone_path )
19
21
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
27
29
end
28
30
for server in servers # could be smarter about this
29
31
begin
30
32
server . send_submission ( submission , notify_url )
31
- rescue SandboxUnavailableError => e
33
+ rescue SandboxUnavailableError => e
32
34
Rails . logger . warn e
33
35
# ignore
34
36
else
@@ -44,42 +46,38 @@ def self.try_to_send_submission_to_free_server(submission, notify_url)
44
46
def send_submission ( submission , notify_url )
45
47
exercise = submission . exercise
46
48
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?
49
51
50
52
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
74
61
submission . save!
75
- raise
62
+ rescue StandardError => e
63
+ puts e
64
+ raise SandboxUnavailableError
76
65
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
77
75
end
78
76
end
79
77
80
78
def try_to_seed_maven_cache ( file_path )
81
79
seed_maven_cache ( file_path )
82
- rescue
80
+ rescue StandardError
83
81
Rails . logger . warn "Failed to seed maven cache: #{ $!} "
84
82
end
85
83
@@ -104,19 +102,16 @@ def self.total_capacity
104
102
def capacity
105
103
@capacity ||= begin
106
104
get_status [ 'total_instances' ]
107
- rescue
105
+ rescue StandardError
108
106
nil
109
107
end
110
108
@capacity || 0
111
109
end
112
110
113
111
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
120
115
end
121
116
122
117
private
0 commit comments