From 162be9754124333b855d4cdbb2957e15b00fa457 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Fri, 1 Aug 2014 18:22:49 +0200 Subject: [PATCH 1/3] fixed arangob without batch-size --- arangosh/Benchmark/BenchmarkThread.h | 2 +- arangosh/Benchmark/arangob.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arangosh/Benchmark/BenchmarkThread.h b/arangosh/Benchmark/BenchmarkThread.h index fb3e6a2405..e158da93e0 100644 --- a/arangosh/Benchmark/BenchmarkThread.h +++ b/arangosh/Benchmark/BenchmarkThread.h @@ -196,7 +196,7 @@ namespace triagens { else { executeBatchRequest(numOps); } - _operationsCounter->done(_batchSize); + _operationsCounter->done(_batchSize > 0 ? _batchSize : 1); } } diff --git a/arangosh/Benchmark/arangob.cpp b/arangosh/Benchmark/arangob.cpp index ee902d432d..42f9c50377 100644 --- a/arangosh/Benchmark/arangob.cpp +++ b/arangosh/Benchmark/arangob.cpp @@ -367,6 +367,7 @@ int main (int argc, char* argv[]) { usleep(5000); } + if (Delay) { Status("sleeping (startup delay)..."); sleep(10); @@ -453,7 +454,7 @@ int main (int argc, char* argv[]) { ret = EXIT_FAILURE; } - arangobExitFunction(ret, NULL); + arangobExitFunction(ret, nullptr); return ret; } From d9b80d5ae111346dd24ded8bb3c644f747694f2a Mon Sep 17 00:00:00 2001 From: Alan Plum Date: Fri, 1 Aug 2014 19:59:52 +0200 Subject: [PATCH 2/3] Added exponential back-off helper. --- js/common/bootstrap/module-internal.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/js/common/bootstrap/module-internal.js b/js/common/bootstrap/module-internal.js index f47134e793..c32093c5ed 100644 --- a/js/common/bootstrap/module-internal.js +++ b/js/common/bootstrap/module-internal.js @@ -1561,6 +1561,28 @@ useColor = false; }; +// ----------------------------------------------------------------------------- +// --SECTION-- public utility functions +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @brief exponentialBackoff +//////////////////////////////////////////////////////////////////////////////// + + exports.exponentialBackOff = function (n, i) { + 'use strict'; + if (i === 0) { + return 0; + } + if (n === 0) { + return 0; + } + if (n === 1) { + return Math.random() < 0.5 ? 0 : i; + } + return Math.floor(Math.random() * (n + 1)) * i; + }; + }()); // ----------------------------------------------------------------------------- From 069644a2e4b45c1127da7e4ffbe56a27680a826b Mon Sep 17 00:00:00 2001 From: Alan Plum Date: Fri, 1 Aug 2014 16:52:53 +0200 Subject: [PATCH 3/3] Added flatten method. --- js/common/bootstrap/module-internal.js | 72 ++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/js/common/bootstrap/module-internal.js b/js/common/bootstrap/module-internal.js index c32093c5ed..8aa8935e03 100644 --- a/js/common/bootstrap/module-internal.js +++ b/js/common/bootstrap/module-internal.js @@ -1341,6 +1341,78 @@ // --SECTION-- public printing functions // ----------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////// +/// @brief flatten +//////////////////////////////////////////////////////////////////////////////// + + var hasOwnProperty = Function.prototype.call.bind(Object.prototype.hasOwnProperty); + + exports.flatten = function (obj, seen) { + 'use strict'; + + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + return obj; + } + + if (obj instanceof Date) { + return obj.toJSON(); + } + + if (!seen) { + seen = []; + } + + var result = Object.create(null), + src = obj, + keys, + i, + key, + val; + + if (typeof obj === 'function') { + result.__exec = String(obj); + } + + while (src) { + if ( + seen.indexOf(src) !== -1 + || (obj.constructor && src === obj.constructor.prototype) + ) { + break; + } + seen.push(src); + keys = Object.getOwnPropertyNames(src); + for (i = 0; i < keys.length; i++) { + key = keys[i]; + if (typeof src !== 'function' || ( + key !== 'arguments' && key !== 'caller' && key !== 'callee' + )) { + if (key.charAt(0) !== '_' && !hasOwnProperty(result, key)) { + val = obj[key]; + if (seen.indexOf(val) !== -1 && ( + typeof val === 'object' || typeof val === 'function' + )) { + result[key] = '[Circular]'; + } else { + result[key] = exports.flatten(val, seen); + } + } + } + } + src = Object.getPrototypeOf(src); + } + + if (obj.constructor && obj.constructor.name) { + if (obj instanceof Error && obj.name === Error.name) { + result.name = obj.constructor.name; + } else if (!hasOwnProperty(result, 'constructor')) { + result.constructor = {name: obj.constructor.name}; + } + } + + return result; + }; + //////////////////////////////////////////////////////////////////////////////// /// @brief inspect ////////////////////////////////////////////////////////////////////////////////