Esempio n. 1
0
def check_backend_state():
    """Checks blocktime of last block to see if {} Core is running behind.""".format(config.BTC_NAME)
    block_count = backend.getblockcount()
    block_hash = backend.getblockhash(block_count)
    cblock = backend.getblock(block_hash)
    time_behind = time.time() - cblock.nTime   # TODO: Block times are not very reliable.
    if time_behind > 60 * 60 * 2:   # Two hours.
        raise BackendError('Bitcoind is running about {} hours behind.'.format(round(time_behind / 3600)))

    # check backend index
    blocks_behind = backend.getindexblocksbehind()
    if blocks_behind > 5:
        raise BackendError('Indexd is running {} blocks behind.'.format(blocks_behind))

    logger.debug('Backend state check passed.')
Esempio n. 2
0
        def get_running_info():
            latestBlockIndex = backend.getblockcount()

            try:
                check_database_state(self.db, latestBlockIndex)
            except DatabaseError:
                caught_up = False
            else:
                caught_up = True

            try:
                cursor = self.db.cursor()
                blocks = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (util.CURRENT_BLOCK_INDEX, )))
                assert len(blocks) == 1
                last_block = blocks[0]
                cursor.close()
            except:
                last_block = None

            try:
                last_message = util.last_message(self.db)
            except:
                last_message = None

            try:
                indexd_blocks_behind = backend.getindexblocksbehind()
            except:
                indexd_blocks_behind = latestBlockIndex if latestBlockIndex > 0 else 999999
            indexd_caught_up = indexd_blocks_behind <= 1

            server_ready = caught_up and indexd_caught_up

            return {
                'server_ready': server_ready,
                'db_caught_up': caught_up,
                'bitcoin_block_count': latestBlockIndex,
                'last_block': last_block,
                'indexd_caught_up': indexd_caught_up,
                'indexd_blocks_behind': indexd_blocks_behind,
                'last_message_index': last_message['message_index'] if last_message else -1,
                'api_limit_rows': config.API_LIMIT_ROWS,
                'running_testnet': config.TESTNET,
                'running_regtest': config.REGTEST,
                'running_testcoin': config.TESTCOIN,
                'version_major': config.VERSION_MAJOR,
                'version_minor': config.VERSION_MINOR,
                'version_revision': config.VERSION_REVISION
            }