mirror of https://gitee.com/bigwinds/arangodb
make syncer more compatible and ignore revs if not present
This commit is contained in:
parent
5b58156309
commit
aa5e02c82d
|
@ -313,14 +313,18 @@ Result TailingSyncer::processDocument(TRI_replication_operation_e type,
|
||||||
// extract "rev"
|
// extract "rev"
|
||||||
VPackSlice const rev = doc.get(StaticStrings::RevString);
|
VPackSlice const rev = doc.get(StaticStrings::RevString);
|
||||||
|
|
||||||
if (!rev.isString()) {
|
if (!rev.isNone() && !rev.isString()) {
|
||||||
|
// _rev is an optional attribute
|
||||||
return Result(TRI_ERROR_REPLICATION_INVALID_RESPONSE, "invalid document revision format");
|
return Result(TRI_ERROR_REPLICATION_INVALID_RESPONSE, "invalid document revision format");
|
||||||
}
|
}
|
||||||
|
|
||||||
_documentBuilder.clear();
|
_documentBuilder.clear();
|
||||||
_documentBuilder.openObject();
|
_documentBuilder.openObject();
|
||||||
_documentBuilder.add(StaticStrings::KeyString, key);
|
_documentBuilder.add(StaticStrings::KeyString, key);
|
||||||
_documentBuilder.add(StaticStrings::RevString, rev);
|
if (rev.isString()) {
|
||||||
|
// _rev is an optional attribute
|
||||||
|
_documentBuilder.add(StaticStrings::RevString, rev);
|
||||||
|
}
|
||||||
_documentBuilder.close();
|
_documentBuilder.close();
|
||||||
|
|
||||||
VPackSlice const old = _documentBuilder.slice();
|
VPackSlice const old = _documentBuilder.slice();
|
||||||
|
|
|
@ -357,6 +357,73 @@ function BaseTestConfig() {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief test insert
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testInsert: function() {
|
||||||
|
connectToMaster();
|
||||||
|
|
||||||
|
compare(
|
||||||
|
function(state) {
|
||||||
|
db._create(cn);
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
for (let i = 0; i < 1000; ++i) {
|
||||||
|
db[cn].insert({ _key: "test" + i, value: i });
|
||||||
|
}
|
||||||
|
|
||||||
|
state.checksum = collectionChecksum(cn);
|
||||||
|
state.count = collectionCount(cn);
|
||||||
|
assertEqual(1000, state.count);
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
assertEqual(state.count, collectionCount(cn));
|
||||||
|
assertEqual(state.checksum, collectionChecksum(cn));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief test remove
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
testRemove: function() {
|
||||||
|
connectToMaster();
|
||||||
|
|
||||||
|
compare(
|
||||||
|
function(state) {
|
||||||
|
db._create(cn);
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
for (let i = 0; i < 1000; ++i) {
|
||||||
|
db[cn].insert({ _key: "test" + i, value: i });
|
||||||
|
}
|
||||||
|
for (let i = 0; i < 100; ++i) {
|
||||||
|
db[cn].remove("test" + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
state.checksum = collectionChecksum(cn);
|
||||||
|
state.count = collectionCount(cn);
|
||||||
|
assertEqual(900, state.count);
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
},
|
||||||
|
|
||||||
|
function(state) {
|
||||||
|
assertEqual(state.count, collectionCount(cn));
|
||||||
|
assertEqual(state.checksum, collectionChecksum(cn));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief test long transaction, blocking
|
/// @brief test long transaction, blocking
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in New Issue