/usr/lib/ruby/vendor_ruby/em-synchrony/mongo.rb is in ruby-em-synchrony 1.0.5-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | begin
require "mongo"
rescue LoadError => error
raise "Missing EM-Synchrony dependency: gem install mongo"
end
# monkey-patch Mongo to use em-synchrony's socket and thread classs
old_verbose = $VERBOSE
begin
$VERBOSE = nil
class Mongo::Connection
TCPSocket = ::EventMachine::Synchrony::TCPSocket
Mutex = ::EventMachine::Synchrony::Thread::Mutex
ConditionVariable = ::EventMachine::Synchrony::Thread::ConditionVariable
end
class Mongo::Pool
TCPSocket = ::EventMachine::Synchrony::TCPSocket
Mutex = ::EventMachine::Synchrony::Thread::Mutex
ConditionVariable = ::EventMachine::Synchrony::Thread::ConditionVariable
end
class EventMachine::Synchrony::MongoTimeoutHandler
def self.timeout(op_timeout, ex_class, &block)
f = Fiber.current
timer = EM::Timer.new(op_timeout) { f.resume(nil) }
res = block.call
timer.cancel
res
end
end
Mongo::TimeoutHandler = EventMachine::Synchrony::MongoTimeoutHandler
ensure
$VERBOSE = old_verbose
end
|