From 40b45bf4d12c9886100b0eb36fe224b91a9d8fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Sat, 12 May 2018 01:25:01 +0200 Subject: [PATCH 1/3] Make huge deletes go in smaller batches --- arangod/Aql/ExecutionNode.h | 3 ++- arangod/RocksDBEngine/RocksDBCommon.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arangod/Aql/ExecutionNode.h b/arangod/Aql/ExecutionNode.h index 5bfe5cd5ab..b159c7d593 100644 --- a/arangod/Aql/ExecutionNode.h +++ b/arangod/Aql/ExecutionNode.h @@ -171,7 +171,8 @@ class ExecutionNode { template static inline T castTo(FromType node) noexcept { static_assert(std::is_pointer::value, "invalid type passed into ExecutionNode::castTo"); - static_assert(node->IsExecutionNode, "invalid type passed into ExecutionNode::castTo"); + static_assert(std::is_pointer::value, "invalid type passed into ExecutionNode::castTo"); + static_assert(std::remove_pointer::type::IsExecutionNode, "invalid type passed into ExecutionNode::castTo"); #ifdef ARANGODB_ENABLE_MAINTAINER_MODE T result = dynamic_cast(node); diff --git a/arangod/RocksDBEngine/RocksDBCommon.cpp b/arangod/RocksDBEngine/RocksDBCommon.cpp index 9a5be935d0..1686410e72 100644 --- a/arangod/RocksDBEngine/RocksDBCommon.cpp +++ b/arangod/RocksDBEngine/RocksDBCommon.cpp @@ -198,7 +198,7 @@ Result removeLargeRange(rocksdb::TransactionDB* db, ++total; ++counter; batch.Delete(cf, it->key()); - if (counter == 1000) { + if (counter >= 200) { LOG_TOPIC(DEBUG, Logger::FIXME) << "intermediate delete write"; // Persist deletes all 1000 documents rocksdb::Status status = bDB->Write(rocksdb::WriteOptions(), &batch); From 5e4d13332438ae3c61bb84ca1595102f6ae3d5d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Sat, 12 May 2018 01:27:58 +0200 Subject: [PATCH 2/3] Slightly increase batch size --- arangod/RocksDBEngine/RocksDBCommon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arangod/RocksDBEngine/RocksDBCommon.cpp b/arangod/RocksDBEngine/RocksDBCommon.cpp index 1686410e72..1d2a06b549 100644 --- a/arangod/RocksDBEngine/RocksDBCommon.cpp +++ b/arangod/RocksDBEngine/RocksDBCommon.cpp @@ -198,7 +198,7 @@ Result removeLargeRange(rocksdb::TransactionDB* db, ++total; ++counter; batch.Delete(cf, it->key()); - if (counter >= 200) { + if (counter >= 256) { LOG_TOPIC(DEBUG, Logger::FIXME) << "intermediate delete write"; // Persist deletes all 1000 documents rocksdb::Status status = bDB->Write(rocksdb::WriteOptions(), &batch); From 15000c5989b5f946a11c31d203003af9dee2dcbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Sat, 12 May 2018 02:07:00 +0200 Subject: [PATCH 3/3] revert change --- arangod/RocksDBEngine/RocksDBCommon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arangod/RocksDBEngine/RocksDBCommon.cpp b/arangod/RocksDBEngine/RocksDBCommon.cpp index 1d2a06b549..99a7f977c1 100644 --- a/arangod/RocksDBEngine/RocksDBCommon.cpp +++ b/arangod/RocksDBEngine/RocksDBCommon.cpp @@ -198,7 +198,7 @@ Result removeLargeRange(rocksdb::TransactionDB* db, ++total; ++counter; batch.Delete(cf, it->key()); - if (counter >= 256) { + if (counter >= 1000) { LOG_TOPIC(DEBUG, Logger::FIXME) << "intermediate delete write"; // Persist deletes all 1000 documents rocksdb::Status status = bDB->Write(rocksdb::WriteOptions(), &batch);