Class: Neo4j::Transaction::Base

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

Direct Known Subclasses

Core::CypherSession::Transactions::Base

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session, _options = {}) ⇒ Base

Returns a new instance of Base.



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/neo4j/transaction.rb', line 18

def initialize(session, _options = {})
  @session = session

  Transaction.stack_for(session) << self

  @root = Transaction.stack_for(session).first
  # Neo4j::Core::Label::SCHEMA_QUERY_SEMAPHORE.lock if root?

  # @parent = session_transaction_stack.last
  # session_transaction_stack << self
end

Instance Attribute Details

#rootObject (readonly)

Returns the value of attribute root.



16
17
18
# File 'lib/neo4j/transaction.rb', line 16

def root
  @root
end

#sessionObject (readonly)

Returns the value of attribute session.



16
17
18
# File 'lib/neo4j/transaction.rb', line 16

def session
  @session
end

Instance Method Details

#autoclosed!Object



57
58
59
# File 'lib/neo4j/transaction.rb', line 57

def autoclosed!
  @autoclosed = true if transient_failures_autoclose?
end

#closeObject

Commits or marks this transaction for rollback, depending on whether #mark_failed has been previously invoked.



39
40
41
42
43
44
45
46
47
# File 'lib/neo4j/transaction.rb', line 39

def close
  tx_stack = Transaction.stack_for(@session)
  fail 'Tried closing when transaction stack is empty (maybe you closed too many?)' if tx_stack.empty?
  fail "Closed transaction which wasn't the most recent on the stack (maybe you forgot to close one?)" if tx_stack.pop != self

  @closed = true

  post_close! if tx_stack.empty?
end

#closed?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/neo4j/transaction.rb', line 61

def closed?
  !!@closed
end

#commitObject



53
54
55
# File 'lib/neo4j/transaction.rb', line 53

def commit
  fail 'not implemented'
end

#deleteObject



49
50
51
# File 'lib/neo4j/transaction.rb', line 49

def delete
  fail 'not implemented'
end

#expired?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/neo4j/transaction.rb', line 87

def expired?
  !!@expired
end

#failed?Boolean Also known as: failure?

If it has been marked as failed. Aliased for legacy purposes.

Returns:

  • (Boolean)


77
78
79
# File 'lib/neo4j/transaction.rb', line 77

def failed?
  !!@failure
end

#inspectObject



30
31
32
33
34
35
36
# File 'lib/neo4j/transaction.rb', line 30

def inspect
  status_string = %i[id failed? active? commit_url].map do |method|
    "#{method}: #{send(method)}" if respond_to?(method)
  end.compact.join(', ')

  "<#{self.class} [#{status_string}]"
end

#mark_expiredObject



82
83
84
85
# File 'lib/neo4j/transaction.rb', line 82

def mark_expired
  @parent.mark_expired if @parent
  @expired = true
end

#mark_failedObject Also known as: failure

Marks this transaction as failed, which means that it will unconditionally be rolled back when #close is called. Aliased for legacy purposes.



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

def mark_failed
  root.mark_failed if root && root != self
  @failure = true
end

#root?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/neo4j/transaction.rb', line 91

def root?
  @root == self
end