aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwarptangent <warptangent@tutanota.com>2016-02-04 17:15:37 -0800
committerwarptangent <warptangent@tutanota.com>2016-02-08 08:50:47 -0800
commitc657e772c4efbfee8ff698883f1532a38117a70a (patch)
treefe161e761bea2845fa35a9758978a6a20f333cfc
parentblockchain_import: Add exception to log output (diff)
downloadmonero-c657e772c4efbfee8ff698883f1532a38117a70a.tar.xz
blockchain_import: Add --drop-hard-fork command
-rw-r--r--src/blockchain_db/berkeleydb/db_bdb.cpp5
-rw-r--r--src/blockchain_db/berkeleydb/db_bdb.h1
-rw-r--r--src/blockchain_db/blockchain_db.h1
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.cpp13
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.h1
-rw-r--r--src/blockchain_utilities/blockchain_import.cpp11
6 files changed, 32 insertions, 0 deletions
diff --git a/src/blockchain_db/berkeleydb/db_bdb.cpp b/src/blockchain_db/berkeleydb/db_bdb.cpp
index 6c80d1333..2c18ae5df 100644
--- a/src/blockchain_db/berkeleydb/db_bdb.cpp
+++ b/src/blockchain_db/berkeleydb/db_bdb.cpp
@@ -2192,6 +2192,11 @@ void BlockchainBDB::check_hard_fork_info()
/* FIXME: Some other time */
}
+void BlockchainBDB::drop_hard_fork_info()
+{
+ /* TODO */
+}
+
void BlockchainBDB::set_hard_fork_version(uint64_t height, uint8_t version)
{
LOG_PRINT_L3("BlockchainBDB::" << __func__);
diff --git a/src/blockchain_db/berkeleydb/db_bdb.h b/src/blockchain_db/berkeleydb/db_bdb.h
index 8cac94f6f..6db91aa1e 100644
--- a/src/blockchain_db/berkeleydb/db_bdb.h
+++ b/src/blockchain_db/berkeleydb/db_bdb.h
@@ -376,6 +376,7 @@ private:
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();
+ virtual void drop_hard_fork_info();
/**
* @brief convert a tx output to a blob for storage
diff --git a/src/blockchain_db/blockchain_db.h b/src/blockchain_db/blockchain_db.h
index 1f4ee21c2..4a140e5f6 100644
--- a/src/blockchain_db/blockchain_db.h
+++ b/src/blockchain_db/blockchain_db.h
@@ -503,6 +503,7 @@ public:
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 void drop_hard_fork_info() = 0;
virtual bool is_read_only() const = 0;
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp
index c18db7724..541e838f7 100644
--- a/src/blockchain_db/lmdb/db_lmdb.cpp
+++ b/src/blockchain_db/lmdb/db_lmdb.cpp
@@ -2457,6 +2457,19 @@ void BlockchainLMDB::check_hard_fork_info()
TXN_POSTFIX_SUCCESS();
}
+void BlockchainLMDB::drop_hard_fork_info()
+{
+ LOG_PRINT_L3("BlockchainLMDB::" << __func__);
+ check_open();
+
+ TXN_PREFIX(0);
+
+ 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__);
diff --git a/src/blockchain_db/lmdb/db_lmdb.h b/src/blockchain_db/lmdb/db_lmdb.h
index 48f4adb41..eb0704ab2 100644
--- a/src/blockchain_db/lmdb/db_lmdb.h
+++ b/src/blockchain_db/lmdb/db_lmdb.h
@@ -236,6 +236,7 @@ private:
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();
+ virtual void drop_hard_fork_info();
/**
* @brief convert a tx output to a blob for storage
diff --git a/src/blockchain_utilities/blockchain_import.cpp b/src/blockchain_utilities/blockchain_import.cpp
index 247bab30f..447d3a21c 100644
--- a/src/blockchain_utilities/blockchain_import.cpp
+++ b/src/blockchain_utilities/blockchain_import.cpp
@@ -557,6 +557,7 @@ int main(int argc, char* argv[])
const command_line::arg_descriptor<uint64_t> arg_block_stop = {"block-stop", "Stop at block number", block_stop};
const command_line::arg_descriptor<uint64_t> arg_batch_size = {"batch-size", "", db_batch_size};
const command_line::arg_descriptor<uint64_t> arg_pop_blocks = {"pop-blocks", "Remove blocks from end of blockchain", num_blocks};
+ const command_line::arg_descriptor<bool> arg_drop_hf = {"drop-hard-fork", "Drop hard fork subdbs", false};
const command_line::arg_descriptor<bool> arg_testnet_on = {
"testnet"
, "Run on testnet."
@@ -589,6 +590,7 @@ int main(int argc, char* argv[])
command_line::add_arg(desc_cmd_only, arg_count_blocks);
command_line::add_arg(desc_cmd_only, arg_pop_blocks);
+ command_line::add_arg(desc_cmd_only, arg_drop_hf);
command_line::add_arg(desc_cmd_only, command_line::arg_help);
// call add_options() directly for these arguments since
@@ -761,6 +763,15 @@ int main(int argc, char* argv[])
return 0;
}
+#if !defined(BLOCKCHAIN_DB) || (BLOCKCHAIN_DB == DB_LMDB)
+ if (! vm["drop-hard-fork"].defaulted())
+ {
+ LOG_PRINT_L0("Dropping hard fork tables...");
+ simple_core.m_storage.get_db().drop_hard_fork_info();
+ return 0;
+ }
+#endif
+
import_from_file(simple_core, import_file_path, block_stop);
#endif