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.
68
69
70
|
# File 'lib/isono/node_modules/data_store.rb', line 68
def db_writer_thread
@db_writer_thread
end
|
Class Method Details
.barrier(&blk) ⇒ Object
45
46
47
48
49
|
# File 'lib/isono/node_modules/data_store.rb', line 45
def self.barrier(&blk)
@instance.db_writer_thread.barrier {
process_single_tx(blk)
}
end
|
.create_instance(node) ⇒ Object
35
36
37
|
# File 'lib/isono/node_modules/data_store.rb', line 35
def self.create_instance(node)
@instance = self.new(node)
end
|
.disconnected? ⇒ Boolean
64
65
66
|
# File 'lib/isono/node_modules/data_store.rb', line 64
def self.disconnected?
Sequel::DATABASES.first.nil? || Sequel::DATABASES.first.pool.size == 0
end
|
.pass(&blk) ⇒ Object
39
40
41
42
43
|
# File 'lib/isono/node_modules/data_store.rb', line 39
def self.pass(&blk)
@instance.db_writer_thread.pass {
process_single_tx(blk)
}
end
|
.process_single_tx(blk) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/isono/node_modules/data_store.rb', line 51
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
80
81
82
|
# File 'lib/isono/node_modules/data_store.rb', line 80
def establish_connection
config_section.connection_block.call(self)
end
|