Class: Isono::NodeModules::DataStore
- Inherits:
-
Base
- Object
- Base
- Isono::NodeModules::DataStore
show all
- Includes:
- Logger
- Defined in:
- lib/isono/node_modules/data_store.rb
Instance Attribute Summary collapse
Attributes inherited from Base
#node
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Logger
included, initialize
Methods inherited from Base
#config_section, #initialize, #manifest, #value_object
Instance Attribute Details
#db_writer_thread ⇒ Object
Returns the value of attribute db_writer_thread.
65
66
67
|
# File 'lib/isono/node_modules/data_store.rb', line 65
def db_writer_thread
@db_writer_thread
end
|
Class Method Details
.barrier(&blk) ⇒ Object
42
43
44
45
46
|
# File 'lib/isono/node_modules/data_store.rb', line 42
def self.barrier(&blk)
@instance.db_writer_thread.barrier {
process_single_tx(blk)
}
end
|
.create_instance(node) ⇒ Object
32
33
34
|
# File 'lib/isono/node_modules/data_store.rb', line 32
def self.create_instance(node)
@instance = self.new(node)
end
|
.disconnected? ⇒ Boolean
61
62
63
|
# File 'lib/isono/node_modules/data_store.rb', line 61
def self.disconnected?
Sequel::DATABASES.first.nil? || Sequel::DATABASES.first.pool.size == 0
end
|
.pass(&blk) ⇒ Object
36
37
38
39
40
|
# File 'lib/isono/node_modules/data_store.rb', line 36
def self.pass(&blk)
@instance.db_writer_thread.pass {
process_single_tx(blk)
}
end
|
.process_single_tx(blk) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/isono/node_modules/data_store.rb', line 48
def self.process_single_tx(blk)
@instance.establish_connection
db = Sequel::DATABASES.first
begin
db.transaction {
blk.call
}
rescue Sequel::DatabaseError, Sequel::DatabaseConnectionError => e
db.disconnect
raise e
end
end
|
Instance Method Details
#establish_connection ⇒ Object
77
78
79
|
# File 'lib/isono/node_modules/data_store.rb', line 77
def establish_connection
config_section.connection_block.call(self)
end
|