Description:
added termination reporting to grader (using at_exit) git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@377 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r70:347e4eeef742 - - 1 file changed: 8 inserted, 3 deleted

@@ -107,48 +107,56
107 107 # this is needed because method log needs it. TODO: clean this up
108 108 class << config
109 109 attr_accessor :grader_mode
110 110 end
111 111 config.grader_mode = grader_mode
112 112
113 113 # reading rails environment
114 114 log 'Reading rails environment'
115 115
116 116 RAILS_ENV = config.rails_env
117 117 require RAILS_ROOT + '/config/environment'
118 118
119 119 # register grader process
120 120 if config.report_grader
121 121 grader_proc = GraderProcess.register(config.grader_hostname,
122 122 Process.pid,
123 123 grader_mode)
124 124 else
125 125 grader_proc = nil
126 126 end
127 127
128 128 #set loggin environment
129 129 ENV['GRADER_LOGGING'] = log_file_name
130 130
131 + # register exit handler to report inactive, and terminated
132 + at_exit do
133 + if grader_proc!=nil
134 + grader_proc.report_inactive
135 + grader_proc.terminate
136 + end
137 + end
138 +
131 139 #
132 140 # MAIN LOOP
133 141 #
134 142
135 143 case grader_mode
136 144 when "queue", "test_request"
137 145 log "Grader: #{grader_mode}"
138 146 if grader_mode=="queue"
139 147 engine = Grader::Engine.new
140 148 else
141 149 engine = Grader::Engine.new(Grader::TestRequestRoomMaker.new,
142 150 Grader::TestRequestReporter.new)
143 151 end
144 152
145 153 runner = Grader::Runner.new(engine, grader_proc)
146 154 while true
147 155
148 156 if check_stopfile # created by calling grader stop
149 157 clear_stopfile
150 158 log "stopped (with stop file)"
151 159 break
152 160 end
153 161
154 162 if grader_mode=="queue"
@@ -186,27 +194,24
186 194 grader_proc.report_active if grader_proc!=nil
187 195
188 196 ARGV.shift
189 197 ARGV.shift
190 198
191 199 ARGV.each do |sub_id|
192 200 puts "Grading #{sub_id}"
193 201 begin
194 202 submission = Submission.find(sub_id.to_i)
195 203 rescue ActiveRecord::RecordNotFound
196 204 puts "Record not found"
197 205 submission = nil
198 206 end
199 207
200 208 if submission!=nil
201 209 runner.grade_submission(submission)
202 210 end
203 211 end
204 212
205 213 else
206 214 display_manual
207 215 exit(0)
208 216 end
209 217
210 - # report inactive
211 - grader_proc.report_inactive if grader_proc!=nil
212 -
You need to be logged in to leave comments. Login now