1
0
Fork 0

moved TransactionHints.h

This commit is contained in:
jsteemann 2017-02-13 14:36:27 +01:00
parent 101fac3fa8
commit 16189aa969
19 changed files with 94 additions and 91 deletions

View File

@ -43,7 +43,7 @@
#include "Utils/DatabaseGuard.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/CompactionLocker.h"
#include "VocBase/LogicalCollection.h"
@ -643,14 +643,14 @@ int MMFilesCollectorThread::processCollectionOperations(MMFilesCollectorCache* c
arangodb::SingleCollectionTransaction trx(
arangodb::StandaloneTransactionContext::Create(collection->vocbase()),
collection->cid(), AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::NO_USAGE_LOCK,
trx.addHint(transaction::Hints::Hint::NO_USAGE_LOCK,
true); // already locked by guard above
trx.addHint(TransactionHints::Hint::NO_COMPACTION_LOCK,
trx.addHint(transaction::Hints::Hint::NO_COMPACTION_LOCK,
true); // already locked above
trx.addHint(TransactionHints::Hint::NO_THROTTLING, true);
trx.addHint(TransactionHints::Hint::NO_BEGIN_MARKER, true);
trx.addHint(TransactionHints::Hint::NO_ABORT_MARKER, true);
trx.addHint(TransactionHints::Hint::TRY_LOCK, true);
trx.addHint(transaction::Hints::Hint::NO_THROTTLING, true);
trx.addHint(transaction::Hints::Hint::NO_BEGIN_MARKER, true);
trx.addHint(transaction::Hints::Hint::NO_ABORT_MARKER, true);
trx.addHint(transaction::Hints::Hint::TRY_LOCK, true);
int res = trx.begin();

View File

@ -39,7 +39,7 @@
#include "StorageEngine/StorageEngine.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/CompactionLocker.h"
#include "VocBase/LogicalCollection.h"
#include "VocBase/vocbase.h"
@ -426,10 +426,10 @@ void MMFilesCompactorThread::compactDatafiles(LogicalCollection* collection,
arangodb::SingleCollectionTransaction trx(arangodb::StandaloneTransactionContext::Create(collection->vocbase()),
collection->cid(), AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::NO_BEGIN_MARKER, true);
trx.addHint(TransactionHints::Hint::NO_ABORT_MARKER, true);
trx.addHint(TransactionHints::Hint::NO_COMPACTION_LOCK, true);
trx.addHint(TransactionHints::Hint::NO_THROTTLING, true);
trx.addHint(transaction::Hints::Hint::NO_BEGIN_MARKER, true);
trx.addHint(transaction::Hints::Hint::NO_ABORT_MARKER, true);
trx.addHint(transaction::Hints::Hint::NO_COMPACTION_LOCK, true);
trx.addHint(transaction::Hints::Hint::NO_THROTTLING, true);
CompactionInitialContext initial = getCompactionContext(&trx, collection, toCompact);
@ -956,8 +956,8 @@ uint64_t MMFilesCompactorThread::getNumberOfDocuments(LogicalCollection* collect
AccessMode::Type::READ);
// only try to acquire the lock here
// if lock acquisition fails, we go on and report an (arbitrary) positive number
trx.addHint(TransactionHints::Hint::TRY_LOCK, false);
trx.addHint(TransactionHints::Hint::NO_THROTTLING, true);
trx.addHint(transaction::Hints::Hint::TRY_LOCK, false);
trx.addHint(transaction::Hints::Hint::NO_THROTTLING, true);
int res = trx.begin();

View File

@ -27,7 +27,7 @@
#include "MMFiles/MMFilesDocumentOperation.h"
#include "StorageEngine/TransactionState.h"
#include "Utils/TransactionMethods.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/LogicalCollection.h"
#include "VocBase/modes.h"
@ -116,7 +116,7 @@ void MMFilesTransactionCollection::freeOperations(TransactionMethods* activeTrx,
return;
}
bool const isSingleOperationTransaction = _transaction->_hints.has(TransactionHints::Hint::SINGLE_OPERATION);
bool const isSingleOperationTransaction = _transaction->_hints.has(transaction::Hints::Hint::SINGLE_OPERATION);
if (mustRollback) {
// revert all operations
@ -149,8 +149,8 @@ void MMFilesTransactionCollection::freeOperations(TransactionMethods* activeTrx,
bool MMFilesTransactionCollection::canAccess(AccessMode::Type accessType) const {
if (_collection == nullptr) {
if (!_transaction->_hints.has(TransactionHints::Hint::LOCK_NEVER) ||
!_transaction->_hints.has(TransactionHints::Hint::NO_USAGE_LOCK)) {
if (!_transaction->_hints.has(transaction::Hints::Hint::LOCK_NEVER) ||
!_transaction->_hints.has(transaction::Hints::Hint::NO_USAGE_LOCK)) {
// not opened. probably a mistake made by the caller
return false;
}
@ -198,8 +198,8 @@ int MMFilesTransactionCollection::use(int nestingLevel) {
if (_collection == nullptr) {
// open the collection
if (!_transaction->_hints.has(TransactionHints::Hint::LOCK_NEVER) &&
!_transaction->_hints.has(TransactionHints::Hint::NO_USAGE_LOCK)) {
if (!_transaction->_hints.has(transaction::Hints::Hint::LOCK_NEVER) &&
!_transaction->_hints.has(transaction::Hints::Hint::NO_USAGE_LOCK)) {
// use and usage-lock
TRI_vocbase_col_status_e status;
LOG_TRX(_transaction, nestingLevel) << "using collection " << _cid;
@ -239,7 +239,7 @@ int MMFilesTransactionCollection::use(int nestingLevel) {
if (nestingLevel == 0 &&
AccessMode::isWriteOrExclusive(_accessType)) {
// read-lock the compaction lock
if (!_transaction->_hints.has(TransactionHints::Hint::NO_COMPACTION_LOCK)) {
if (!_transaction->_hints.has(transaction::Hints::Hint::NO_COMPACTION_LOCK)) {
if (!_compactionLocked) {
_collection->preventCompaction();
_compactionLocked = true;
@ -252,10 +252,10 @@ int MMFilesTransactionCollection::use(int nestingLevel) {
_originalRevision = _collection->revision();
}
bool shouldLock = _transaction->_hints.has(TransactionHints::Hint::LOCK_ENTIRELY);
bool shouldLock = _transaction->_hints.has(transaction::Hints::Hint::LOCK_ENTIRELY);
if (!shouldLock) {
shouldLock = (AccessMode::isWriteOrExclusive(_accessType) && !_transaction->_hints.has(TransactionHints::Hint::SINGLE_OPERATION));
shouldLock = (AccessMode::isWriteOrExclusive(_accessType) && !_transaction->_hints.has(transaction::Hints::Hint::SINGLE_OPERATION));
}
if (shouldLock && !isLocked()) {
@ -279,7 +279,7 @@ void MMFilesTransactionCollection::unuse(int nestingLevel) {
// the top level transaction releases all collections
if (nestingLevel == 0 && _collection != nullptr) {
if (!_transaction->_hints.has(TransactionHints::Hint::NO_COMPACTION_LOCK)) {
if (!_transaction->_hints.has(transaction::Hints::Hint::NO_COMPACTION_LOCK)) {
if (AccessMode::isWriteOrExclusive(_accessType) && _compactionLocked) {
// read-unlock the compaction lock
_collection->allowCompaction();
@ -304,7 +304,7 @@ void MMFilesTransactionCollection::release() {
/// @brief lock a collection
int MMFilesTransactionCollection::doLock(AccessMode::Type type, int nestingLevel) {
if (_transaction->_hints.has(TransactionHints::Hint::LOCK_NEVER)) {
if (_transaction->_hints.has(transaction::Hints::Hint::LOCK_NEVER)) {
// never lock
return TRI_ERROR_NO_ERROR;
}
@ -327,12 +327,12 @@ int MMFilesTransactionCollection::doLock(AccessMode::Type type, int nestingLevel
LogicalCollection* collection = _collection;
TRI_ASSERT(collection != nullptr);
double timeout = _transaction->_timeout;
if (_transaction->_hints.has(TransactionHints::Hint::TRY_LOCK)) {
if (_transaction->_hints.has(transaction::Hints::Hint::TRY_LOCK)) {
// give up early if we cannot acquire the lock instantly
timeout = 0.00000001;
}
bool const useDeadlockDetector = !_transaction->_hints.has(TransactionHints::Hint::SINGLE_OPERATION);
bool const useDeadlockDetector = !_transaction->_hints.has(transaction::Hints::Hint::SINGLE_OPERATION);
int res;
if (!isWrite(type)) {
@ -352,7 +352,7 @@ int MMFilesTransactionCollection::doLock(AccessMode::Type type, int nestingLevel
/// @brief unlock a collection
int MMFilesTransactionCollection::doUnlock(AccessMode::Type type, int nestingLevel) {
if (_transaction->_hints.has(TransactionHints::Hint::LOCK_NEVER)) {
if (_transaction->_hints.has(transaction::Hints::Hint::LOCK_NEVER)) {
// never unlock
return TRI_ERROR_NO_ERROR;
}
@ -388,7 +388,7 @@ int MMFilesTransactionCollection::doUnlock(AccessMode::Type type, int nestingLev
return TRI_ERROR_INTERNAL;
}
bool const useDeadlockDetector = !_transaction->_hints.has(TransactionHints::Hint::SINGLE_OPERATION);
bool const useDeadlockDetector = !_transaction->_hints.has(transaction::Hints::Hint::SINGLE_OPERATION);
LogicalCollection* collection = _collection;
TRI_ASSERT(collection != nullptr);

View File

@ -56,7 +56,7 @@ MMFilesTransactionState::MMFilesTransactionState(TRI_vocbase_t* vocbase)
MMFilesTransactionState::~MMFilesTransactionState() {}
/// @brief start a transaction
int MMFilesTransactionState::beginTransaction(TransactionHints hints, int nestingLevel) {
int MMFilesTransactionState::beginTransaction(transaction::Hints hints, int nestingLevel) {
LOG_TRX(this, nestingLevel) << "beginning " << AccessMode::typeString(_type) << " transaction";
if (nestingLevel == 0) {
@ -64,7 +64,7 @@ int MMFilesTransactionState::beginTransaction(TransactionHints hints, int nestin
auto logfileManager = MMFilesLogfileManager::instance();
if (!hasHint(TransactionHints::Hint::NO_THROTTLING) &&
if (!hasHint(transaction::Hints::Hint::NO_THROTTLING) &&
AccessMode::isWriteOrExclusive(_type) &&
logfileManager->canBeThrottled()) {
// write-throttling?
@ -196,7 +196,7 @@ int MMFilesTransactionState::addOperation(TRI_voc_rid_t revisionId,
LogicalCollection* collection = operation.collection();
bool const isSingleOperationTransaction = isSingleOperation();
if (hasHint(TransactionHints::Hint::RECOVERY)) {
if (hasHint(transaction::Hints::Hint::RECOVERY)) {
// turn off all waitForSync operations during recovery
waitForSync = false;
} else if (!waitForSync) {
@ -346,7 +346,7 @@ int MMFilesTransactionState::writeBeginMarker() {
return TRI_ERROR_NO_ERROR;
}
if (hasHint(TransactionHints::Hint::NO_BEGIN_MARKER)) {
if (hasHint(transaction::Hints::Hint::NO_BEGIN_MARKER)) {
return TRI_ERROR_NO_ERROR;
}
@ -389,7 +389,7 @@ int MMFilesTransactionState::writeAbortMarker() {
return TRI_ERROR_NO_ERROR;
}
if (hasHint(TransactionHints::Hint::NO_ABORT_MARKER)) {
if (hasHint(transaction::Hints::Hint::NO_ABORT_MARKER)) {
return TRI_ERROR_NO_ERROR;
}

View File

@ -28,7 +28,7 @@
#include "Basics/SmallVector.h"
#include "StorageEngine/TransactionState.h"
#include "Utils/TransactionMethods.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/AccessMode.h"
#include "VocBase/voc-types.h"
@ -52,7 +52,7 @@ class MMFilesTransactionState final : public TransactionState {
~MMFilesTransactionState();
/// @brief begin a transaction
int beginTransaction(TransactionHints hints, int nestingLevel) override;
int beginTransaction(transaction::Hints hints, int nestingLevel) override;
/// @brief commit a transaction
int commitTransaction(TransactionMethods* trx, int nestingLevel) override;

View File

@ -38,7 +38,7 @@
#include "Utils/OperationOptions.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/LogicalCollection.h"
#include <velocypack/Collection.h>
@ -282,12 +282,12 @@ int MMFilesWalRecoverState::executeSingleOperation(
try {
SingleCollectionTransaction trx(arangodb::StandaloneTransactionContext::Create(vocbase), collectionId, AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(TransactionHints::Hint::NO_BEGIN_MARKER, false);
trx.addHint(TransactionHints::Hint::NO_ABORT_MARKER, false);
trx.addHint(TransactionHints::Hint::NO_THROTTLING, false);
trx.addHint(TransactionHints::Hint::LOCK_NEVER, false);
trx.addHint(TransactionHints::Hint::RECOVERY, false); // to turn off waitForSync!
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::NO_BEGIN_MARKER, false);
trx.addHint(transaction::Hints::Hint::NO_ABORT_MARKER, false);
trx.addHint(transaction::Hints::Hint::NO_THROTTLING, false);
trx.addHint(transaction::Hints::Hint::LOCK_NEVER, false);
trx.addHint(transaction::Hints::Hint::RECOVERY, false); // to turn off waitForSync!
res = trx.begin();

View File

@ -37,7 +37,7 @@
#include "StorageEngine/TransactionState.h"
#include "Utils/CollectionGuard.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/LogicalCollection.h"
#include "VocBase/vocbase.h"
#include "VocBase/voc-types.h"
@ -573,7 +573,7 @@ int ContinuousSyncer::processDocument(TRI_replication_operation_e type,
// update the apply tick for all standalone operations
SingleCollectionTransaction trx(StandaloneTransactionContext::Create(_vocbase),
cid, AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
int res = trx.begin();

View File

@ -30,7 +30,7 @@
#include "Utils/OperationOptions.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/vocbase.h"
using namespace arangodb;
@ -128,7 +128,7 @@ bool RestDocumentHandler::createDocument() {
AccessMode::Type::WRITE);
bool const isMultiple = body.isArray();
if (!isMultiple) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
int res = trx.begin();
@ -233,7 +233,7 @@ bool RestDocumentHandler::readSingleDocument(bool generateBody) {
auto transactionContext(StandaloneTransactionContext::Create(_vocbase));
SingleCollectionTransaction trx(transactionContext, collection,
AccessMode::Type::READ);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
// ...........................................................................
// inside read transaction
@ -421,7 +421,7 @@ bool RestDocumentHandler::modifyDocument(bool isPatch) {
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::WRITE);
if (!isArrayCase) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
// ...........................................................................
@ -546,7 +546,7 @@ bool RestDocumentHandler::deleteDocument() {
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::WRITE);
if (suffixes.size() == 2 || !search.isArray()) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
int res = trx.begin();

View File

@ -49,7 +49,7 @@
#include "Utils/OperationOptions.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/LogicalCollection.h"
#include "VocBase/replication-applier.h"
#include "VocBase/replication-dump.h"
@ -1503,7 +1503,7 @@ int RestReplicationHandler::processRestoreCollection(
SingleCollectionTransaction trx(
StandaloneTransactionContext::Create(_vocbase), col->cid(),
AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::RECOVERY,
trx.addHint(transaction::Hints::Hint::RECOVERY,
false); // to turn off waitForSync!
res = trx.begin();
@ -2259,7 +2259,7 @@ int RestReplicationHandler::processRestoreData(
SingleCollectionTransaction trx(
StandaloneTransactionContext::Create(_vocbase), colName,
AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::RECOVERY,
trx.addHint(transaction::Hints::Hint::RECOVERY,
false); // to turn off waitForSync!
int res = trx.begin();
@ -3448,7 +3448,7 @@ void RestReplicationHandler::handleCommandHoldReadLockCollection() {
auto trxContext = StandaloneTransactionContext::Create(_vocbase);
SingleCollectionTransaction trx(trxContext, col->cid(), AccessMode::Type::READ);
trx.addHint(TransactionHints::Hint::LOCK_ENTIRELY, false);
trx.addHint(transaction::Hints::Hint::LOCK_ENTIRELY, false);
int res = trx.begin();
if (res != TRI_ERROR_NO_ERROR) {
generateError(rest::ResponseCode::SERVER_ERROR,

View File

@ -241,8 +241,8 @@ TransactionCollection* TransactionState::findCollection(TRI_voc_cid_t cid, size_
/// @brief release collection locks for a transaction
int TransactionState::releaseCollections() {
if (hasHint(TransactionHints::Hint::LOCK_NEVER) ||
hasHint(TransactionHints::Hint::NO_USAGE_LOCK)) {
if (hasHint(transaction::Hints::Hint::LOCK_NEVER) ||
hasHint(transaction::Hints::Hint::NO_USAGE_LOCK)) {
return TRI_ERROR_NO_ERROR;
}

View File

@ -27,7 +27,7 @@
#include "Basics/Common.h"
#include "Basics/SmallVector.h"
#include "Utils/TransactionMethods.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/AccessMode.h"
#include "VocBase/voc-types.h"
@ -81,19 +81,19 @@ class TransactionState {
/// @brief whether or not a transaction consists of a single operation
bool isSingleOperation() const {
return hasHint(TransactionHints::Hint::SINGLE_OPERATION);
return hasHint(transaction::Hints::Hint::SINGLE_OPERATION);
}
/// @brief update the status of a transaction
void updateStatus(TransactionMethods::Status status);
/// @brief whether or not a specific hint is set for the transaction
bool hasHint(TransactionHints::Hint hint) const {
bool hasHint(transaction::Hints::Hint hint) const {
return _hints.has(hint);
}
/// @brief begin a transaction
virtual int beginTransaction(TransactionHints hints, int nestingLevel) = 0;
virtual int beginTransaction(transaction::Hints hints, int nestingLevel) = 0;
/// @brief commit a transaction
virtual int commitTransaction(TransactionMethods* trx, int nestingLevel) = 0;
@ -134,7 +134,7 @@ class TransactionState {
SmallVector<TransactionCollection*> _collections; // list of participating collections
public:
rocksdb::Transaction* _rocksTransaction;
TransactionHints _hints; // hints;
transaction::Hints _hints; // hints;
int _nestingLevel;
bool _allowImplicit;
bool _hasOperations;

View File

@ -21,13 +21,15 @@
/// @author Jan Steemann
////////////////////////////////////////////////////////////////////////////////
#ifndef ARANGOD_UTILS_TRANSACTION_HINTS_H
#define ARANGOD_UTILS_TRANSACTION_HINTS_H 1
#ifndef ARANGOD_TRANSACTION_HINTS_H
#define ARANGOD_TRANSACTION_HINTS_H 1
#include "Basics/Common.h"
namespace arangodb {
class TransactionHints {
namespace transaction {
class Hints {
public:
typedef uint32_t ValueType;
@ -46,9 +48,9 @@ class TransactionHints {
RECOVERY = 512
};
TransactionHints() : _value(0) {}
explicit TransactionHints(Hint value) : _value(static_cast<ValueType>(value)) {}
explicit TransactionHints(ValueType value) : _value(value) {}
Hints() : _value(0) {}
explicit Hints(Hint value) : _value(static_cast<ValueType>(value)) {}
explicit Hints(ValueType value) : _value(value) {}
inline bool has(ValueType value) const noexcept {
return (_value & value) != 0;
@ -78,6 +80,7 @@ class TransactionHints {
ValueType _value;
};
}
}
#endif

View File

@ -46,9 +46,9 @@ class AqlTransaction final : public TransactionMethods {
: TransactionMethods(transactionContext),
_collections(*collections) {
if (!isMainTransaction) {
addHint(TransactionHints::Hint::LOCK_NEVER, true);
addHint(transaction::Hints::Hint::LOCK_NEVER, true);
} else {
addHint(TransactionHints::Hint::LOCK_ENTIRELY, false);
addHint(transaction::Hints::Hint::LOCK_ENTIRELY, false);
}
for (auto it : *collections) {

View File

@ -29,7 +29,7 @@
#include "Utils/CollectionGuard.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/StandaloneTransactionContext.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/Ditch.h"
#include "VocBase/LogicalCollection.h"
#include "VocBase/vocbase.h"
@ -92,7 +92,7 @@ void CollectionExport::run(uint64_t maxWaitTime, size_t limit) {
AccessMode::Type::READ);
// already locked by guard above
trx.addHint(TransactionHints::Hint::NO_USAGE_LOCK, true);
trx.addHint(transaction::Hints::Hint::NO_USAGE_LOCK, true);
int res = trx.begin();
if (res != TRI_ERROR_NO_ERROR) {

View File

@ -149,7 +149,7 @@ static OperationResult EmptyResult(bool waitForSync) {
}
/// @brief add a transaction hint
void TransactionMethods::addHint(TransactionHints::Hint hint, bool passthrough) {
void TransactionMethods::addHint(transaction::Hints::Hint hint, bool passthrough) {
_hints.set(hint);
if (passthrough && _state != nullptr) {
@ -158,7 +158,7 @@ void TransactionMethods::addHint(TransactionHints::Hint hint, bool passthrough)
}
/// @brief remove a transaction hint
void TransactionMethods::removeHint(TransactionHints::Hint hint, bool passthrough) {
void TransactionMethods::removeHint(transaction::Hints::Hint hint, bool passthrough) {
_hints.unset(hint);
if (passthrough && _state != nullptr) {

View File

@ -29,7 +29,7 @@
#include "Basics/StringRef.h"
#include "Cluster/ServerState.h"
#include "Utils/OperationResult.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "VocBase/AccessMode.h"
#include "VocBase/vocbase.h"
#include "VocBase/voc-types.h"
@ -204,10 +204,10 @@ class TransactionMethods {
rocksdb::Transaction* rocksTransaction();
/// @brief add a transaction hint
void addHint(TransactionHints::Hint hint, bool passthrough);
void addHint(transaction::Hints::Hint hint, bool passthrough);
/// @brief remove a transaction hint
void removeHint(TransactionHints::Hint hint, bool passthrough);
void removeHint(transaction::Hints::Hint hint, bool passthrough);
/// @brief return the registered error data
std::string const getErrorData() const { return _errorData; }
@ -693,7 +693,7 @@ class TransactionMethods {
std::string _errorData;
/// @brief transaction hints
TransactionHints _hints;
transaction::Hints _hints;
/// @brief timeout for lock acquisition
double _timeout;

View File

@ -41,7 +41,7 @@ class UserTransaction final : public TransactionMethods {
double lockTimeout, bool waitForSync,
bool allowImplicitCollections)
: TransactionMethods(transactionContext) {
addHint(TransactionHints::Hint::LOCK_ENTIRELY, false);
addHint(transaction::Hints::Hint::LOCK_ENTIRELY, false);
if (lockTimeout >= 0.0) {
setTimeout(lockTimeout);

View File

@ -43,7 +43,7 @@
#include "Utils/OperationOptions.h"
#include "Utils/OperationResult.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "Utils/V8TransactionContext.h"
#include "V8/v8-conv.h"
#include "V8/v8-utils.h"
@ -331,7 +331,7 @@ static void ExistsVocbaseVPack(
TRI_ASSERT(search.isObject());
SingleCollectionTransaction trx(transactionContext, collectionName, AccessMode::Type::READ);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
res = trx.begin();
@ -431,7 +431,7 @@ static void DocumentVocbaseCol(
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::READ);
if (!args[0]->IsArray()) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
TIMER_STOP(JS_DOCUMENT_CREATE_TRX);
@ -517,7 +517,7 @@ static void DocumentVocbase(
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::READ);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
int res = trx.begin();
@ -609,7 +609,7 @@ static void RemoveVocbaseCol(v8::FunctionCallbackInfo<v8::Value> const& args) {
SingleCollectionTransaction trx(transactionContext, collectionName, AccessMode::Type::WRITE);
if (!args[0]->IsArray()) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
int res = trx.begin();
@ -752,7 +752,7 @@ static void RemoveVocbase(v8::FunctionCallbackInfo<v8::Value> const& args) {
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
int res = trx.begin();
@ -1390,7 +1390,7 @@ static void JS_PropertiesVocbaseCol(
isModification ? AccessMode::Type::WRITE : AccessMode::Type::READ);
if (!isModification) {
trx.addHint(TransactionHints::Hint::NO_USAGE_LOCK, false);
trx.addHint(transaction::Hints::Hint::NO_USAGE_LOCK, false);
}
int res = trx.begin();
@ -1801,7 +1801,7 @@ static void ModifyVocbaseCol(TRI_voc_document_operation_e operation,
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::WRITE);
if (!args[0]->IsArray()) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
int res = trx.begin();
@ -1928,7 +1928,7 @@ static void ModifyVocbase(TRI_voc_document_operation_e operation,
SingleCollectionTransaction trx(transactionContext, collectionName,
AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
int res = trx.begin();
if (res != TRI_ERROR_NO_ERROR) {
@ -2173,7 +2173,7 @@ static void JS_SaveVocbase(v8::FunctionCallbackInfo<v8::Value> const& args) {
auto transactionContext(V8TransactionContext::Create(vocbase, true));
SingleCollectionTransaction trx(transactionContext,
collectionName, AccessMode::Type::WRITE);
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
res = trx.begin();
@ -2336,7 +2336,7 @@ static void JS_InsertVocbaseCol(
SingleCollectionTransaction trx(transactionContext, collection->cid(),
AccessMode::Type::WRITE);
if (!payloadIsArray) {
trx.addHint(TransactionHints::Hint::SINGLE_OPERATION, false);
trx.addHint(transaction::Hints::Hint::SINGLE_OPERATION, false);
}
TIMER_STOP(JS_INSERT_CREATE_TRX);

View File

@ -33,7 +33,7 @@
#include "StorageEngine/EngineSelectorFeature.h"
#include "Utils/Events.h"
#include "Utils/SingleCollectionTransaction.h"
#include "Utils/TransactionHints.h"
#include "Transaction/Hints.h"
#include "Utils/V8TransactionContext.h"
#include "V8/v8-conv.h"
#include "V8/v8-globals.h"
@ -550,7 +550,7 @@ static void JS_GetIndexesVocbaseCol(
V8TransactionContext::Create(collection->vocbase(), true),
collection->cid(), AccessMode::Type::READ);
trx.addHint(TransactionHints::Hint::NO_USAGE_LOCK, false);
trx.addHint(transaction::Hints::Hint::NO_USAGE_LOCK, false);
int res = trx.begin();