-
Notifications
You must be signed in to change notification settings - Fork 988
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BucketListDB enabled by default #4277
Conversation
5dc9b00
to
6bda012
Compare
After some discussion (#4202), we are going to keep the experimental flags for the 21.0 release to not break compatibility with Horizon. We still want to require that some BucketListDB related flag is set on startup, so operators must either use the new |
docs/stellar-core_example.cfg
Outdated
# DEPRECATED_SQL_LEDGER_STATE (bool) default false | ||
# When set to true, SQL is used to store all ledger state instead of | ||
# BucketListDB. This is not recommended and may cause performance degregradation. | ||
# This is deprecated and will be removed in the future. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add something about offers still being in SQL even with BucketListDB enabled?
docs/stellar-core_example.cfg
Outdated
# Determines whether BucketListDB indexes are saved to disk for faster | ||
# startup. Should only be set to false for testing. | ||
# Validators do not currently support persisted indexes. If NODE_IS_VALIDATOR=true, | ||
# this value is ingnored and indexes are never persisted. | ||
EXPERIMENTAL_BUCKETLIST_DB_PERSIST_INDEX = true | ||
BUCKETLIST_DB_PERSIST_INDEX = true | ||
|
||
# EXPERIMENTAL_BUCKETLIST_DB (bool) default false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
EXPERIMENTAL_BACKGROUND_EVICTION_SCAN
bool EXPERIMENTAL_BUCKETLIST_DB; | ||
// A config parameter that when set uses SQL as the primary | ||
// key-value store for LedgerEntry lookups instead of BucketListDB. | ||
bool DEPRECATED_SQL_LEDGER_STATE; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, this doesn't follow what was proposed in #4202 (comment), because you're removing EXPERIMENTAL_BUCKETLIST_DB
from the API completely, which breaks operators who set it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We still support it in the config file itself, but it's just been renamed in the config class to a single name. See src/main/Config.cpp:1084
.
6bda012
to
a1de765
Compare
r+ a1de765 |
Description
Resolves #4202
This change defaults BucketListDB to enabled. The optional
EXPERIMENTAL_BUCKETLIST_DB
has been changed to the required flagDEPRECATED_SQL_LEDGER_STATE
. If this flag is not set, core will fail to start. When BucketListDB is enabled for the first time, many SQL tables are dropped and can only be recovered by replaying many transactions. Crashing if this flag is not explicitly defined protects operators from accidentally dropping these tables when upgrading.I'm not set on the name
DEPRECATED_SQL_LEDGER_STATE
, but I wanted to include "deprecated" in the name to discourage using SQL for ledger state as much as possible.Checklist
clang-format
v8.0.0 (viamake format
or the Visual Studio extension)