UNPKG

@azure/cosmos

Version:
91 lines (90 loc) 3.27 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var defaultRetryPolicy_exports = {}; __export(defaultRetryPolicy_exports, { DefaultRetryPolicy: () => DefaultRetryPolicy }); module.exports = __toCommonJS(defaultRetryPolicy_exports); var import_common = require("../common/index.js"); var import_TimeoutError = require("../request/TimeoutError.js"); const WindowsInterruptedFunctionCall = 10004; const WindowsFileHandleNotValid = 10009; const WindowsPermissionDenied = 10013; const WindowsBadAddress = 10014; const WindowsInvalidArgumnet = 10022; const WindowsResourceTemporarilyUnavailable = 10035; const WindowsOperationNowInProgress = 10036; const WindowsAddressAlreadyInUse = 10048; const WindowsConnectionResetByPeer = 10054; const WindowsCannotSendAfterSocketShutdown = 10058; const WindowsConnectionTimedOut = 10060; const WindowsConnectionRefused = 10061; const WindowsNameTooLong = 10063; const WindowsHostIsDown = 10064; const WindowsNoRouteTohost = 10065; const LinuxConnectionReset = "ECONNRESET"; const BrokenPipe = "EPIPE"; const CONNECTION_ERROR_CODES = [ WindowsInterruptedFunctionCall, WindowsFileHandleNotValid, WindowsPermissionDenied, WindowsBadAddress, WindowsInvalidArgumnet, WindowsResourceTemporarilyUnavailable, WindowsOperationNowInProgress, WindowsAddressAlreadyInUse, WindowsConnectionResetByPeer, WindowsCannotSendAfterSocketShutdown, WindowsConnectionTimedOut, WindowsConnectionRefused, WindowsNameTooLong, WindowsHostIsDown, WindowsNoRouteTohost, LinuxConnectionReset, import_TimeoutError.TimeoutErrorCode, BrokenPipe ]; function needsRetry(operationType, code) { return (operationType === import_common.OperationType.Read || operationType === import_common.OperationType.Query) && CONNECTION_ERROR_CODES.includes(code); } class DefaultRetryPolicy { constructor(operationType) { this.operationType = operationType; } maxTries = 10; currentRetryAttemptCount = 0; retryAfterInMs = 1e3; /** * Determines whether the request should be retried or not. * @param err - Error returned by the request. */ async shouldRetry(err, diagnosticNode) { if (err) { if (this.currentRetryAttemptCount < this.maxTries && needsRetry(this.operationType, err.code)) { diagnosticNode.addData({ successfulRetryPolicy: "default" }); this.currentRetryAttemptCount++; return true; } } return false; } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { DefaultRetryPolicy });