Module: Neo4j::Transaction

Extended by:
Transaction
Included in:
Transaction
Defined in:
lib/neo4j/transaction.rb

Defined Under Namespace

Modules: Instance

Instance Method Summary collapse

Instance Method Details

#currentNeo4j::Transaction

Returns:



99
100
101
# File 'lib/neo4j/transaction.rb', line 99

def current
  Thread.current[:neo4j_curr_tx]
end

#new(current = Session.current!) ⇒ Neo4j::Transaction::Instance



70
71
72
# File 'lib/neo4j/transaction.rb', line 70

def new(current = Session.current!)
  current.begin_tx
end

#register(tx) ⇒ Object



109
110
111
112
113
# File 'lib/neo4j/transaction.rb', line 109

def register(tx)
  # we don't support running more then one transaction per thread
  fail 'Already running a transaction' if current
  Thread.current[:neo4j_curr_tx] = tx
end

#run(run_in_tx = true) ⇒ Object

Runs the given block in a new transaction. @@yield [Neo4j::Transaction::Instance]

Parameters:

  • run_in_tx (Boolean) (defaults to: true)

    if true a new transaction will not be created, instead if will simply yield to the given block



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/neo4j/transaction.rb', line 77

def run(run_in_tx = true)
  fail ArgumentError, 'Expected a block to run in Transaction.run' unless block_given?

  return yield(nil) unless run_in_tx

  begin
    tx = Neo4j::Transaction.new
    ret = yield tx
  rescue Exception => e # rubocop:disable Lint/RescueException
    if e.respond_to?(:cause) && e.cause.respond_to?(:print_stack_trace)
      puts "Java Exception in a transaction, cause: #{e.cause}"
      e.cause.print_stack_trace
    end
    tx.mark_failed unless tx.nil?
    raise
  ensure
    tx.close unless tx.nil?
  end
  ret
end

#unregister(tx) ⇒ Object



104
105
106
# File 'lib/neo4j/transaction.rb', line 104

def unregister(tx)
  Thread.current[:neo4j_curr_tx] = nil if tx == Thread.current[:neo4j_curr_tx]
end

#unregister_currentObject



116
117
118
# File 'lib/neo4j/transaction.rb', line 116

def unregister_current
  Thread.current[:neo4j_curr_tx] = nil
end