Example #1
0
def migrate_all_hash_stores(node_data_directory):
    # the new hash store (merkle tree) will be recovered from the new transaction log after re-start
    # just delete the current hash store
    new_merkle_nodes = os.path.join(node_data_directory, '_merkleNodes')
    new_merkle_leaves = os.path.join(node_data_directory, '_merkleLeaves')
    new_merkle_nodes_bin = os.path.join(
        node_data_directory, '_merkleNodes.bin')
    new_merkle_leaves_bin = os.path.join(
        node_data_directory, '_merkleLeaves.bin')
    new_merkle_nodes_config_bin = os.path.join(
        node_data_directory, 'config_merkleNodes.bin')
    new_merkle_leaves_config_bin = os.path.join(
        node_data_directory, 'config_merkleLeaves.bin')

    if os.path.exists(new_merkle_nodes):
        shutil.rmtree(new_merkle_nodes)
    if os.path.exists(new_merkle_leaves):
        shutil.rmtree(new_merkle_leaves)
    if os.path.exists(new_merkle_nodes_bin):
        os.remove(new_merkle_nodes_bin)
    if os.path.exists(new_merkle_leaves_bin):
        os.remove(new_merkle_leaves_bin)
    if os.path.exists(new_merkle_nodes_config_bin):
        os.remove(new_merkle_nodes_config_bin)
    if os.path.exists(new_merkle_leaves_config_bin):
        os.remove(new_merkle_leaves_config_bin)

    # open new Ledgers
    fields = getTxnOrderedFields()
    __open_old_ledger(node_data_directory, config.poolTransactionsFile,
                      'pool', serializer=JsonSerializer())
    __open_old_ledger(node_data_directory, config.domainTransactionsFile,
                      'domain', serializer=CompactSerializer(fields=fields))
    __open_old_ledger(node_data_directory, config.configTransactionsFile,
                      'config', serializer=JsonSerializer())
Example #2
0
    def _generate_genesis_files(self):

        pool_txns, domain_txns = self._split_pool_and_domain()

        # TODO make Ledger a context manager
        pl = TestNetworkSetup.init_pool_ledger(appendToLedgers=False,
                                               baseDir=self.base_dir,
                                               config=self.config,
                                               envName='test')
        pl_lines = self._add_and_stop(pool_txns, pl)

        dl = TestNetworkSetup.init_domain_ledger(
            appendToLedgers=False,
            baseDir=self.base_dir,
            config=self.config,
            envName='test',
            domainTxnFieldOrder=getTxnOrderedFields())
        dl_lines = self._add_and_stop(domain_txns, dl)

        return adict(pool=adict(lines=pl_lines,
                                root=pl.root_hash,
                                size=pl.size),
                     domain=adict(lines=dl_lines,
                                  root=dl.root_hash,
                                  size=dl.size))
Example #3
0
    def getPrimaryStorage(self):
        """
        This is usually an implementation of Ledger
        """
        if self.config.primaryStorage is None:
            fields = getTxnOrderedFields()

            defaultTxnFile = os.path.join(self.basedirpath,
                                          self.config.domainTransactionsFile)
            if not os.path.exists(defaultTxnFile):
                logger.debug(
                    "Not using default initialization file for "
                    "domain ledger, since it does not exist: {}".format(
                        defaultTxnFile))
                defaultTxnFile = None

            return Ledger(CompactMerkleTree(hashStore=self.hashStore),
                          dataDir=self.dataLocation,
                          serializer=CompactSerializer(fields=fields),
                          fileName=self.config.domainTransactionsFile,
                          ensureDurability=self.config.EnsureLedgerDurability,
                          defaultFile=defaultTxnFile)
        else:
            return initStorage(self.config.primaryStorage,
                               name=self.name + NODE_PRIMARY_STORAGE_SUFFIX,
                               dataDir=self.dataLocation,
                               config=self.config)
Example #4
0
def migrate_genesis_txn(base_dir):
    for suffix in ('sandbox', 'live', 'local'):
        old_domain_genesis = os.path.join(
            base_dir, 'transactions_{}'.format(suffix))
        old_pool_genesis = os.path.join(
            base_dir, 'pool_transactions_{}'.format(suffix))

        new_domain_genesis = os.path.join(
            base_dir, 'domain_transactions_{}_genesis'.format(suffix))
        new_pool_genesis = os.path.join(
            base_dir, 'pool_transactions_{}_genesis'.format(suffix))

        if os.path.exists(old_domain_genesis):
            os.remove(old_domain_genesis)
        if os.path.exists(old_pool_genesis):
            os.remove(old_pool_genesis)

        if os.path.exists(new_domain_genesis):
            old_ser = CompactSerializer(getTxnOrderedFields())
            new_ser = JsonSerializer()
            with open(new_domain_genesis, 'r') as f1:
                with open(old_domain_genesis, 'w') as f2:
                    for line in store_utils.cleanLines(f1):
                        txn = new_ser.deserialize(line)
                        txn = old_ser.serialize(txn)
                        f2.write(txn)
            os.remove(new_domain_genesis)
        if os.path.exists(new_pool_genesis):
            os.rename(new_pool_genesis, old_domain_genesis)
