Class: Mongoid::Transaction

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid/transaction.rb

Constant Summary collapse

ISOLATIOAN_LEVELS =

Tokumx supports 3 isolation levels. default is mvcc

['mvcc', 'serializable', 'readUncommitted']

Class Method Summary collapse

Class Method Details

.execute(isolation_level = "mvcc", &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/mongoid/transaction.rb', line 6

def self.execute(isolation_level = "mvcc", &block)
  session =  Mongoid.default_session
  raise 'Invalid isolation level' unless ISOLATIOAN_LEVELS.include? isolation_level
  # If transaction is not supported excute queries by default behaviour of
  # mongo
  if transaction_supported?(session, isolation_level)
    begin
      # Transaction is started when we called transaction_supported? so yield
      # block here
      yield(block)
      commit_transaction(session)
      true
    rescue Exception => e
      rollback_transaction(session) 
      raise e
    end
  else
    yield(block)  
  end
end