1
0
Fork 0

workaround for replication

This commit is contained in:
Simon Grätzer 2017-05-31 16:37:58 +02:00
parent 87ee7a45fe
commit 469e57773e
2 changed files with 31 additions and 10 deletions

View File

@ -1333,6 +1333,11 @@ RocksDBOperationResult RocksDBCollection::insertDocument(
res.keySize(key.string().size());
return res;
}
/*LOG_TOPIC(ERR, Logger::FIXME) << "PUT rev: " << revisionId << " trx: " << trx->state()->id()
<< " seq: " << mthd->readOptions().snapshot->GetSequenceNumber()
<< " objectID " << _objectId
<< " name: " << _logicalCollection->name();*/
RocksDBOperationResult innerRes;
READ_LOCKER(guard, _indexesLock);
@ -1391,6 +1396,11 @@ RocksDBOperationResult RocksDBCollection::removeDocument(
}
//}
/*LOG_TOPIC(ERR, Logger::FIXME) << "Delete rev: " << revisionId << " trx: " << trx->state()->id()
<< " seq: " << mthd->readOptions().snapshot->GetSequenceNumber()
<< " objectID " << _objectId
<< " name: " << _logicalCollection->name();*/
RocksDBOperationResult resInner;
READ_LOCKER(guard, _indexesLock);
for (std::shared_ptr<Index> const& idx : _indexes) {
@ -1517,10 +1527,10 @@ arangodb::Result RocksDBCollection::lookupRevisionVPack(
mdr.setManaged(std::move(value), revisionId);
} else {
/*LOG_TOPIC(ERR, Logger::FIXME) << "NOT FOUND rev: " << revisionId << " trx: " << trx->state()->id()
LOG_TOPIC(ERR, Logger::FIXME) << "NOT FOUND rev: " << revisionId << " trx: " << trx->state()->id()
<< " seq: " << mthd->readOptions().snapshot->GetSequenceNumber()
<< " objectID " << _objectId
<< " name: " << _logicalCollection->name();*/
<< " name: " << _logicalCollection->name();
mdr.reset();
}
return res;

View File

@ -213,9 +213,14 @@ arangodb::Result RocksDBReplicationContext::dumpKeyChunks(VPackBuilder& b,
VPackSlice highKey; // FIXME: no good keeping this
uint64_t hash = 0x012345678;
auto cb = [&](ManagedDocumentResult const& mdr) {
VPackSlice doc(mdr.vpack());
auto cb = [&](DocumentIdentifierToken const& token) {
bool ok = _collection->readDocument(_trx.get(), token, _mdr);
if (!ok) {
// TODO: do something here?
return;
}
VPackSlice doc(_mdr.vpack());
highKey = doc.get(StaticStrings::KeyString);
// set type
if (lowKey.empty()) {
@ -231,7 +236,7 @@ arangodb::Result RocksDBReplicationContext::dumpKeyChunks(VPackBuilder& b,
b.openArray();
while (_hasMore) {
try {
_hasMore = primary->nextDocument(cb, chunkSize);
_hasMore = primary->next(cb, chunkSize);
b.add(VPackValue(VPackValueType::Object));
b.add("low", VPackValue(lowKey));
@ -282,20 +287,26 @@ arangodb::Result RocksDBReplicationContext::dumpKeys(
}
}
auto cb = [&](ManagedDocumentResult const& mdr) {
VPackSlice doc(mdr.vpack());
auto cb = [&](DocumentIdentifierToken const& token) {
bool ok = _collection->readDocument(_trx.get(), token, _mdr);
if (!ok) {
// TODO: do something here?
return;
}
VPackSlice doc(_mdr.vpack());
VPackSlice key = doc.get(StaticStrings::KeyString);
b.openArray();
b.add(key);
b.add(VPackValue(std::to_string(mdr.lastRevisionId())));
b.add(VPackValue(std::to_string(_mdr.lastRevisionId())));
b.close();
};
b.openArray();
// chunkSize is going to be ignored here
try {
_hasMore = primary->nextDocument(cb, chunkSize);
_hasMore = primary->next(cb, chunkSize);
_lastIteratorOffset++;
} catch (std::exception const&) {
return Result(TRI_ERROR_INTERNAL);