Add -reindex, to perform in-place reindexing of block chain files
Flushes the blktree/ and coins/ databases, and reindexes the block chain files, as if their contents was loaded via -loadblock. Based on earlier work by Jeff Garzik.
This commit is contained in:
@@ -489,7 +489,8 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
||||
statusBar()->clearMessage();
|
||||
|
||||
// don't show / hide progress bar and its label if we have no connection to the network
|
||||
if (!clientModel || (clientModel->getNumConnections() == 0 && !clientModel->isImporting()))
|
||||
enum BlockSource blockSource = clientModel ? clientModel->getBlockSource() : BLOCK_SOURCE_NONE;
|
||||
if (blockSource == BLOCK_SOURCE_NONE || (blockSource == BLOCK_SOURCE_NETWORK && clientModel->getNumConnections() == 0))
|
||||
{
|
||||
progressBarLabel->setVisible(false);
|
||||
progressBar->setVisible(false);
|
||||
@@ -499,26 +500,37 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
||||
|
||||
QString tooltip;
|
||||
|
||||
QString importText;
|
||||
switch (blockSource) {
|
||||
case BLOCK_SOURCE_NONE:
|
||||
case BLOCK_SOURCE_NETWORK:
|
||||
importText = tr("Synchronizing with network...");
|
||||
case BLOCK_SOURCE_DISK:
|
||||
importText = tr("Importing blocks from disk...");
|
||||
case BLOCK_SOURCE_REINDEX:
|
||||
importText = tr("Reindexing blocks on disk...");
|
||||
}
|
||||
|
||||
if(count < nTotalBlocks)
|
||||
{
|
||||
int nRemainingBlocks = nTotalBlocks - count;
|
||||
float nPercentageDone = count / (nTotalBlocks * 0.01f);
|
||||
|
||||
progressBarLabel->setText(tr(clientModel->isImporting() ? "Importing blocks..." : "Synchronizing with network..."));
|
||||
progressBarLabel->setText(importText);
|
||||
progressBarLabel->setVisible(true);
|
||||
progressBar->setFormat(tr("~%n block(s) remaining", "", nRemainingBlocks));
|
||||
progressBar->setMaximum(nTotalBlocks);
|
||||
progressBar->setValue(count);
|
||||
progressBar->setVisible(true);
|
||||
|
||||
tooltip = tr("Downloaded %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone, 0, 'f', 2);
|
||||
tooltip = tr("Processed %1 of %2 blocks of transaction history (%3% done).").arg(count).arg(nTotalBlocks).arg(nPercentageDone, 0, 'f', 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
progressBarLabel->setVisible(false);
|
||||
|
||||
progressBar->setVisible(false);
|
||||
tooltip = tr("Downloaded %1 blocks of transaction history.").arg(count);
|
||||
tooltip = tr("Processed %1 blocks of transaction history.").arg(count);
|
||||
}
|
||||
|
||||
QDateTime lastBlockDate = clientModel->getLastBlockDate();
|
||||
|
||||
@@ -101,9 +101,13 @@ bool ClientModel::inInitialBlockDownload() const
|
||||
return IsInitialBlockDownload();
|
||||
}
|
||||
|
||||
bool ClientModel::isImporting() const
|
||||
enum BlockSource ClientModel::getBlockSource() const
|
||||
{
|
||||
return fImporting;
|
||||
if (fReindex)
|
||||
return BLOCK_SOURCE_REINDEX;
|
||||
if (fImporting)
|
||||
return BLOCK_SOURCE_DISK;
|
||||
return BLOCK_SOURCE_NETWORK;
|
||||
}
|
||||
|
||||
int ClientModel::getNumBlocksOfPeers() const
|
||||
|
||||
@@ -13,6 +13,13 @@ class QDateTime;
|
||||
class QTimer;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
enum BlockSource {
|
||||
BLOCK_SOURCE_NONE,
|
||||
BLOCK_SOURCE_NETWORK,
|
||||
BLOCK_SOURCE_DISK,
|
||||
BLOCK_SOURCE_REINDEX
|
||||
};
|
||||
|
||||
/** Model for Bitcoin network client. */
|
||||
class ClientModel : public QObject
|
||||
{
|
||||
@@ -34,7 +41,7 @@ public:
|
||||
//! Return true if core is doing initial block download
|
||||
bool inInitialBlockDownload() const;
|
||||
//! Return true if core is importing blocks
|
||||
bool isImporting() const;
|
||||
enum BlockSource getBlockSource() const;
|
||||
//! Return conservative estimate of total number of blocks, or 0 if unknown
|
||||
int getNumBlocksOfPeers() const;
|
||||
//! Return warnings to be displayed in status bar
|
||||
|
||||
Reference in New Issue
Block a user