1
0
Fork 0

use PutUntracked (#8126)

This commit is contained in:
Jan 2019-02-13 16:04:27 +01:00 committed by GitHub
parent 8a08bf4ec6
commit fbc1e5b35f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 70 additions and 8 deletions

View File

@ -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()) {

View File

@ -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));

View File

@ -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;

View File

@ -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;
}

View File

@ -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);

View File

@ -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;

View File

@ -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();
}
}
}