Method: Factbase::Looged#txn

Defined in:
lib/factbase/looged.rb

#txn(this = self) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/factbase/looged.rb', line 58

def txn(this = self, &)
  start = Time.now
  id = nil
  rollback = false
  r = @fb.txn(this) do |fbt|
    id = fbt.object_id
    yield fbt
  rescue Factbase::Rollback => e
    rollback = true
    raise e
  end
  if rollback
    @loog.debug("Txn ##{id} rolled back in #{start.ago}")
  else
    @loog.debug("Txn ##{id} #{r ? 'modified' : 'didn\'t touch'} the factbase in #{start.ago}")
  end
  r
end