Skip to content

Commit

Permalink
Fix hf when import with verify off
Browse files Browse the repository at this point in the history
Delete the hf tables, so the next open will rescan and regenerate
  • Loading branch information
hyc committed Jan 15, 2016
1 parent 810acab commit 30f92f5
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/blockchain_db/berkeleydb/db_bdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2150,6 +2150,11 @@ uint64_t BlockchainBDB::get_hard_fork_starting_height(uint8_t version) const
return result;
}

void BlockchainBDB::check_hard_fork_info()
{
/* FIXME: Some other time */
}

void BlockchainBDB::set_hard_fork_version(uint64_t height, uint8_t version)
{
LOG_PRINT_L3("BlockchainBDB::" << __func__);
Expand Down
1 change: 1 addition & 0 deletions src/blockchain_db/berkeleydb/db_bdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ class BlockchainBDB : public BlockchainDB
virtual uint64_t get_hard_fork_starting_height(uint8_t version) const;
virtual void set_hard_fork_version(uint64_t height, uint8_t version);
virtual uint8_t get_hard_fork_version(uint64_t height) const;
virtual void check_hard_fork_info();

/**
* @brief convert a tx output to a blob for storage
Expand Down
1 change: 1 addition & 0 deletions src/blockchain_db/blockchain_db.h
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,7 @@ class BlockchainDB
virtual uint64_t get_hard_fork_starting_height(uint8_t version) const = 0;
virtual void set_hard_fork_version(uint64_t height, uint8_t version) = 0;
virtual uint8_t get_hard_fork_version(uint64_t height) const = 0;
virtual void check_hard_fork_info() = 0;

virtual bool is_read_only() const = 0;

Expand Down
21 changes: 21 additions & 0 deletions src/blockchain_db/lmdb/db_lmdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2434,6 +2434,27 @@ void BlockchainLMDB::get_output_tx_and_index(const uint64_t& amount, const std::
LOG_PRINT_L3("db3: " << db3);
}

void BlockchainLMDB::check_hard_fork_info()
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
check_open();

TXN_PREFIX(0);

MDB_stat db_stat1, db_stat2;
if (mdb_stat(*txn_ptr, m_blocks, &db_stat1))
throw0(DB_ERROR("Failed to query m_blocks"));
if (mdb_stat(*txn_ptr, m_hf_versions, &db_stat2))
throw0(DB_ERROR("Failed to query m_hf_starting_heights"));
if (db_stat1.ms_entries != db_stat2.ms_entries)
{
mdb_drop(*txn_ptr, m_hf_starting_heights, 1);
mdb_drop(*txn_ptr, m_hf_versions, 1);
}

TXN_POSTFIX_SUCCESS();
}

void BlockchainLMDB::set_hard_fork_starting_height(uint8_t version, uint64_t height)
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
Expand Down
1 change: 1 addition & 0 deletions src/blockchain_db/lmdb/db_lmdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ class BlockchainLMDB : public BlockchainDB
virtual uint64_t get_hard_fork_starting_height(uint8_t version) const;
virtual void set_hard_fork_version(uint64_t height, uint8_t version);
virtual uint8_t get_hard_fork_version(uint64_t height) const;
virtual void check_hard_fork_info();

/**
* @brief convert a tx output to a blob for storage
Expand Down
1 change: 1 addition & 0 deletions src/blockchain_utilities/fake_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ struct fake_core_lmdb
}
~fake_core_lmdb()
{
m_storage.get_db().check_hard_fork_info();
m_storage.deinit();
}

Expand Down

0 comments on commit 30f92f5

Please sign in to comment.