Skip to content

Commit

Permalink
Merge pull request #69 from djmitche/bug1604649
Browse files Browse the repository at this point in the history
Bug 1604649 - log x-ms- response headers on error
  • Loading branch information
djmitche authored Dec 18, 2019
2 parents c9a6ad4 + 048d0d0 commit 7295183
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 23 deletions.
20 changes: 14 additions & 6 deletions lib/blob.js
Original file line number Diff line number Diff line change
Expand Up @@ -420,13 +420,21 @@ Blob.prototype.request = function request(method, path, query, headers, data) {
// Parse error message
var data = xml.parseError(res);

var resMSHeaders = {};
Object.keys(res.headers).forEach(h => {
if (h.startsWith('x-ms-')) {
resMSHeaders[h] = res.headers[h];
}
});

// Construct error object
var err = new Error(data.message);
err.name = data.code + 'Error';
err.code = data.code;
err.statusCode = res.statusCode;
err.message = data.message;
err.retries = retry;
var err = new Error(data.message);
err.name = data.code + 'Error';
err.code = data.code;
err.statusCode = res.statusCode;
err.message = data.message;
err.retries = retry;
err.resMSHeaders = resMSHeaders;

debug("Error code: %s (%s) for %s %s on retry: %s",
data.code, res.statusCode, method, path, retry);
Expand Down
22 changes: 15 additions & 7 deletions lib/queue.js
Original file line number Diff line number Diff line change
Expand Up @@ -316,14 +316,22 @@ Queue.prototype.request = function request(method, path, query, headers, data) {
// Parse error message
var data = xml.parseError(res);

var resMSHeaders = {};
Object.keys(res.headers).forEach(h => {
if (h.startsWith('x-ms-')) {
resMSHeaders[h] = res.headers[h];
}
});

// Construct error object
var err = new Error(data.message);
err.name = data.code + 'Error';
err.code = data.code;
err.statusCode = res.statusCode;
err.detail = data.detail;
err.payload = res.payload;
err.retries = retry;
var err = new Error(data.message);
err.name = data.code + 'Error';
err.code = data.code;
err.statusCode = res.statusCode;
err.detail = data.detail;
err.payload = res.payload;
err.retries = retry;
err.resMSHeaders = resMSHeaders;

debug("Error code: %s (%s) for %s %s on retry: %s",
data.code, res.statusCode, method, path, retry);
Expand Down
28 changes: 18 additions & 10 deletions lib/table.js
Original file line number Diff line number Diff line change
Expand Up @@ -396,20 +396,28 @@ Table.prototype.request = function request(method, path, query, headers, json) {
message = "No error message given, in payload '" + res.payload + "'"
}

var resMSHeaders = {};
Object.keys(res.headers).forEach(h => {
if (h.startsWith('x-ms-')) {
resMSHeaders[h] = res.headers[h];
}
});

// Construct error object, capturing only the first line in the
// error message, as subsequent lines from Azure are usually just
// a requestId and timestamp.
var err = new Error(message.split('\n')[0]);
err.name = code + 'Error';
err.code = code;
err.statusCode = res.statusCode;
err.payload = res.payload;
err.method = method;
err.path = path;
err.query = query;
err.headers = headers;
var err = new Error(message.split('\n')[0]);
err.name = code + 'Error';
err.code = code;
err.statusCode = res.statusCode;
err.payload = res.payload;
err.method = method;
err.path = path;
err.query = query;
err.headers = headers;
err.resMSHeaders = resMSHeaders;
err.requestBody = json;
err.message = message;
err.message = message;

debug("Error code: %s (%s) for %s %s on retry: %s",
code, res.statusCode, method, path, retry);
Expand Down

0 comments on commit 7295183

Please sign in to comment.