UNPKG

faastjs

Version:

Serverless batch computing made simple.

74 lines 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldRetryRequest = exports.statusCodesToRetry = exports.httpMethodsToRetry = exports.getExecutionLogUrl = exports.getLogUrl = void 0; const querystring_1 = require("querystring"); function getLogUrl(project, functionName) { const params = (0, querystring_1.stringify)({ project, resource: `cloud_function/function_name/${functionName}` }); return `https://console.cloud.google.com/logs/viewer?${params}`; } exports.getLogUrl = getLogUrl; function getExecutionLogUrl(project, functionName, executionId) { const params = (0, querystring_1.stringify)({ project, resource: `cloud_function/function_name/${functionName}`, advancedFilter: `labels."execution_id"="${executionId}"` }); return `https://console.cloud.google.com/logs/viewer?${params}`; } exports.getExecutionLogUrl = getExecutionLogUrl; exports.httpMethodsToRetry = ["POST", "PUT", "GET", "HEAD", "OPTIONS", "DELETE"]; exports.statusCodesToRetry = [[100, 199], [429, 429], [405, 405], [500, 599]]; /** * Determine based on config if we should retry the request. * @param err The GaxiosError passed to the interceptor. */ function shouldRetryRequest(log) { return (err) => { const config = err?.config?.retryConfig; // If there's no config, or retries are disabled, return. if (!config || config.retry === 0) { return false; } // Check if this error has no response (ETIMEDOUT, ENOTFOUND, etc) if (!err.response && (config.currentRetryAttempt || 0) >= config.noResponseRetries) { return false; } // Don't retry if the request is aborted deliberately. if (err.name === "AbortError") { return false; } // Only retry with configured HttpMethods. if (!err.config.method || exports.httpMethodsToRetry.indexOf(err.config.method.toUpperCase()) < 0) { return false; } // If this wasn't in the list of status codes where we want // to automatically retry, return. if (err.response?.status) { let isInRange = false; const status = err.response.status; for (const [min, max] of exports.statusCodesToRetry) { if (status >= min && status <= max) { isInRange = true; break; } } if (!isInRange) { return false; } } // If we are out of retry attempts, return config.currentRetryAttempt = config.currentRetryAttempt || 0; if (config.currentRetryAttempt >= config.retry) { return false; } log(`google: attempts: ${config.currentRetryAttempt}/${config.retry}, code: ${err.code}, status: ${err.response?.status} name: ${err.name}, message: ${err.message}`); return true; }; } exports.shouldRetryRequest = shouldRetryRequest; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nb29nbGUvZ29vZ2xlLXNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBd0M7QUFHeEMsU0FBZ0IsU0FBUyxDQUFDLE9BQWUsRUFBRSxZQUFvQjtJQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFTLEVBQUM7UUFDckIsT0FBTztRQUNQLFFBQVEsRUFBRSxnQ0FBZ0MsWUFBWSxFQUFFO0tBQzNELENBQUMsQ0FBQztJQUNILE9BQU8sZ0RBQWdELE1BQU0sRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFORCw4QkFNQztBQUVELFNBQWdCLGtCQUFrQixDQUM5QixPQUFlLEVBQ2YsWUFBb0IsRUFDcEIsV0FBbUI7SUFFbkIsTUFBTSxNQUFNLEdBQUcsSUFBQSx1QkFBUyxFQUFDO1FBQ3JCLE9BQU87UUFDUCxRQUFRLEVBQUUsZ0NBQWdDLFlBQVksRUFBRTtRQUN4RCxjQUFjLEVBQUUsMEJBQTBCLFdBQVcsR0FBRztLQUMzRCxDQUFDLENBQUM7SUFDSCxPQUFPLGdEQUFnRCxNQUFNLEVBQUUsQ0FBQztBQUNwRSxDQUFDO0FBWEQsZ0RBV0M7QUFFWSxRQUFBLGtCQUFrQixHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6RSxRQUFBLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVuRjs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUEwQjtJQUN6RCxPQUFPLENBQUMsR0FBZ0IsRUFBRSxFQUFFO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDO1FBRXhDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsa0VBQWtFO1FBQ2xFLElBQ0ksQ0FBQyxHQUFHLENBQUMsUUFBUTtZQUNiLENBQUMsTUFBTSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxpQkFBa0IsRUFDaEU7WUFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsMENBQTBDO1FBQzFDLElBQ0ksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDbEIsMEJBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUNqRTtZQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsMkRBQTJEO1FBQzNELGtDQUFrQztRQUNsQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ3RCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksMEJBQW1CLEVBQUU7Z0JBQzFDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFO29CQUNoQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNqQixNQUFNO2lCQUNUO2FBQ0o7WUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNaLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxNQUFNLENBQUMsbUJBQW1CLElBQUksTUFBTSxDQUFDLEtBQU0sRUFBRTtZQUM3QyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELEdBQUcsQ0FDQyxxQkFBcUIsTUFBTSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxLQUFLLFdBQzNELEdBQUcsQ0FBQyxJQUNSLGFBQWEsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLFVBQzdCLEdBQUcsQ0FBQyxJQUNSLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUM5QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQTlERCxnREE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tIFwicXVlcnlzdHJpbmdcIjtcbmltcG9ydCB7IEdheGlvc0Vycm9yIH0gZnJvbSBcImdheGlvc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nVXJsKHByb2plY3Q6IHN0cmluZywgZnVuY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzdHJpbmdpZnkoe1xuICAgICAgICBwcm9qZWN0LFxuICAgICAgICByZXNvdXJjZTogYGNsb3VkX2Z1bmN0aW9uL2Z1bmN0aW9uX25hbWUvJHtmdW5jdGlvbk5hbWV9YFxuICAgIH0pO1xuICAgIHJldHVybiBgaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vbG9ncy92aWV3ZXI/JHtwYXJhbXN9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4ZWN1dGlvbkxvZ1VybChcbiAgICBwcm9qZWN0OiBzdHJpbmcsXG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgZXhlY3V0aW9uSWQ6IHN0cmluZ1xuKSB7XG4gICAgY29uc3QgcGFyYW1zID0gc3RyaW5naWZ5KHtcbiAgICAgICAgcHJvamVjdCxcbiAgICAgICAgcmVzb3VyY2U6IGBjbG91ZF9mdW5jdGlvbi9mdW5jdGlvbl9uYW1lLyR7ZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIGFkdmFuY2VkRmlsdGVyOiBgbGFiZWxzLlwiZXhlY3V0aW9uX2lkXCI9XCIke2V4ZWN1dGlvbklkfVwiYFxuICAgIH0pO1xuICAgIHJldHVybiBgaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vbG9ncy92aWV3ZXI/JHtwYXJhbXN9YDtcbn1cblxuZXhwb3J0IGNvbnN0IGh0dHBNZXRob2RzVG9SZXRyeSA9IFtcIlBPU1RcIiwgXCJQVVRcIiwgXCJHRVRcIiwgXCJIRUFEXCIsIFwiT1BUSU9OU1wiLCBcIkRFTEVURVwiXTtcbmV4cG9ydCBjb25zdCBzdGF0dXNDb2Rlc1RvUmV0cnkgPSBbWzEwMCwgMTk5XSwgWzQyOSwgNDI5XSwgWzQwNSwgNDA1XSwgWzUwMCwgNTk5XV07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGJhc2VkIG9uIGNvbmZpZyBpZiB3ZSBzaG91bGQgcmV0cnkgdGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0gZXJyIFRoZSBHYXhpb3NFcnJvciBwYXNzZWQgdG8gdGhlIGludGVyY2VwdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkUmV0cnlSZXF1ZXN0KGxvZzogKG1zZzogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIChlcnI6IEdheGlvc0Vycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGVycj8uY29uZmlnPy5yZXRyeUNvbmZpZztcblxuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGNvbmZpZywgb3IgcmV0cmllcyBhcmUgZGlzYWJsZWQsIHJldHVybi5cbiAgICAgICAgaWYgKCFjb25maWcgfHwgY29uZmlnLnJldHJ5ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGVycm9yIGhhcyBubyByZXNwb25zZSAoRVRJTUVET1VULCBFTk9URk9VTkQsIGV0YylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWVyci5yZXNwb25zZSAmJlxuICAgICAgICAgICAgKGNvbmZpZy5jdXJyZW50UmV0cnlBdHRlbXB0IHx8IDApID49IGNvbmZpZy5ub1Jlc3BvbnNlUmV0cmllcyFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXRyeSBpZiB0aGUgcmVxdWVzdCBpcyBhYm9ydGVkIGRlbGliZXJhdGVseS5cbiAgICAgICAgaWYgKGVyci5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSByZXRyeSB3aXRoIGNvbmZpZ3VyZWQgSHR0cE1ldGhvZHMuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFlcnIuY29uZmlnLm1ldGhvZCB8fFxuICAgICAgICAgICAgaHR0cE1ldGhvZHNUb1JldHJ5LmluZGV4T2YoZXJyLmNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSkgPCAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhpcyB3YXNuJ3QgaW4gdGhlIGxpc3Qgb2Ygc3RhdHVzIGNvZGVzIHdoZXJlIHdlIHdhbnRcbiAgICAgICAgLy8gdG8gYXV0b21hdGljYWxseSByZXRyeSwgcmV0dXJuLlxuICAgICAgICBpZiAoZXJyLnJlc3BvbnNlPy5zdGF0dXMpIHtcbiAgICAgICAgICAgIGxldCBpc0luUmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVyci5yZXNwb25zZS5zdGF0dXM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttaW4sIG1heF0gb2Ygc3RhdHVzQ29kZXNUb1JldHJ5ISkge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPj0gbWluICYmIHN0YXR1cyA8PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0luUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB3ZSBhcmUgb3V0IG9mIHJldHJ5IGF0dGVtcHRzLCByZXR1cm5cbiAgICAgICAgY29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHQgPSBjb25maWcuY3VycmVudFJldHJ5QXR0ZW1wdCB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHQgPj0gY29uZmlnLnJldHJ5ISkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nKFxuICAgICAgICAgICAgYGdvb2dsZTogYXR0ZW1wdHM6ICR7Y29uZmlnLmN1cnJlbnRSZXRyeUF0dGVtcHR9LyR7Y29uZmlnLnJldHJ5fSwgY29kZTogJHtcbiAgICAgICAgICAgICAgICBlcnIuY29kZVxuICAgICAgICAgICAgfSwgc3RhdHVzOiAke2Vyci5yZXNwb25zZT8uc3RhdHVzfSBuYW1lOiAke1xuICAgICAgICAgICAgICAgIGVyci5uYW1lXG4gICAgICAgICAgICB9LCBtZXNzYWdlOiAke2Vyci5tZXNzYWdlfWBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xufVxuIl19