10000 when changing between leader and follower re-attempt connecting to ci… · arangodb/arangodb@9883518 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9883518

Browse files
dothebartKVS85
authored andcommitted
when changing between leader and follower re-attempt connecting to circumvent OS resource shortages (#10243)
1 parent 2083ca8 commit 9883518

13 files changed

+60
-25
lines changed

js/common/modules/@arangodb/replication-common.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* global arango, print */
12
'use strict';
23

34
// //////////////////////////////////////////////////////////////////////////////
@@ -26,6 +27,11 @@
2627
// / @author Simon Grätzer
2728
// //////////////////////////////////////////////////////////////////////////////
2829

30+
const RED = require('internal').COLORS.COLOR_RED;
31+
const RESET = require('internal').COLORS.COLOR_RESET;
32+
33+
const sleep = require('internal').sleep;
34+
2935
exports.compareTicks = function(l, r) {
3036
var i;
3137
if (l === null) {
@@ -46,4 +52,21 @@ exports.compareTicks = function(l, r) {
4652
}
4753

4854
return 0;
49-
};
55+
};
56+
57+
exports.reconnectRetry = function(endpoint, databaseName, user, password) {
58+
let sleepTime = 0.1;
59+
let ex;
60+
do {
61+
try {
62+
arango.reconnect(endpoint, databaseName, user, password);
63+
return;
64+
} catch (ex) {
65+
print(RED + "connecting " + endpoint + " failed - retrying (" + ex.message + ")&quo F438 t; + RESET);
66+
}
67+
sleepTime *= 2;
68+
sleep(sleepTime);
69+
} while (sleepTime < 5);
70+
print(RED + "giving up!" + RESET);
71+
throw ex;
72+
};

tests/js/server/replication/aql/replication-aql.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var db = arangodb.db;
3434

3535
const replication = require("@arangodb/replication");
3636
const compareTicks = replication.compareTicks;
37+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3738
const console = require("console");
3839
const internal = require("internal");
3940
const masterEndpoint = arango.getEndpoint();
@@ -48,12 +49,12 @@ function ReplicationSuite() {
4849
var cn = "UnitTestsReplication";
4950

5051
var connectToMaster = function() {
51-
arango.reconnect(masterEndpoint, db._name(), "root", "");
52+
reconnectRetry(masterEndpoint, db._name(), "root", "");
5253
db._flushCache();
5354
};
5455

5556
var connectToSlave = function() {
56-
arango.reconnect(slaveEndpoint, db._name(), "root", "");
57+
reconnectRetry(slaveEndpoint, db._name(), "root", "");
5758
db._flushCache();
5859
};
5960

tests/js/server/replication/fuzz/replication-fuzz-global.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ var jsunity = require("jsunity");
3232
var arangodb = require("@arangodb");
3333
var db = arangodb.db;
3434

35+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3536
var replication = require("@arangodb/replication");
3637
let compareTicks = replication.compareTicks;
3738
var console = require("console");
@@ -48,12 +49,12 @@ function ReplicationSuite() {
4849
var cn = "UnitTestsReplication";
4950

5051
var connectToMaster = function() {
51-
arango.reconnect(masterEndpoint, db._name(), "root", "");
52+
reconnectRetry(masterEndpoint, db._name(), "root", "");
5253
db._flushCache();
5354
};
5455

5556
var connectToSlave = function() {
56-
arango.reconnect(slaveEndpoint, db._name(), "root", "");
57+
reconnectRetry(slaveEndpoint, db._name(), "root", "");
5758
db._flushCache();
5859
};
5960

tests/js/server/replication/fuzz/replication-fuzz.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ var jsunity = require("jsunity");
3232
var arangodb = require("@arangodb");
3333
var db = arangodb.db;
3434

35+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3536
var replication = require("@arangodb/replication");
3637
let compareTicks = replication.compareTicks;
3738
var console = require("console");
@@ -53,12 +54,12 @@ function ReplicationSuite() {
5354
var cn = "UnitTestsReplication";
5455

5556
var connectToMaster = function() {
56-
arango.reconnect(masterEndpoint, db._name(), "root", "");
57+
reconnectRetry(masterEndpoint, db._name(), "root", "");
5758
db._flushCache();
5859
};
5960

6061
var connectToSlave = function() {
61-
arango.reconnect(slaveEndpoint, db._name(), "root", "");
62+
reconnectRetry(slaveEndpoint, db._name(), "root", "");
6263
db._flushCache();
6364
};
6465

tests/js/server/replication/ongoing/32/replication-ongoing-32.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ var arangodb = require('@arangodb');
3030
var db = arangodb.db;
3131

3232
var replication = require('@arangodb/replication');
33+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3334
var deriveTestSuite = require('@arangodb/test-helper').deriveTestSuite;
3435
let compareTicks = replication.compareTicks;
3536
var console = require('console');
@@ -41,12 +42,12 @@ const cn = 'UnitTestsReplication';
4142
const cn2 = 'UnitTestsReplication2';
4243

4344
const connectToMaster = function () {
44-
arango.reconnect(masterEndpoint, db._name(), 'root', '');
45+
reconnectRetry(masterEndpoint, db._name(), 'root', '');
4546
db._flushCache();
4647
};
4748

4849
const connectToSlave = function () {
49-
arango.reconnect(slaveEndpoint, db._name(), 'root', '');
50+
reconnectRetry(slaveEndpoint, db._name(), 'root', '');
5051
db._flushCache();
5152
};
5253

tests/js/server/replication/ongoing/frompresent/32/replication-ongoing-frompresent-32.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ var arangodb = require('@arangodb');
3333
var db = arangodb.db;
3434

3535
var replication = require('@arangodb/replication');
36+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3637
var deriveTestSuite = require('@arangodb/test-helper').deriveTestSuite;
3738
let compareTicks = replication.compareTicks;
3839
var console = require('console');
@@ -44,12 +45,12 @@ var cn = 'UnitTestsReplication';
4445
var cn2 = 'UnitTestsReplication2';
4546

4647
var connectToMaster = function () {
47-
arango.reconnect(masterEndpoint, db._name(), 'root', '');
48+
reconnectRetry(masterEndpoint, db._name(), 'root', '');
4849
db._flushCache();
4950
};
5051

5152
var connectToSlave = function () {
52-
arango.reconnect(slaveEndpoint, db._name(), 'root', '');
53+
reconnectRetry(slaveEndpoint, db._name(), 'root', '');
5354
db._flushCache();
5455
};
5556

tests/js/server/replication/ongoing/frompresent/replication-ongoing-frompresent.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ var arangodb = require('@arangodb');
3333
var db = arangodb.db;
3434

3535
var replication = require('@arangodb/replication');
36+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3637
var deriveTestSuite = require('@arangodb/test-helper').deriveTestSuite;
3738
let compareTicks = replication.compareTicks;
3839
var console = require('console');
@@ -44,12 +45,12 @@ var cn = 'UnitTestsReplication';
4445
var cn2 = 'UnitTestsReplication2';
4546

4647
var connectToMaster = function () {
47-
arango.reconnect(masterEndpoint, db._name(), 'root', '');
48+
reconnectRetry(masterEndpoint, db._name(), 'root', '');
4849
db._flushCache();
4950
};
5051

5152
var connectToSlave = function () {
52-
arango.reconnect(slaveEndpoint, db._name(), 'root', '');
53+
reconnectRetry(slaveEndpoint, db._name(), 'root', '');
5354
db._flushCache();
5455
};
5556

tests/js/server/replication/ongoing/global/replication-ongoing-global.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const db = arangodb.db;
3434

3535
const replication = require('@arangodb/replication');
3636
var deriveTestSuite = require('@arangodb/test-helper').deriveTestSuite;
37+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3738
const compareTicks = replication.compareTicks;
3839
const console = require('console');
3940
const internal = require('internal');
@@ -45,12 +46,12 @@ const cn = 'UnitTestsReplication';
4546
const cn2 = 'UnitTestsReplication2';
4647

4748
const connectToMaster = function () {
48-
arango.reconnect(masterEndpoint, db._name(), 'root', '');
49+
reconnectRetry(masterEndpoint, db._name(), 'root', '');
4950
db._flushCache();
5051
};
5152

5253
const connectToSlave = function () {
53-
arango.reconnect(slaveEndpoint, db._name(), 'root', '');
54+
reconnectRetry(slaveEndpoint, db._name(), 'root', '');
5455
db._flushCache();
5556
};
5657

tests/js/server/replication/ongoing/global/spec/replication-ongoing-global-spec.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
const expect = require('chai').expect;
3333
const arangodb = require("@arangodb");
3434
const replication = require("@arangodb/replication");
35+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3536
const compareTicks = replication.compareTicks;
3637
const errors = arangodb.errors;
3738
const db = arangodb.db;
@@ -122,7 +123,7 @@ const waitForReplication = function() {
122123
// You do not need to monitor any state.
123124
const connectToMaster = function() {
124125
if (!onMaster) {
125-
arango.reconnect(masterEndpoint, "_system", username, password);
126+
reconnectRetry(masterEndpoint, "_system", username, password);
126127
db._flushCache();
127128
onMaster = true;
128129
} else {
@@ -132,7 +133,7 @@ const connectToMaster = function() {
132133

133134
const connectToSlave = function() {
134135
if (onMaster) {
135-
arango.reconnect(slaveEndpoint, "_system", username, password);
136+
reconnectRetry(slaveEndpoint, "_system", username, password);
136137
db._flushCache();
137138
onMaster = false;
138139
} else {

tests/js/server/replication/ongoing/replication-ongoing.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var analyzers = require("@arangodb/analyzers");
3434
const db = arangodb.db;
3535

3636
const replication = require('@arangodb/replication');
37+
const reconnectRetry = require('@arangodb/replication-common').reconnectRetry;
3738
const deriveTestSuite = require('@arangodb/test-helper').deriveTestSuite;
3839
const compareTicks = replication.compareTicks;
3940
const console = require('console');
@@ -45,12 +46,12 @@ const cn = 'UnitTestsReplication';
4546
const cn2 = 'UnitTestsReplication2';
4647

4748
const connectToMaster = function () {
48-
arango.reconnect(masterEndpoint, db._name(), 'root', '');
49+
reconnectRetry(masterEndpoint, db._name(), 'root', '');
4950
db._flushCache();
5051
};
5152

5253
const connectToSlave = function () {
53-
arango.reconnect(slaveEndpoint, db._name(), 'root', '');
54+
reconnectRetry(slaveEndpoint, db._name(), 'root', '');
5455
db._flushCache();
5556
};
5657

0 commit comments

Comments
 (0)
0