diff --git a/arangod/MMFiles/MMFilesEngine.cpp b/arangod/MMFiles/MMFilesEngine.cpp index 5f8ea6b193..4bd4c85cec 100644 --- a/arangod/MMFiles/MMFilesEngine.cpp +++ b/arangod/MMFiles/MMFilesEngine.cpp @@ -533,6 +533,10 @@ int MMFilesEngine::getCollectionsAndIndexes(TRI_vocbase_t* vocbase, return TRI_ERROR_NO_ERROR; } + +void MMFilesEngine::waitForSync(TRI_voc_tick_t tick) { + MMFilesLogfileManager::instance()->slots()->waitForTick(tick); +} TRI_vocbase_t* MMFilesEngine::openDatabase(arangodb::velocypack::Slice const& args, bool isUpgrade, int& status) { VPackSlice idSlice = args.get("id"); diff --git a/arangod/MMFiles/MMFilesEngine.h b/arangod/MMFiles/MMFilesEngine.h index 7cf15e3a0e..0982748e25 100644 --- a/arangod/MMFiles/MMFilesEngine.h +++ b/arangod/MMFiles/MMFilesEngine.h @@ -117,6 +117,8 @@ class MMFilesEngine final : public StorageEngine { std::string databasePath(TRI_vocbase_t const* vocbase) const override { return databaseDirectory(vocbase->id()); } + + void waitForSync(TRI_voc_tick_t tick) override; virtual TRI_vocbase_t* openDatabase(arangodb::velocypack::Slice const& parameters, bool isUpgrade, int&) override; Database* createDatabase(TRI_voc_tick_t id, arangodb::velocypack::Slice const& args, int& status) override { diff --git a/arangod/StorageEngine/StorageEngine.h b/arangod/StorageEngine/StorageEngine.h index ec3d1f81c7..01eacb5105 100644 --- a/arangod/StorageEngine/StorageEngine.h +++ b/arangod/StorageEngine/StorageEngine.h @@ -125,6 +125,8 @@ class StorageEngine : public application_features::ApplicationFeature { using Database = TRI_vocbase_t; using CollectionView = LogicalCollection; + + virtual void waitForSync(TRI_voc_tick_t tick) = 0; //// operations on databasea diff --git a/arangod/Transaction/Methods.cpp b/arangod/Transaction/Methods.cpp index e735c88001..894db32993 100644 --- a/arangod/Transaction/Methods.cpp +++ b/arangod/Transaction/Methods.cpp @@ -39,7 +39,6 @@ #include "Cluster/ServerState.h" #include "Indexes/Index.h" #include "Logger/Logger.h" -#include "MMFiles/MMFilesLogfileManager.h" //TODO -- remove -- waitForTick #include "StorageEngine/EngineSelectorFeature.h" #include "StorageEngine/StorageEngine.h" #include "StorageEngine/TransactionCollection.h" @@ -1414,7 +1413,7 @@ OperationResult transaction::Methods::insertLocal(std::string const& collectionN // wait for operation(s) to be synced to disk here if (res == TRI_ERROR_NO_ERROR && options.waitForSync && maxTick > 0 && isSingleOperationTransaction()) { - MMFilesLogfileManager::instance()->slots()->waitForTick(maxTick); + EngineSelectorFeature::ENGINE->waitForSync(maxTick); } // Now see whether or not we have to do synchronous replication: @@ -1723,7 +1722,7 @@ OperationResult transaction::Methods::modifyLocal( // wait for operation(s) to be synced to disk here if (res == TRI_ERROR_NO_ERROR && options.waitForSync && maxTick > 0 && isSingleOperationTransaction()) { - MMFilesLogfileManager::instance()->slots()->waitForTick(maxTick); + EngineSelectorFeature::ENGINE->waitForSync(maxTick); } // Now see whether or not we have to do synchronous replication: @@ -1967,7 +1966,7 @@ OperationResult transaction::Methods::removeLocal(std::string const& collectionN // wait for operation(s) to be synced to disk here if (res == TRI_ERROR_NO_ERROR && options.waitForSync && maxTick > 0 && isSingleOperationTransaction()) { - MMFilesLogfileManager::instance()->slots()->waitForTick(maxTick); + EngineSelectorFeature::ENGINE->waitForSync(maxTick); } // Now see whether or not we have to do synchronous replication: