mirror of https://gitee.com/bigwinds/arangodb
use PutUntracked (#8126)
This commit is contained in:
parent
8a08bf4ec6
commit
fbc1e5b35f
|
@ -1276,7 +1276,7 @@ Result RocksDBCollection::insertDocument(arangodb::transaction::Methods* trx,
|
|||
// disable indexing in this transaction if we are allowed to
|
||||
IndexingDisabler disabler(mthds, trx->isSingleOperationTransaction());
|
||||
|
||||
Result res = mthds->Put(RocksDBColumnFamily::documents(), key.ref(),
|
||||
Result res = mthds->PutUntracked(RocksDBColumnFamily::documents(), key.ref(),
|
||||
rocksdb::Slice(reinterpret_cast<char const*>(doc.begin()),
|
||||
static_cast<size_t>(doc.byteSize())));
|
||||
if (!res.ok()) {
|
||||
|
@ -1370,7 +1370,7 @@ Result RocksDBCollection::updateDocument(transaction::Methods* trx,
|
|||
// disable indexing in this transaction if we are allowed to
|
||||
IndexingDisabler disabler(mthd, trx->isSingleOperationTransaction());
|
||||
|
||||
Result res = mthd->Put(RocksDBColumnFamily::documents(), newKey.ref(),
|
||||
Result res = mthd->PutUntracked(RocksDBColumnFamily::documents(), newKey.ref(),
|
||||
rocksdb::Slice(reinterpret_cast<char const*>(newDoc.begin()),
|
||||
static_cast<size_t>(newDoc.byteSize())));
|
||||
if (!res.ok()) {
|
||||
|
|
|
@ -589,6 +589,7 @@ Result RocksDBEdgeIndex::insertInternal(transaction::Methods* trx, RocksDBMethod
|
|||
VPackSlice const& doc, OperationMode mode) {
|
||||
VPackSlice fromTo = doc.get(_directionAttr);
|
||||
TRI_ASSERT(fromTo.isString());
|
||||
TRI_ASSERT(!_unique);
|
||||
auto fromToRef = StringRef(fromTo);
|
||||
RocksDBKeyLeaser key(trx);
|
||||
key->constructEdgeIndexValue(_objectId, fromToRef, documentId);
|
||||
|
@ -602,7 +603,7 @@ Result RocksDBEdgeIndex::insertInternal(transaction::Methods* trx, RocksDBMethod
|
|||
blackListKey(fromToRef);
|
||||
|
||||
// acquire rocksdb transaction
|
||||
Result r = mthd->Put(_cf, key.ref(), value.string(), rocksutils::index);
|
||||
Result r = mthd->PutUntracked(_cf, key.ref(), value.string(), rocksutils::index);
|
||||
if (r.ok()) {
|
||||
std::hash<StringRef> hasher;
|
||||
uint64_t hash = static_cast<uint64_t>(hasher(fromToRef));
|
||||
|
|
|
@ -185,13 +185,14 @@ Result RocksDBFulltextIndex::insertInternal(transaction::Methods* trx, RocksDBMe
|
|||
// unique indexes have a different key structure
|
||||
RocksDBValue value = RocksDBValue::VPackIndexValue();
|
||||
|
||||
TRI_ASSERT(!_unique);
|
||||
int res = TRI_ERROR_NO_ERROR;
|
||||
// size_t const count = words.size();
|
||||
for (std::string const& word : words) {
|
||||
RocksDBKeyLeaser key(trx);
|
||||
key->constructFulltextIndexValue(_objectId, StringRef(word), documentId);
|
||||
|
||||
Result r = mthd->Put(_cf, key.ref(), value.string(), rocksutils::index);
|
||||
Result r = mthd->PutUntracked(_cf, key.ref(), value.string(), rocksutils::index);
|
||||
if (!r.ok()) {
|
||||
res = r.errorNumber();
|
||||
break;
|
||||
|
|
|
@ -392,6 +392,7 @@ Result RocksDBGeoIndex::insertInternal(transaction::Methods* trx, RocksDBMethods
|
|||
}
|
||||
return res;
|
||||
}
|
||||
TRI_ASSERT(!_unique);
|
||||
TRI_ASSERT(!cells.empty());
|
||||
TRI_ASSERT(S2::IsUnitLength(centroid));
|
||||
|
||||
|
@ -399,7 +400,7 @@ Result RocksDBGeoIndex::insertInternal(transaction::Methods* trx, RocksDBMethods
|
|||
RocksDBKeyLeaser key(trx);
|
||||
for (S2CellId cell : cells) {
|
||||
key->constructGeoIndexValue(_objectId, cell.id(), documentId);
|
||||
res = mthd->Put(RocksDBColumnFamily::geo(), key.ref(), val.string());
|
||||
res = mthd->PutUntracked(RocksDBColumnFamily::geo(), key.ref(), val.string());
|
||||
if (res.fail()) {
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -181,6 +181,12 @@ arangodb::Result RocksDBReadOnlyMethods::Put(rocksdb::ColumnFamilyHandle* cf,
|
|||
THROW_ARANGO_EXCEPTION(TRI_ERROR_ARANGO_READ_ONLY);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBReadOnlyMethods::PutUntracked(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const&, rocksdb::Slice const&,
|
||||
rocksutils::StatusHint) {
|
||||
THROW_ARANGO_EXCEPTION(TRI_ERROR_ARANGO_READ_ONLY);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBReadOnlyMethods::Delete(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key) {
|
||||
THROW_ARANGO_EXCEPTION(TRI_ERROR_ARANGO_READ_ONLY);
|
||||
|
@ -243,6 +249,14 @@ arangodb::Result RocksDBTrxMethods::Put(rocksdb::ColumnFamilyHandle* cf,
|
|||
return s.ok() ? arangodb::Result() : rocksutils::convertStatus(s, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBTrxMethods::PutUntracked(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key, rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint) {
|
||||
TRI_ASSERT(cf != nullptr);
|
||||
rocksdb::Status s = _state->_rocksTransaction->PutUntracked(cf, key.string(), val);
|
||||
return s.ok() ? arangodb::Result() : rocksutils::convertStatus(s, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBTrxMethods::Delete(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key) {
|
||||
TRI_ASSERT(cf != nullptr);
|
||||
|
@ -287,6 +301,13 @@ arangodb::Result RocksDBTrxUntrackedMethods::Put(rocksdb::ColumnFamilyHandle* cf
|
|||
return s.ok() ? arangodb::Result() : rocksutils::convertStatus(s, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBTrxUntrackedMethods::PutUntracked(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint) {
|
||||
return Put(cf, key, val, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBTrxUntrackedMethods::Delete(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key) {
|
||||
TRI_ASSERT(cf != nullptr);
|
||||
|
@ -321,6 +342,12 @@ arangodb::Result RocksDBBatchedMethods::Put(rocksdb::ColumnFamilyHandle* cf,
|
|||
return arangodb::Result();
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBBatchedMethods::PutUntracked(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key, rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint) {
|
||||
return Put(cf, key, val, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBBatchedMethods::Delete(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key) {
|
||||
TRI_ASSERT(cf != nullptr);
|
||||
|
@ -372,6 +399,13 @@ arangodb::Result RocksDBBatchedWithIndexMethods::Put(rocksdb::ColumnFamilyHandle
|
|||
return arangodb::Result();
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBBatchedWithIndexMethods::PutUntracked(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint) {
|
||||
return Put(cf, key, val, hint);
|
||||
}
|
||||
|
||||
arangodb::Result RocksDBBatchedWithIndexMethods::Delete(rocksdb::ColumnFamilyHandle* cf,
|
||||
RocksDBKey const& key) {
|
||||
TRI_ASSERT(cf != nullptr);
|
||||
|
|
|
@ -91,6 +91,9 @@ class RocksDBMethods {
|
|||
virtual arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const&,
|
||||
rocksdb::Slice const&,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) = 0;
|
||||
virtual arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const&,
|
||||
rocksdb::Slice const&,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) = 0;
|
||||
|
||||
virtual arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const&) = 0;
|
||||
|
||||
|
@ -127,6 +130,9 @@ class RocksDBReadOnlyMethods final : public RocksDBMethods {
|
|||
arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key) override;
|
||||
|
||||
std::unique_ptr<rocksdb::Iterator> NewIterator(rocksdb::ReadOptions const&,
|
||||
|
@ -157,6 +163,9 @@ class RocksDBTrxMethods : public RocksDBMethods {
|
|||
arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key) override;
|
||||
|
||||
std::unique_ptr<rocksdb::Iterator> NewIterator(rocksdb::ReadOptions const&,
|
||||
|
@ -177,6 +186,9 @@ class RocksDBTrxUntrackedMethods final : public RocksDBTrxMethods {
|
|||
arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key) override;
|
||||
};
|
||||
|
||||
|
@ -191,6 +203,9 @@ class RocksDBBatchedMethods final : public RocksDBMethods {
|
|||
arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key) override;
|
||||
std::unique_ptr<rocksdb::Iterator> NewIterator(rocksdb::ReadOptions const&,
|
||||
rocksdb::ColumnFamilyHandle*) override;
|
||||
|
@ -215,6 +230,9 @@ class RocksDBBatchedWithIndexMethods final : public RocksDBMethods {
|
|||
arangodb::Result Put(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result PutUntracked(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key,
|
||||
rocksdb::Slice const& val,
|
||||
rocksutils::StatusHint hint = rocksutils::StatusHint::none) override;
|
||||
arangodb::Result Delete(rocksdb::ColumnFamilyHandle*, RocksDBKey const& key) override;
|
||||
std::unique_ptr<rocksdb::Iterator> NewIterator(rocksdb::ReadOptions const&,
|
||||
rocksdb::ColumnFamilyHandle*) override;
|
||||
|
|
|
@ -651,9 +651,16 @@ Result RocksDBVPackIndex::insertInternal(transaction::Methods* trx, RocksDBMetho
|
|||
}
|
||||
|
||||
if (res == TRI_ERROR_NO_ERROR) {
|
||||
arangodb::Result r = mthds->Put(_cf, key, value.string(), rocksutils::index);
|
||||
if (!r.ok()) {
|
||||
res = r.errorNumber();
|
||||
if (_unique) {
|
||||
arangodb::Result r = mthds->Put(_cf, key, value.string(), rocksutils::index);
|
||||
if (!r.ok()) {
|
||||
res = r.errorNumber();
|
||||
}
|
||||
} else {
|
||||
arangodb::Result r = mthds->PutUntracked(_cf, key, value.string(), rocksutils::index);
|
||||
if (!r.ok()) {
|
||||
res = r.errorNumber();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue