8000 Bug fix/replicated logs missing column family by maierlars · Pull Request #14622 · arangodb/arangodb · GitHub
[go: up one dir, main page]

Skip to content

Bug fix/replicated logs missing column family #14622

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

Merged
merged 4 commits into from
Aug 10, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files. 8000
Loading
Diff view
Diff view
Next Next commit
Add ReplicatedLogs column family if not present.
  • Loading branch information
maierlars committed Aug 10, 2021
commit 37f7e47ad19c0afb351b4ae38fffc3dd24c78c1f
2 changes: 1 addition & 1 deletion arangod/RocksDBEngine/RocksDBColumnFamilyManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ struct RocksDBColumnFamilyManager {
External // for display to users
};

static constexpr size_t minNumberOfColumnFamilies = 8;
static constexpr size_t minNumberOfColumnFamilies = 7;
static constexpr size_t numberOfColumnFamilies = 8;

static void initialize();
Expand Down
26 changes: 18 additions & 8 deletions arangod/RocksDBEngine/RocksDBEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -708,8 +708,8 @@ void RocksDBEngine::start() {
addFamily(RocksDBColumnFamilyManager::Family::FulltextIndex);
addFamily(RocksDBColumnFamilyManager::Family::ReplicatedLogs);

std::vector<rocksdb::ColumnFamilyHandle*> cfHandles;
size_t const numberOfColumnFamilies = RocksDBColumnFamilyManager::minNumberOfColumnFamilies;

size_t const minNumberOfColumnFamilies = RocksDBColumnFamilyManager::minNumberOfColumnFamilies;
bool dbExisted = false;
{
rocksdb::Options testOptions;
Expand Down Expand Up @@ -744,12 +744,21 @@ void RocksDBEngine::start() {

LOG_TOPIC("528b8", DEBUG, arangodb::Logger::STARTUP)
<< "found existing column families: " << names;
auto const replicatedLogsName = RocksDBColumnFamilyManager::name(
RocksDBColumnFamilyManager::Family::ReplicatedLogs);

for (auto const& it : cfFamilies) {
auto it2 = std::find(existingColumnFamilies.begin(),
existingColumnFamilies.end(), it.name);

if (it2 == existingColumnFamilies.end()) {

if (it.name == replicatedLogsName) {
LOG_TOPIC("293c3", INFO, Logger::STARTUP)
<< "column family " << replicatedLogsName
<< " is missing and will be created.";
continue;
}

LOG_TOPIC("d9df8", FATAL, arangodb::Logger::STARTUP)
<< "column family '" << it.name << "' is missing in database"
<< ". if you are upgrading from an earlier alpha or beta version "
Expand All @@ -760,11 +769,11 @@ void RocksDBEngine::start() {
}
}

if (existingColumnFamilies.size() < numberOfColumnFamilies) {
if (existingColumnFamilies.size() < minNumberOfColumnFamilies) {
LOG_TOPIC("e99ec", FATAL, arangodb::Logger::STARTUP)
<< "unexpected number of column families found in database ("
<< cfHandles.size() << "). "
<< "expecting at least " << numberOfColumnFamilies
<< existingColumnFamilies.size() << "). "
<< "expecting at least " << minNumberOfColumnFamilies
<< ". if you are upgrading from an earlier alpha or beta version "
"of ArangoDB 3.2, "
<< "it is required to restart with a new database directory and "
Expand All @@ -774,6 +783,7 @@ void RocksDBEngine::start() {
}
}

std::vector<rocksdb::ColumnFamilyHandle*> cfHandles;
rocksdb::Status status =
rocksdb::TransactionDB::Open(_options, transactionOptions, _path,
cfFamilies, &cfHandles, &_db);
Expand All @@ -795,10 +805,10 @@ void RocksDBEngine::start() {
<< "unable to initialize RocksDB column families";
FATAL_ERROR_EXIT();
}
if (cfHandles.size() < numberOfColumnFamilies) {
if (cfHandles.size() < minNumberOfColumnFamilies) {
LOG_TOPIC("e572e", FATAL, arangodb::Logger::STARTUP)
<< "unexpected number of column families found in database. "
<< "got " << cfHandles.size() << ", expecting at least " << numberOfColumnFamilies;
<< "got " << cfHandles.size() << ", expecting at least " << minNumberOfColumnFamilies;
FATAL_ERROR_EXIT();
}

Expand Down
0