UNPKG

10.1 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.shouldRetryRequest = exports.statusCodesToRetry = exports.httpMethodsToRetry = exports.getExecutionLogUrl = exports.getLogUrl = void 0;
4const querystring_1 = require("querystring");
5function getLogUrl(project, functionName) {
6 const params = (0, querystring_1.stringify)({
7 project,
8 resource: `cloud_function/function_name/${functionName}`
9 });
10 return `https://console.cloud.google.com/logs/viewer?${params}`;
11}
12exports.getLogUrl = getLogUrl;
13function getExecutionLogUrl(project, functionName, executionId) {
14 const params = (0, querystring_1.stringify)({
15 project,
16 resource: `cloud_function/function_name/${functionName}`,
17 advancedFilter: `labels."execution_id"="${executionId}"`
18 });
19 return `https://console.cloud.google.com/logs/viewer?${params}`;
20}
21exports.getExecutionLogUrl = getExecutionLogUrl;
22exports.httpMethodsToRetry = ["POST", "PUT", "GET", "HEAD", "OPTIONS", "DELETE"];
23exports.statusCodesToRetry = [[100, 199], [429, 429], [405, 405], [500, 599]];
24/**
25 * Determine based on config if we should retry the request.
26 * @param err The GaxiosError passed to the interceptor.
27 */
28function shouldRetryRequest(log) {
29 return (err) => {
30 const config = err?.config?.retryConfig;
31 // If there's no config, or retries are disabled, return.
32 if (!config || config.retry === 0) {
33 return false;
34 }
35 // Check if this error has no response (ETIMEDOUT, ENOTFOUND, etc)
36 if (!err.response &&
37 (config.currentRetryAttempt || 0) >= config.noResponseRetries) {
38 return false;
39 }
40 // Don't retry if the request is aborted deliberately.
41 if (err.name === "AbortError") {
42 return false;
43 }
44 // Only retry with configured HttpMethods.
45 if (!err.config.method ||
46 exports.httpMethodsToRetry.indexOf(err.config.method.toUpperCase()) < 0) {
47 return false;
48 }
49 // If this wasn't in the list of status codes where we want
50 // to automatically retry, return.
51 if (err.response?.status) {
52 let isInRange = false;
53 const status = err.response.status;
54 for (const [min, max] of exports.statusCodesToRetry) {
55 if (status >= min && status <= max) {
56 isInRange = true;
57 break;
58 }
59 }
60 if (!isInRange) {
61 return false;
62 }
63 }
64 // If we are out of retry attempts, return
65 config.currentRetryAttempt = config.currentRetryAttempt || 0;
66 if (config.currentRetryAttempt >= config.retry) {
67 return false;
68 }
69 log(`google: attempts: ${config.currentRetryAttempt}/${config.retry}, code: ${err.code}, status: ${err.response?.status} name: ${err.name}, message: ${err.message}`);
70 return true;
71 };
72}
73exports.shouldRetryRequest = shouldRetryRequest;
74//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nb29nbGUvZ29vZ2xlLXNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBd0M7QUFHeEMsU0FBZ0IsU0FBUyxDQUFDLE9BQWUsRUFBRSxZQUFvQjtJQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFTLEVBQUM7UUFDckIsT0FBTztRQUNQLFFBQVEsRUFBRSxnQ0FBZ0MsWUFBWSxFQUFFO0tBQzNELENBQUMsQ0FBQztJQUNILE9BQU8sZ0RBQWdELE1BQU0sRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFORCw4QkFNQztBQUVELFNBQWdCLGtCQUFrQixDQUM5QixPQUFlLEVBQ2YsWUFBb0IsRUFDcEIsV0FBbUI7SUFFbkIsTUFBTSxNQUFNLEdBQUcsSUFBQSx1QkFBUyxFQUFDO1FBQ3JCLE9BQU87UUFDUCxRQUFRLEVBQUUsZ0NBQWdDLFlBQVksRUFBRTtRQUN4RCxjQUFjLEVBQUUsMEJBQTBCLFdBQVcsR0FBRztLQUMzRCxDQUFDLENBQUM7SUFDSCxPQUFPLGdEQUFnRCxNQUFNLEVBQUUsQ0FBQztBQUNwRSxDQUFDO0FBWEQsZ0RBV0M7QUFFWSxRQUFBLGtCQUFrQixHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6RSxRQUFBLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVuRjs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUEwQjtJQUN6RCxPQUFPLENBQUMsR0FBZ0IsRUFBRSxFQUFFO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBRXhDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsa0VBQWtFO1FBQ2xFLElBQ0ksQ0FBQyxHQUFHLENBQUMsUUFBUTtZQUNiLENBQUMsTUFBTSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxpQkFBa0IsRUFDaEU7WUFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsMENBQTBDO1FBQzFDLElBQ0ksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDbEIsMEJBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNqRTtZQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsMkRBQTJEO1FBQzNELGtDQUFrQztRQUNsQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ3RCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksMEJBQW1CLEVBQUU7Z0JBQzFDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFO29CQUNoQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNqQixNQUFNO2lCQUNUO2FBQ0o7WUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNaLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxNQUFNLENBQUMsbUJBQW1CLElBQUksTUFBTSxDQUFDLEtBQU0sRUFBRTtZQUM3QyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELEdBQUcsQ0FDQyxxQkFBcUIsTUFBTSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxLQUFLLFdBQzNELEdBQUcsQ0FBQyxJQUNSLGFBQWEsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLFVBQzdCLEdBQUcsQ0FBQyxJQUNSLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUM5QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQTlERCxnREE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tIFwicXVlcnlzdHJpbmdcIjtcbmltcG9ydCB7IEdheGlvc0Vycm9yIH0gZnJvbSBcImdheGlvc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nVXJsKHByb2plY3Q6IHN0cmluZywgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzdHJpbmdpZnkoe1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICByZXNvdXJjZTogYGNsb3VkX2Z1bmN0aW9uL2Z1bmN0aW9uX25hbWUvJHtmdW5jdGlvbk5hbWV9YFxuICAgIH0pO1xuICAgIHJldHVybiBgaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vbG9ncy92aWV3ZXI/JHtwYXJhbXN9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4ZWN1dGlvbkxvZ1VybChcbiAgICBwcm9qZWN0OiBzdHJpbmcsXG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgZXhlY3V0aW9uSWQ6IHN0cmluZ1xuKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3RyaW5naWZ5KHtcbiAgICAgICAgcHJvamVjdCxcbiAgICAgICAgcmVzb3VyY2U6IGBjbG91ZF9mdW5jdGlvbi9mdW5jdGlvbl9uYW1lLyR7ZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIGFkdmFuY2VkRmlsdGVyOiBgbGFiZWxzLlwiZXhlY3V0aW9uX2lkXCI9XCIke2V4ZWN1dGlvbklkfVwiYFxuICAgIH0pO1xuICAgIHJldHVybiBgaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vbG9ncy92aWV3ZXI/JHtwYXJhbXN9YDtcbn1cblxuZXhwb3J0IGNvbnN0IGh0dHBNZXRob2RzVG9SZXRyeSA9IFtcIlBPU1RcIiwgXCJQVVRcIiwgXCJHRVRcIiwgXCJIRUFEXCIsIFwiT1BUSU9OU1wiLCBcIkRFTEVURVwiXTtcbmV4cG9ydCBjb25zdCBzdGF0dXNDb2Rlc1RvUmV0cnkgPSBbWzEwMCwgMTk5XSwgWzQyOSwgNDI5XSwgWzQwNSwgNDA1XSwgWzUwMCwgNTk5XV07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGJhc2VkIG9uIGNvbmZpZyBpZiB3ZSBzaG91bGQgcmV0cnkgdGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0gZXJyIFRoZSBHYXhpb3NFcnJvciBwYXNzZWQgdG8gdGhlIGludGVyY2VwdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkUmV0cnlSZXF1ZXN0KGxvZzogKG1zZzogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIChlcnI6IEdheGlvc0Vycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGVycj8uY29uZmlnPy5yZXRyeUNvbmZpZztcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGNvbmZpZywgb3IgcmV0cmllcyBhcmUgZGlzYWJsZWQsIHJldHVybi5cbiAgICAgICAgaWYgKCFjb25maWcgfHwgY29uZmlnLnJldHJ5ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGVycm9yIGhhcyBubyByZXNwb25zZSAoRVRJTUVET1VULCBFTk9URk9VTkQsIGV0YylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWVyci5yZXNwb25zZSAmJlxuICAgICAgICAgICAgKGNvbmZpZy5jdXJyZW50UmV0cnlBdHRlbXB0IHx8IDApID49IGNvbmZpZy5ub1Jlc3BvbnNlUmV0cmllcyFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXRyeSBpZiB0aGUgcmVxdWVzdCBpcyBhYm9ydGVkIGRlbGliZXJhdGVseS5cbiAgICAgICAgaWYgKGVyci5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSByZXRyeSB3aXRoIGNvbmZpZ3VyZWQgSHR0cE1ldGhvZHMuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFlcnIuY29uZmlnLm1ldGhvZCB8fFxuICAgICAgICAgICAgaHR0cE1ldGhvZHNUb1JldHJ5LmluZGV4T2YoZXJyLmNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSkgPCAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhpcyB3YXNuJ3QgaW4gdGhlIGxpc3Qgb2Ygc3RhdHVzIGNvZGVzIHdoZXJlIHdlIHdhbnRcbiAgICAgICAgLy8gdG8gYXV0b21hdGljYWxseSByZXRyeSwgcmV0dXJuLlxuICAgICAgICBpZiAoZXJyLnJlc3BvbnNlPy5zdGF0dXMpIHtcbiAgICAgICAgICAgIGxldCBpc0luUmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVyci5yZXNwb25zZS5zdGF0dXM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttaW4sIG1heF0gb2Ygc3RhdHVzQ29kZXNUb1JldHJ5ISkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPj0gbWluICYmIHN0YXR1cyA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0luUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB3ZSBhcmUgb3V0IG9mIHJldHJ5IGF0dGVtcHRzLCByZXR1cm5cbiAgICAgICAgY29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHQgPSBjb25maWcuY3VycmVudFJldHJ5QXR0ZW1wdCB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHQgPj0gY29uZmlnLnJldHJ5ISkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nKFxuICAgICAgICAgICAgYGdvb2dsZTogYXR0ZW1wdHM6ICR7Y29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHR9LyR7Y29uZmlnLnJldHJ5fSwgY29kZTogJHtcbiAgICAgICAgICAgICAgICBlcnIuY29kZVxuICAgICAgICAgICAgfSwgc3RhdHVzOiAke2Vyci5yZXNwb25zZT8uc3RhdHVzfSBuYW1lOiAke1xuICAgICAgICAgICAgICAgIGVyci5uYW1lXG4gICAgICAgICAgICB9LCBtZXNzYWdlOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuIl19
\No newline at end of file