azure-kusto-data
Advanced tools
Comparing version
@@ -27,3 +27,3 @@ // Copyright (c) Microsoft Corporation. | ||
const ONE_MINUTE = 1000 * 60; | ||
clientRequestProps.setOption("servertimeout", ONE_MINUTE); | ||
clientRequestProps.setTimeout(ONE_MINUTE); | ||
@@ -30,0 +30,0 @@ // having client code provide its own clientRequestId is |
{ | ||
"name": "azure-kusto-data", | ||
"version": "0.3.11", | ||
"version": "0.3.12", | ||
"description": "Azure Data Explorer Query SDK", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -13,2 +13,5 @@ // Copyright (c) Microsoft Corporation. | ||
const COMMAND_TIMEOUT_IN_MILLISECS = moment.duration(10.5, "minutes").asMilliseconds(); | ||
const QUERY_TIMEOUT_IN_MILLISECS = moment.duration(4.5, "minutes").asMilliseconds(); | ||
const CLIENT_SERVER_DELTA_IN_MILLISECS = moment.duration(0.5, "minutes").asMilliseconds(); | ||
@@ -61,3 +64,3 @@ module.exports = class KustoClient { | ||
Object.assign(headers, this.headers); | ||
let payload; | ||
@@ -67,2 +70,4 @@ let clientRequestPrefix = ""; | ||
let timeout = this._getClientTimeout(endpoint, properties); | ||
if (query != null) { | ||
@@ -78,3 +83,3 @@ payload = { | ||
} | ||
payload = JSON.stringify(payload); | ||
@@ -87,8 +92,6 @@ | ||
clientRequestPrefix = "KNC.executeStreamingIngest;"; | ||
headers["Content-Encoding"] = "gzip"; | ||
headers["Content-Encoding"] = "gzip"; | ||
} | ||
headers["x-ms-client-request-id"] = clientRequestId || clientRequestPrefix + `${uuidv4()}`; | ||
let timeout = this._getTimeout(endpoint, properties); | ||
@@ -100,26 +103,16 @@ return this.aadHelper.getAuthHeader((err, authHeader) => { | ||
return request({ | ||
method: "POST", | ||
url: endpoint, | ||
headers, | ||
body: payload, | ||
gzip: true, | ||
timeout | ||
}, this._getRequestCallback(properties, callback) | ||
); | ||
return this._doRequest(endpoint, headers, payload, timeout, properties, callback); | ||
}); | ||
} | ||
_getTimeout(endpoint, properties) { | ||
let timeout = null; | ||
if (properties != null) { | ||
timeout = properties instanceof ClientRequestProperties ? properties.getTimeout() | ||
: properties.timeout; | ||
} | ||
if (timeout == null) { | ||
let timeoutInMinutes = endpoint == this.endpoints.mgmt ? 10.5 : 4.5; | ||
timeout = moment.duration(timeoutInMinutes, "minutes").asMilliseconds(); | ||
} | ||
return timeout; | ||
_doRequest(endpoint, headers, payload, timeout, properties, callback) { | ||
return request({ | ||
method: "POST", | ||
url: endpoint, | ||
headers, | ||
body: payload, | ||
gzip: true, | ||
timeout | ||
}, this._getRequestCallback(properties, callback) | ||
); | ||
} | ||
@@ -159,2 +152,15 @@ | ||
} | ||
_getClientTimeout(endpoint, properties) { | ||
let timeout = null; | ||
if (properties != null) { | ||
var serverTimeout = properties instanceof ClientRequestProperties ? properties.getTimeout() : properties.timeout; | ||
if (serverTimeout != null) { | ||
return serverTimeout + CLIENT_SERVER_DELTA_IN_MILLISECS; | ||
} | ||
} | ||
timeout = endpoint == this.endpoints.query ? QUERY_TIMEOUT_IN_MILLISECS : COMMAND_TIMEOUT_IN_MILLISECS; | ||
return timeout; | ||
} | ||
}; |
@@ -55,2 +55,5 @@ // Copyright (c) Microsoft Corporation. | ||
json.Options = this._options; | ||
if (json.Options.servertimeout) { | ||
json.Options.servertimeout = this._msToTimespan(json.Options.servertimeout); | ||
} | ||
} | ||
@@ -68,2 +71,15 @@ | ||
} | ||
_msToTimespan(duration) { | ||
var milliseconds = parseInt((duration % 1000) / 100) | ||
, seconds = parseInt((duration / 1000) % 60) | ||
, minutes = parseInt((duration / (1000 * 60)) % 60) | ||
, hours = parseInt((duration / (1000 * 60 * 60)) % 24); | ||
hours = (hours < 10) ? "0" + hours : hours; | ||
minutes = (minutes < 10) ? "0" + minutes : minutes; | ||
seconds = (seconds < 10) ? "0" + seconds : seconds; | ||
return hours + ":" + minutes + ":" + seconds + "." + milliseconds; | ||
} | ||
}; |
36600
3.04%753
2.45%