Skip to content

Commit a7ef6d5

Browse files
committed
Migrate -par setting from QSettings to settings.json
1 parent 284f339 commit a7ef6d5

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

src/qt/optionsmodel.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,17 @@ static const char* SettingName(OptionsModel::OptionID option)
3737
{
3838
switch (option) {
3939
case OptionsModel::DatabaseCache: return "dbcache";
40+
case OptionsModel::ThreadsScriptVerif: return "par";
4041
default: throw std::logic_error(strprintf("GUI option %i has no corresponding node setting.", option));
4142
}
4243
}
4344

4445
/** Call node.updateRwSetting() with Bitcoin 22.x workaround. */
4546
static void UpdateRwSetting(interfaces::Node& node, OptionsModel::OptionID option, const util::SettingsValue& value)
4647
{
47-
if (value.isNum() && option == OptionsModel::DatabaseCache) {
48+
if (value.isNum() &&
49+
(option == OptionsModel::DatabaseCache ||
50+
option == OptionsModel::ThreadsScriptVerif)) {
4851
// Write certain old settings as strings, even though they are numbers,
4952
// because Bitcoin 22.x releases try to read these specific settings as
5053
// strings in addOverriddenOption() calls at startup, triggering
@@ -122,7 +125,7 @@ bool OptionsModel::Init(bilingual_str& error)
122125

123126
// These are shared with the core or have a command-line parameter
124127
// and we want command-line parameters to overwrite the GUI settings.
125-
for (OptionID option : {DatabaseCache}) {
128+
for (OptionID option : {DatabaseCache, ThreadsScriptVerif}) {
126129
std::string setting = SettingName(option);
127130
if (node().isSettingIgnored(setting)) addOverriddenOption("-" + setting);
128131
try {
@@ -147,12 +150,6 @@ bool OptionsModel::Init(bilingual_str& error)
147150
if (!settings.contains("nPruneSize"))
148151
settings.setValue("nPruneSize", DEFAULT_PRUNE_TARGET_GB);
149152
SetPruneEnabled(settings.value("bPrune").toBool());
150-
151-
if (!settings.contains("nThreadsScriptVerif"))
152-
settings.setValue("nThreadsScriptVerif", DEFAULT_SCRIPTCHECK_THREADS);
153-
if (!gArgs.SoftSetArg("-par", settings.value("nThreadsScriptVerif").toString().toStdString()))
154-
addOverriddenOption("-par");
155-
156153
if (!settings.contains("strDataDir"))
157154
settings.setValue("strDataDir", GUIUtil::getDefaultDataDirectory());
158155

@@ -458,7 +455,7 @@ QVariant OptionsModel::getOption(OptionID option) const
458455
case DatabaseCache:
459456
return qlonglong(SettingToInt(setting(), nDefaultDbCache));
460457
case ThreadsScriptVerif:
461-
return settings.value("nThreadsScriptVerif");
458+
return qlonglong(SettingToInt(setting(), DEFAULT_SCRIPTCHECK_THREADS));
462459
case Listen:
463460
return settings.value("fListen");
464461
case Server:
@@ -619,8 +616,8 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value)
619616
}
620617
break;
621618
case ThreadsScriptVerif:
622-
if (settings.value("nThreadsScriptVerif") != value) {
623-
settings.setValue("nThreadsScriptVerif", value);
619+
if (changed()) {
620+
update(static_cast<int64_t>(value.toLongLong()));
624621
setRestartRequired(true);
625622
}
626623
break;
@@ -705,4 +702,5 @@ void OptionsModel::checkAndMigrate()
705702
};
706703

707704
migrate_setting(DatabaseCache, "nDatabaseCache");
705+
migrate_setting(ThreadsScriptVerif, "nThreadsScriptVerif");
708706
}

src/qt/test/optiontests.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,20 @@ void OptionTests::migrateSettings()
3333
// settings.json
3434
QSettings settings;
3535
settings.setValue("nDatabaseCache", 600);
36+
settings.setValue("nThreadsScriptVerif", 12);
3637

3738
settings.sync();
3839

3940
OptionsModel options{m_node};
4041
bilingual_str error;
4142
QVERIFY(options.Init(error));
4243
QVERIFY(!settings.contains("nDatabaseCache"));
44+
QVERIFY(!settings.contains("nThreadsScriptVerif"));
4345

4446
std::ifstream file(gArgs.GetDataDirNet() / "settings.json");
4547
QCOMPARE(std::string(std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>()).c_str(), "{\n"
46-
" \"dbcache\": \"600\"\n"
48+
" \"dbcache\": \"600\",\n"
49+
" \"par\": \"12\"\n"
4750
"}\n");
4851
}
4952

0 commit comments

Comments
 (0)