Description:
[web] fixed bug in grader_process update git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@254 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

r126:b4095ef6a972 - - 1 file changed: 8 inserted, 2 deleted

@@ -1,57 +1,63
1 class GraderProcess < ActiveRecord::Base
1 class GraderProcess < ActiveRecord::Base
2
2
3 def self.find_by_host_and_pid(host,pid)
3 def self.find_by_host_and_pid(host,pid)
4 return GraderProcess.find(:first,
4 return GraderProcess.find(:first,
5 :conditions => {
5 :conditions => {
6 :host => host,
6 :host => host,
7 :pid => pid
7 :pid => pid
8 })
8 })
9 end
9 end
10
10
11 def self.register(host,pid,mode)
11 def self.register(host,pid,mode)
12 grader = GraderProcess.find_by_host_and_pid(host,pid)
12 grader = GraderProcess.find_by_host_and_pid(host,pid)
13 if grader
13 if grader
14 grader.mode = mode
14 grader.mode = mode
15 grader.active = nil
15 grader.active = nil
16 grader.task_id = nil
16 grader.task_id = nil
17 grader.task_type = nil
17 grader.task_type = nil
18 grader.save
18 grader.save
19 else
19 else
20 grader = GraderProcess.create(:host => host,
20 grader = GraderProcess.create(:host => host,
21 :pid => pid,
21 :pid => pid,
22 :mode => mode)
22 :mode => mode)
23 end
23 end
24 grader
24 grader
25 end
25 end
26
26
27 def self.find_stalled_process()
27 def self.find_stalled_process()
28 GraderProcess.find(:all,
28 GraderProcess.find(:all,
29 :conditions => ["active AND updated_at < ?",
29 :conditions => ["active AND updated_at < ?",
30 Time.now.gmtime - GraderProcess.stalled_time])
30 Time.now.gmtime - GraderProcess.stalled_time])
31 end
31 end
32
32
33 def report_active(task=nil)
33 def report_active(task=nil)
34 self.active = true
34 self.active = true
35 if task!=nil
35 if task!=nil
36 self.task_id = task.id
36 self.task_id = task.id
37 + self.task_type = task.class.to_s
37 else
38 else
38 self.task_id = nil
39 self.task_id = nil
40 + self.task_type = nil
39 end
41 end
40 - self.task_type = task.class.to_s
41 self.save
42 self.save
42 end
43 end
43
44
44 - def report_inactive()
45 + def report_inactive(task=nil)
45 self.active = false
46 self.active = false
47 + if task!=nil
48 + self.task_id = task.id
49 + self.task_type = task.class.to_s
50 + else
46 self.task_id = nil
51 self.task_id = nil
47 self.task_type = nil
52 self.task_type = nil
53 + end
48 self.save
54 self.save
49 end
55 end
50
56
51 protected
57 protected
52
58
53 def self.stalled_time()
59 def self.stalled_time()
54 return 1.minute
60 return 1.minute
55 end
61 end
56
62
57 end
63 end
You need to be logged in to leave comments. Login now