mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 18:53:23 -03:00
Allow to cancel the txdb upgrade via splashscreen callback
This commit is contained in:
parent
ae09d4583b
commit
316fcb5106
1 changed files with 9 additions and 0 deletions
|
@ -11,6 +11,8 @@
|
||||||
#include "pow.h"
|
#include "pow.h"
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "ui_interface.h"
|
||||||
|
#include "init.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
@ -366,9 +368,11 @@ bool CCoinsViewDB::Upgrade() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t count = 0;
|
||||||
LogPrintf("Upgrading database...\n");
|
LogPrintf("Upgrading database...\n");
|
||||||
size_t batch_size = 1 << 24;
|
size_t batch_size = 1 << 24;
|
||||||
CDBBatch batch(db);
|
CDBBatch batch(db);
|
||||||
|
uiInterface.SetProgressBreakAction(StartShutdown);
|
||||||
while (pcursor->Valid()) {
|
while (pcursor->Valid()) {
|
||||||
boost::this_thread::interruption_point();
|
boost::this_thread::interruption_point();
|
||||||
if (ShutdownRequested()) {
|
if (ShutdownRequested()) {
|
||||||
|
@ -376,6 +380,10 @@ bool CCoinsViewDB::Upgrade() {
|
||||||
}
|
}
|
||||||
std::pair<unsigned char, uint256> key;
|
std::pair<unsigned char, uint256> key;
|
||||||
if (pcursor->GetKey(key) && key.first == DB_COINS) {
|
if (pcursor->GetKey(key) && key.first == DB_COINS) {
|
||||||
|
if (count++ % 256 == 0) {
|
||||||
|
uint32_t high = 0x100 * *key.second.begin() + *(key.second.begin() + 1);
|
||||||
|
uiInterface.ShowProgress(_("Upgrading UTXO database") + "\n"+ _("(press q to shutdown and continue later)") + "\n", (int)(high * 100.0 / 65536.0 + 0.5));
|
||||||
|
}
|
||||||
CCoins old_coins;
|
CCoins old_coins;
|
||||||
if (!pcursor->GetValue(old_coins)) {
|
if (!pcursor->GetValue(old_coins)) {
|
||||||
return error("%s: cannot parse CCoins record", __func__);
|
return error("%s: cannot parse CCoins record", __func__);
|
||||||
|
@ -400,5 +408,6 @@ bool CCoinsViewDB::Upgrade() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.WriteBatch(batch);
|
db.WriteBatch(batch);
|
||||||
|
uiInterface.SetProgressBreakAction(std::function<void(void)>());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue