Module: Wakame::StatusDB
- Defined in:
- lib/wakame/status_db.rb
Defined Under Namespace
Classes: Model, SequelAdapter, WorkerThread
Class Method Summary
collapse
Class Method Details
.adapter ⇒ Object
81
82
83
|
# File 'lib/wakame/status_db.rb', line 81
def self.adapter
@adapter ||= SequelAdapter.new
end
|
.barrier(&blk) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/wakame/status_db.rb', line 15
def self.barrier(&blk)
abort "Cant use barrier() in side of the EventMachine thread." if Kernel.const_defined?(:EventMachine) && ::EventMachine.reactor_thread?
if Thread.current == WorkerThread.worker_thread
return blk.call
end
@q ||= ::Queue.new
time_start = ::Time.now
self.pass {
begin
res = blk.call
@q << [true, res]
rescue => e
@q << [false, e]
end
}
res = @q.shift
time_elapsed = ::Time.now - time_start
Wakame.log.debug("#{self}.barrier: Elapsed time for #{blk}: #{time_elapsed} sec") if time_elapsed > 0.05
if res[0] == false && res[1].is_a?(Exception)
raise res[1]
end
res[1]
end
|