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

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
devel
-----

* Fixed issue #14592: IS_NULL(@x) isn't recognized as a constant expression.
* Add ReplicatedLogs column family.

* Add optimization rule for AqlAnalyzer.

* Fixed issue #14592: IS_NULL(@x) isn't recognized as a constant expression.

* Fixed issue BTS-539 "Unsynchronized query kill while it's being finalized in
another thread was uncovered through `test-kill.js` of `communication_ssl`
suite". Fixed possible (but unlikely) crash when killing an AQL query.

* Add optimization rule for AqlAnalyzer.

* Append physical compaction of log collection to every Raft log
compaction (BTS-542).

Expand Down
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