aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2021-04-05 21:31:00 -0500
committerluigi1111 <luigi1111w@gmail.com>2021-04-05 21:31:00 -0500
commit3aa530aa84b87e6e06d97d15de41e0864dadf80c (patch)
tree49033597422b7dd18543c45a8abd3ed0385a5694
parentb3dace6b450db582d8b683b9dcff4fca96357586 (diff)
parent6b0cb8dadba9db95517633c1b2f7220d049e470a (diff)
downloadmonzero-gui-3aa530aa84b87e6e06d97d15de41e0864dadf80c.tar.gz
monzero-gui-3aa530aa84b87e6e06d97d15de41e0864dadf80c.tar.xz
monzero-gui-3aa530aa84b87e6e06d97d15de41e0864dadf80c.zip
Merge pull request #3345
6b0cb8d support pruning of new databases (benevanoff)
-rw-r--r--main.qml3
-rw-r--r--src/daemon/DaemonManager.cpp16
-rw-r--r--src/daemon/DaemonManager.h3
-rw-r--r--wizard/WizardDaemonSettings.qml22
-rw-r--r--wizard/WizardModeSelection.qml2
5 files changed, 43 insertions, 3 deletions
diff --git a/main.qml b/main.qml
index bffeb119..12f66511 100644
--- a/main.qml
+++ b/main.qml
@@ -714,7 +714,7 @@ ApplicationWindow {
const noSync = appWindow.walletMode === 0;
const bootstrapNodeAddress = persistentSettings.walletMode < 2 ? "auto" : persistentSettings.bootstrapNodeAddress
- daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, bootstrapNodeAddress, noSync);
+ daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, bootstrapNodeAddress, noSync, persistentSettings.pruneBlockchain);
}
function stopDaemon(callback, splash){
@@ -1401,6 +1401,7 @@ ApplicationWindow {
property bool checkForUpdates: true
property bool autosave: true
property int autosaveMinutes: 10
+ property bool pruneBlockchain: false
property bool fiatPriceEnabled: false
property bool fiatPriceToggle: false
diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp
index bbbf263e..ad8bab16 100644
--- a/src/daemon/DaemonManager.cpp
+++ b/src/daemon/DaemonManager.cpp
@@ -27,6 +27,7 @@
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "DaemonManager.h"
+#include "common/util.h"
#include <QElapsedTimer>
#include <QFile>
#include <QMutexLocker>
@@ -47,7 +48,7 @@ namespace {
static const int DAEMON_START_TIMEOUT_SECONDS = 120;
}
-bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const QString &dataDir, const QString &bootstrapNodeAddress, bool noSync /* = false*/)
+bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const QString &dataDir, const QString &bootstrapNodeAddress, bool noSync /* = false*/, bool pruneBlockchain /* = false*/)
{
if (!QFileInfo(m_monerod).isFile())
{
@@ -85,6 +86,12 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
arguments << "--bootstrap-daemon-address" << bootstrapNodeAddress;
}
+ if (pruneBlockchain) {
+ if (!checkLmdbExists(dataDir)) { // check that DB has not already been created
+ arguments << "--prune-blockchain";
+ }
+ }
+
if (noSync) {
arguments << "--no-sync";
}
@@ -323,6 +330,13 @@ QVariantMap DaemonManager::validateDataDir(const QString &dataDir) const
return result;
}
+bool DaemonManager::checkLmdbExists(QString datadir) {
+ if (datadir.isEmpty() || datadir.isNull()) {
+ datadir = QString::fromStdString(tools::get_default_data_dir());
+ }
+ return validateDataDir(datadir).value("lmdbExists").value<bool>();
+}
+
DaemonManager::DaemonManager(QObject *parent)
: QObject(parent)
, m_scheduler(this)
diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h
index ac94c50d..2f884665 100644
--- a/src/daemon/DaemonManager.h
+++ b/src/daemon/DaemonManager.h
@@ -47,7 +47,7 @@ public:
explicit DaemonManager(QObject *parent = 0);
~DaemonManager();
- Q_INVOKABLE bool start(const QString &flags, NetworkType::Type nettype, const QString &dataDir = "", const QString &bootstrapNodeAddress = "", bool noSync = false);
+ Q_INVOKABLE bool start(const QString &flags, NetworkType::Type nettype, const QString &dataDir = "", const QString &bootstrapNodeAddress = "", bool noSync = false, bool pruneBlockchain = false);
Q_INVOKABLE void stopAsync(NetworkType::Type nettype, const QJSValue& callback);
Q_INVOKABLE bool noSync() const noexcept;
@@ -57,6 +57,7 @@ public:
Q_INVOKABLE void sendCommandAsync(const QStringList &cmd, NetworkType::Type nettype, const QJSValue& callback) const;
Q_INVOKABLE void exit();
Q_INVOKABLE QVariantMap validateDataDir(const QString &dataDir) const;
+ Q_INVOKABLE bool checkLmdbExists(QString datadir);
private:
diff --git a/wizard/WizardDaemonSettings.qml b/wizard/WizardDaemonSettings.qml
index 3f1f2204..6fffba7c 100644
--- a/wizard/WizardDaemonSettings.qml
+++ b/wizard/WizardDaemonSettings.qml
@@ -94,6 +94,28 @@ ColumnLayout {
}
}
+ RowLayout {
+ id: pruningOptionRow
+ MoneroComponents.CheckBox {
+ id: pruneBlockchainCheckBox
+ checked: !existingDbWarning.visible ? persistentSettings.pruneBlockchain : false
+ enabled: !existingDbWarning.visible
+ onClicked: {
+ persistentSettings.pruneBlockchain = !persistentSettings.pruneBlockchain
+ this.checked = persistentSettings.pruneBlockchain
+ }
+ text: qsTr("Prune blockchain") + translationManager.emptyString
+ }
+
+ Text {
+ id: existingDbWarning
+ text: "A blockchain database already exists here. Select a new location to start a pruned node"
+ visible: daemonManager ? daemonManager.checkLmdbExists(blockchainFolder.text) : false
+ color: MoneroComponents.Style.defaultFontColor
+ font.family: MoneroComponents.Style.fontRegular.name
+ }
+ }
+
ColumnLayout{
Layout.topMargin: 6
spacing: 0
diff --git a/wizard/WizardModeSelection.qml b/wizard/WizardModeSelection.qml
index 39fac9a2..4d2fde53 100644
--- a/wizard/WizardModeSelection.qml
+++ b/wizard/WizardModeSelection.qml
@@ -119,6 +119,7 @@ Rectangle {
onMenuClicked: {
if(appWindow.persistentSettings.nettype == 0){
+ appWindow.persistentSettings.pruneBlockchain = true;
applyWalletMode(1, 'wizardModeBootstrap');
}
}
@@ -139,6 +140,7 @@ Rectangle {
imageIcon: "qrc:///images/local-node-full.png"
onMenuClicked: {
+ appWindow.persistentSettings.pruneBlockchain = false; // can be toggled on next page
applyWalletMode(2, 'wizardHome');
}
}