1
0
Fork 0

More fixes in DBServerAgencySync js part.

This commit is contained in:
Max Neunhoeffer 2016-05-23 22:54:21 +02:00
parent 7ae9cfcd26
commit 717d110a1d
1 changed files with 47 additions and 35 deletions

View File

@ -84,7 +84,6 @@ function startReadLockOnLeader (endpoint, database, collName, timeout) {
var count = 0;
while (++count < 20) { // wait for some time until read lock established:
wait(0.5);
// Now check that we hold the read lock:
r = request({ url: url + "/_api/replication/holdReadLockCollection",
body: JSON.stringify(body),
@ -93,9 +92,10 @@ function startReadLockOnLeader (endpoint, database, collName, timeout) {
return id;
}
console.debug("startReadLockOnLeader: Do not see read lock yet...");
wait(0.5);
}
var asyncJobId = rr.headers["x-arango-async-id"];
r = require({ url: url + "/_api/job/" + asyncJobId, body: "", method: "PUT"});
r = request({ url: url + "/_api/job/" + asyncJobId, body: "", method: "PUT"});
console.error("startReadLockOnLeader: giving up, async result:", r);
return false;
}
@ -927,6 +927,11 @@ function synchronizeLocalFollowerCollections (plannedCollections,
keepBarrier: true });
if (sy.error) {
console.error("Could not initially synchronize shard ", shard, sy);
} else {
if (sy.collections.length == 0 ||
sy.collections[0].name != shard) {
cancelBarrier(ep, database, sy.barrierId);
throw "Shard seems to be gone from leader!";
} else {
var ok = false;
// Now start a read transaction to stop writes:
@ -936,6 +941,9 @@ function synchronizeLocalFollowerCollections (plannedCollections,
shard, 300);
console.debug("lockJobId:", lockJobId);
}
catch (err1) {
console.error("Exception in startReadLockOnLeader:", err1);
}
finally {
cancelBarrier(ep, database, sy.barrierId);
}
@ -952,6 +960,9 @@ function synchronizeLocalFollowerCollections (plannedCollections,
ok = addShardFollower(ep, database, shard);
}
}
catch (err3) {
console.error("Exception in syncCollectionFinalize:", err3);
}
finally {
if (!cancelReadLockOnLeader(ep, database,
lockJobId)) {
@ -969,6 +980,7 @@ function synchronizeLocalFollowerCollections (plannedCollections,
}
}
}
}
catch (err2) {
console.error("synchronization of local shard '%s/%s' for central '%s/%s' failed: %s",
database,