mirror of
https://github.com/planetmint/planetmint.git
synced 2025-11-24 22:45:44 +00:00
Merge pull request #137 from andreitricolici/planetmint-tarantool
Fixed upsert function and flush_db_tarantool
This commit is contained in:
commit
a5fbc161a9
@ -22,7 +22,7 @@ TABLES = ('transactions', 'blocks', 'assets', 'metadata',
|
|||||||
|
|
||||||
SPACE_NAMES = ("abci_chains", "assets", "blocks", "blocks_tx",
|
SPACE_NAMES = ("abci_chains", "assets", "blocks", "blocks_tx",
|
||||||
"elections", "meta_data", "pre_commits", "validators",
|
"elections", "meta_data", "pre_commits", "validators",
|
||||||
"transactions", "inputs", "outputs", "keys")
|
"transactions", "inputs", "outputs", "keys", "utxos")
|
||||||
|
|
||||||
VALID_LANGUAGES = ('danish', 'dutch', 'english', 'finnish', 'french', 'german',
|
VALID_LANGUAGES = ('danish', 'dutch', 'english', 'finnish', 'french', 'german',
|
||||||
'hungarian', 'italian', 'norwegian', 'portuguese', 'romanian',
|
'hungarian', 'italian', 'norwegian', 'portuguese', 'romanian',
|
||||||
|
|||||||
@ -16,7 +16,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class TarantoolDBConnection(Connection):
|
class TarantoolDBConnection(Connection):
|
||||||
def __init__(self, host: str = "localhost", port: int = 3303, user: str = None, password: str = None, **kwargs):
|
def __init__(self, host: str = "localhost", port: int = 3303, user: str = None, password: str = None, **kwargs):
|
||||||
try:
|
try:
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
self.host = host
|
self.host = host
|
||||||
@ -62,7 +62,6 @@ class TarantoolDBConnection(Connection):
|
|||||||
except tarantool.error.NetworkError as net_error:
|
except tarantool.error.NetworkError as net_error:
|
||||||
raise net_error
|
raise net_error
|
||||||
|
|
||||||
|
|
||||||
def get_connection(self):
|
def get_connection(self):
|
||||||
return self.conn
|
return self.conn
|
||||||
|
|
||||||
|
|||||||
@ -390,11 +390,11 @@ def store_pre_commit_state(connection, state: dict):
|
|||||||
_precommit = connection.run(
|
_precommit = connection.run(
|
||||||
connection.space("pre_commits").select([], limit=1)
|
connection.space("pre_commits").select([], limit=1)
|
||||||
)
|
)
|
||||||
_precommitTuple = (token_hex(8), state["height"], state["transactions"]) if _precommit is None or len(_precommit) == 0 else _precommit[0]
|
_precommitTuple = (token_hex(8), state["height"], state["transactions"]) if _precommit is None or len(
|
||||||
|
_precommit) == 0 else _precommit[0]
|
||||||
connection.run(
|
connection.run(
|
||||||
connection.space("pre_commits").upsert(_precommitTuple,
|
connection.space("pre_commits").upsert(_precommitTuple,
|
||||||
op_list=[('=', 0, _precommitTuple[0]),
|
op_list=[('=', 1, state["height"]),
|
||||||
('=', 1, state["height"]),
|
|
||||||
('=', 2, state["transactions"])],
|
('=', 2, state["transactions"])],
|
||||||
limit=1),
|
limit=1),
|
||||||
only_data=False
|
only_data=False
|
||||||
@ -420,8 +420,7 @@ def store_validator_set(conn, validators_update: dict):
|
|||||||
unique_id = token_hex(8) if _validator is None or len(_validator) == 0 else _validator[0][0]
|
unique_id = token_hex(8) if _validator is None or len(_validator) == 0 else _validator[0][0]
|
||||||
conn.run(
|
conn.run(
|
||||||
conn.space("validators").upsert((unique_id, validators_update["height"], validators_update["validators"]),
|
conn.space("validators").upsert((unique_id, validators_update["height"], validators_update["validators"]),
|
||||||
op_list=[('=', 0, unique_id),
|
op_list=[('=', 1, validators_update["height"]),
|
||||||
('=', 1, validators_update["height"]),
|
|
||||||
('=', 2, validators_update["validators"])],
|
('=', 2, validators_update["validators"])],
|
||||||
limit=1),
|
limit=1),
|
||||||
only_data=False
|
only_data=False
|
||||||
@ -444,8 +443,7 @@ def delete_validator_set(connection, height: int):
|
|||||||
def store_election(connection, election_id: str, height: int, is_concluded: bool):
|
def store_election(connection, election_id: str, height: int, is_concluded: bool):
|
||||||
connection.run(
|
connection.run(
|
||||||
connection.space("elections").upsert((election_id, height, is_concluded),
|
connection.space("elections").upsert((election_id, height, is_concluded),
|
||||||
op_list=[('=', 0, election_id),
|
op_list=[('=', 1, height),
|
||||||
('=', 1, height),
|
|
||||||
('=', 2, is_concluded)],
|
('=', 2, is_concluded)],
|
||||||
limit=1),
|
limit=1),
|
||||||
only_data=False
|
only_data=False
|
||||||
@ -517,16 +515,8 @@ def get_asset_tokens_for_public_key(connection, asset_id: str,
|
|||||||
|
|
||||||
@register_query(TarantoolDBConnection)
|
@register_query(TarantoolDBConnection)
|
||||||
def store_abci_chain(connection, height: int, chain_id: str, is_synced: bool = True):
|
def store_abci_chain(connection, height: int, chain_id: str, is_synced: bool = True):
|
||||||
_chain = connection.run(connection.space("abci_chains").select(height, index="height_search", limit=1))
|
connection.run(connection.space("abci_chains").delete(chain_id), only_data=False)
|
||||||
_chainTuple = (height, is_synced, chain_id) if _chain is None or len(_chain) == 0 else _chain[0]
|
connection.run(connection.space("abci_chains").insert((height, is_synced, chain_id)), only_data=False)
|
||||||
connection.run(
|
|
||||||
connection.space("abci_chains").upsert(_chainTuple,
|
|
||||||
op_list=[('=', 0, height),
|
|
||||||
('=', 1, is_synced),
|
|
||||||
('=', 2, chain_id)],
|
|
||||||
limit=1),
|
|
||||||
only_data=False
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@register_query(TarantoolDBConnection)
|
@register_query(TarantoolDBConnection)
|
||||||
|
|||||||
@ -518,11 +518,11 @@ def test_get_spent_key_order(b, user_pk, user_sk, user2_pk, user2_sk):
|
|||||||
bob = generate_key_pair()
|
bob = generate_key_pair()
|
||||||
|
|
||||||
tx1 = Create.generate([user_pk],
|
tx1 = Create.generate([user_pk],
|
||||||
[([alice.public_key], 3), ([user_pk], 2)],
|
[([alice.public_key], 3), ([user_pk], 2)],
|
||||||
asset=None) \
|
asset=None) \
|
||||||
.sign([user_sk])
|
.sign([user_sk])
|
||||||
b.store_bulk_transactions([tx1])
|
b.store_bulk_transactions([tx1])
|
||||||
assert tx1.validate(b)
|
|
||||||
inputs = tx1.to_inputs()
|
inputs = tx1.to_inputs()
|
||||||
tx2 = Transfer.generate([inputs[1]], [([user2_pk], 2)], tx1.id).sign([user_sk])
|
tx2 = Transfer.generate([inputs[1]], [([user2_pk], 2)], tx1.id).sign([user_sk])
|
||||||
assert tx2.validate(b)
|
assert tx2.validate(b)
|
||||||
|
|||||||
@ -40,13 +40,15 @@ def flush_tarantool_db(connection, dbname):
|
|||||||
if "assets" == s:
|
if "assets" == s:
|
||||||
connection.run(connection.space(s).delete(_id[1]), only_data=False)
|
connection.run(connection.space(s).delete(_id[1]), only_data=False)
|
||||||
elif s in ["blocks", "abci_chains"]:
|
elif s in ["blocks", "abci_chains"]:
|
||||||
connection.run(connection.space(s).delete(_id[2], only_data=False))
|
connection.run(connection.space(s).delete(_id[2]), only_data=False)
|
||||||
elif s == "inputs":
|
elif s == "inputs":
|
||||||
connection.run(connection.space(s).delete(_id[-2], only_data=False))
|
connection.run(connection.space(s).delete(_id[-2]), only_data=False)
|
||||||
elif s == "outputs":
|
elif s == "outputs":
|
||||||
connection.run(connection.space(s).delete(_id[-4], only_data=False))
|
connection.run(connection.space(s).delete(_id[-4]), only_data=False)
|
||||||
|
elif s == "utxos":
|
||||||
|
connection.run(connection.space(s).delete([_id[0], _id[1]]), only_data=False)
|
||||||
else:
|
else:
|
||||||
connection.run(connection.space(s).delete(_id[0], only_data=False))
|
connection.run(connection.space(s).delete(_id[0]), only_data=False)
|
||||||
|
|
||||||
|
|
||||||
def generate_block(planet):
|
def generate_block(planet):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user