mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-06-28 08:37:45 +02:00
log election results in election pipeline
This commit is contained in:
parent
8ecd89c18c
commit
ae8367c6c7
|
@ -623,7 +623,6 @@ class Bigchain(object):
|
||||||
block['id']))
|
block['id']))
|
||||||
keyring = self.nodes_except_me + [self.me]
|
keyring = self.nodes_except_me + [self.me]
|
||||||
result = self.consensus.voting.block_election(block, votes, keyring)
|
result = self.consensus.voting.block_election(block, votes, keyring)
|
||||||
# TODO: logging
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def block_election_status(self, block):
|
def block_election_status(self, block):
|
||||||
|
|
|
@ -16,6 +16,7 @@ from bigchaindb import Bigchain
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
logger_results = logging.getLogger('pipeline.election.results')
|
||||||
|
|
||||||
|
|
||||||
class Election:
|
class Election:
|
||||||
|
@ -32,13 +33,29 @@ class Election:
|
||||||
next_vote: The next vote.
|
next_vote: The next vote.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
next_block = self.bigchain.get_block(
|
try:
|
||||||
next_vote['vote']['voting_for_block'])
|
block_id = next_vote['vote']['voting_for_block']
|
||||||
|
node = next_vote['node_pubkey']
|
||||||
|
except IndexError:
|
||||||
|
return
|
||||||
|
|
||||||
block_status = self.bigchain.block_election_status(next_block)
|
next_block = self.bigchain.get_block(block_id)
|
||||||
if block_status == self.bigchain.BLOCK_INVALID:
|
|
||||||
|
result = self.bigchain.block_election_status(next_block)
|
||||||
|
if result['status'] == self.bigchain.BLOCK_INVALID:
|
||||||
return Block.from_dict(next_block)
|
return Block.from_dict(next_block)
|
||||||
|
|
||||||
|
# Log the result
|
||||||
|
if result['status'] != self.bigchain.BLOCK_UNDECIDED:
|
||||||
|
msg = 'node:%s block:%s status:%s' % \
|
||||||
|
(node, block_id, result['status'])
|
||||||
|
# Extra data can be accessed via the log formatter.
|
||||||
|
# See logging.dictConfig.
|
||||||
|
logger_results.debug(msg, extra={
|
||||||
|
'current_vote': next_vote,
|
||||||
|
'election_result': result,
|
||||||
|
})
|
||||||
|
|
||||||
def requeue_transactions(self, invalid_block):
|
def requeue_transactions(self, invalid_block):
|
||||||
"""
|
"""
|
||||||
Liquidates transactions from invalid blocks so they can be processed again
|
Liquidates transactions from invalid blocks so they can be processed again
|
||||||
|
|
|
@ -34,6 +34,7 @@ class Voting:
|
||||||
cls.partition_eligible_votes(votes, eligible_voters)
|
cls.partition_eligible_votes(votes, eligible_voters)
|
||||||
n_voters = len(eligible_voters)
|
n_voters = len(eligible_voters)
|
||||||
results = cls.count_votes(eligible_votes)
|
results = cls.count_votes(eligible_votes)
|
||||||
|
results['block_id'] = block['id']
|
||||||
results['status'] = cls.decide_votes(n_voters, **results['counts'])
|
results['status'] = cls.decide_votes(n_voters, **results['counts'])
|
||||||
results['ineligible'] = ineligible_votes
|
results['ineligible'] = ineligible_votes
|
||||||
return results
|
return results
|
||||||
|
|
|
@ -149,7 +149,7 @@ def test_block_election(b):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
keyring = 'abc'
|
keyring = 'abc'
|
||||||
block = {'block': {'voters': 'ab'}}
|
block = {'id': 'xyz', 'block': {'voters': 'ab'}}
|
||||||
votes = [{
|
votes = [{
|
||||||
'node_pubkey': c,
|
'node_pubkey': c,
|
||||||
'vote': {'is_block_valid': True, 'previous_block': 'a'}
|
'vote': {'is_block_valid': True, 'previous_block': 'a'}
|
||||||
|
@ -157,6 +157,7 @@ def test_block_election(b):
|
||||||
|
|
||||||
assert TestVoting.block_election(block, votes, keyring) == {
|
assert TestVoting.block_election(block, votes, keyring) == {
|
||||||
'status': VALID,
|
'status': VALID,
|
||||||
|
'block_id': 'xyz',
|
||||||
'counts': {'n_agree_prev_block': 2, 'n_valid': 2, 'n_invalid': 0},
|
'counts': {'n_agree_prev_block': 2, 'n_valid': 2, 'n_invalid': 0},
|
||||||
'ineligible': [votes[-1]],
|
'ineligible': [votes[-1]],
|
||||||
'cheat': [],
|
'cheat': [],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user