Example #5
0
    def getPrimaryStorage(self):
        """
        This is usually an implementation of Ledger
        """
        if self.config.primaryStorage is None:
            fields = getTxnOrderedFields()

            defaultTxnFile = os.path.join(self.basedirpath,
                                          self.config.domainTransactionsFile)
            if not os.path.exists(defaultTxnFile):
                logger.debug("Not using default initialization file for "
                             "domain ledger, since it does not exist: {}"
                             .format(defaultTxnFile))
                defaultTxnFile = None

            return Ledger(CompactMerkleTree(hashStore=self.hashStore),
                          dataDir=self.dataLocation,
                          serializer=CompactSerializer(fields=fields),
                          fileName=self.config.domainTransactionsFile,
                          ensureDurability=self.config.EnsureLedgerDurability,
                          defaultFile=defaultTxnFile)
        else:
            return initStorage(self.config.primaryStorage,
                               name=self.name + NODE_PRIMARY_STORAGE_SUFFIX,
                               dataDir=self.dataLocation,
                               config=self.config)
Example #6
0
def addTxnToFile(dir, file, txns, fields=getTxnOrderedFields()):
    ledger = Ledger(CompactMerkleTree(),
                    dataDir=dir,
                    serializer=CompactSerializer(fields=fields),
                    fileName=file)
    for txn in txns:
        ledger.add(txn)
    ledger.stop()
Example #7
0
def addTxnToFile(dir, file, txns, fields=getTxnOrderedFields()):
    ledger = Ledger(CompactMerkleTree(),
                    dataDir=dir,
                    serializer=CompactSerializer(fields=fields),
                    fileName=file)
    for txn in txns:
        ledger.add(txn)
    ledger.stop()
Example #8
0
 def getPrimaryStorage(self):
     """
     This is usually an implementation of Ledger
     """
     if self.config.primaryStorage is None:
         fields = getTxnOrderedFields()
         return Ledger(CompactMerkleTree(hashStore=self.hashStore),
                       dataDir=self.dataLocation,
                       serializer=CompactSerializer(fields=fields),
                       fileName=self.config.domainTransactionsFile,
                       ensureDurability=self.config.EnsureLedgerDurability)
     else:
         return initStorage(self.config.primaryStorage,
                            name=self.name + NODE_PRIMARY_STORAGE_SUFFIX,
                            dataDir=self.dataLocation,
                            config=self.config)
Example #9
0
def migrate_all_ledgers_for_node(node_data_directory):
    # using default ledger names
    __migrate_ledger(node_data_directory,
                     config.poolTransactionsFile, config.poolTransactionsFile,
                     serializer=JsonSerializer())
    __migrate_ledger(
        node_data_directory,
        config.configTransactionsFile,
        config.configTransactionsFile,
        serializer=JsonSerializer())

    # domain ledger uses custom CompactSerializer and old file name
    fields = getTxnOrderedFields()
    __migrate_ledger(node_data_directory,
                     config.domainTransactionsFile.replace(
                         'domain_', ''), config.domainTransactionsFile,
                     serializer=CompactSerializer(fields=fields))
Example #10
0
    def _generate_genesis_files(self):

        pool_txns, domain_txns = self._split_pool_and_domain()

        # TODO make Ledger a context manager
        pl = TestNetworkSetup.init_pool_ledger(appendToLedgers=False,
                                               baseDir=self.base_dir,
                                               config=self.config,
                                               envName='test')
        pl_lines = self._add_and_stop(pool_txns, pl)

        dl = TestNetworkSetup.init_domain_ledger(appendToLedgers=False,
                                                 baseDir=self.base_dir,
                                                 config=self.config,
                                                 envName='test',
                                                 domainTxnFieldOrder=getTxnOrderedFields())
        dl_lines = self._add_and_stop(domain_txns, dl)

        return adict(pool=adict(lines=pl_lines,
                                root=pl.root_hash,
                                size=pl.size),
                     domain=adict(lines=dl_lines,
                                  root=dl.root_hash,
                                  size=dl.size))
Example #11
0
def domainTxnOrderedFields():
    return getTxnOrderedFields()
 def txnFieldOrdering(self):
     fields = getTxnOrderedFields()
     return updateFieldsWithSeqNo(fields)
Example #13
0
 def txnFieldOrdering(self):
     fields = getTxnOrderedFields()
     return updateFieldsWithSeqNo(fields)
Example #14
0
def addTxnToGenesisFile(dir, file, txns, fields=getTxnOrderedFields()):
    ledger = create_genesis_txn_init_ledger(dir, file)
    for txn in txns:
        ledger.add(txn)
    ledger.stop()
Example #15
0
def domainTxnOrderedFields():
    return getTxnOrderedFields()