UNPKG

deep-package-manager

Version:
99 lines (81 loc) 2.13 kB
/** * Created by CCristi on 2/6/17. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractService = undefined; var _deepCore = require('deep-core'); var _deepCore2 = _interopRequireDefault(_deepCore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class AbstractService extends _deepCore2.default.OOP.Interface { /** * @param {Instance} replicationInstance */ constructor(replicationInstance) { super(['name']); this._replication = replicationInstance; } /** * @returns {Instance} */ get replication() { return this._replication; } /** * @returns {Object} */ blueConfig() { return this.replication.blueConfig.provisioning[this.name()]; } /** * @returns {Object} */ greenConfig() { return this.replication.greenConfig.provisioning[this.name()]; } /** * @param {Number} timeout * @returns {Promise} */ wait(timeout) { return new Promise(resolve => setTimeout(resolve, timeout)); } /** * @param {AWS.Request|Object} request * @param {String[]} retryableCodes * @returns {AWS.Request|Object} */ _retryableRequest(request, retryableCodes = []) { retryableCodes = retryableCodes.filter(c => AbstractService._safeRetryableCodes.indexOf(c) === -1).concat(AbstractService._safeRetryableCodes); request.on('retry', response => { if (retryableCodes.indexOf(response.error.code) !== -1) { console.debug(`"${this.name()}" resources locked. Retrying...`); response.error.retryable = true; response.error.retryDelay = AbstractService.RETRY_DELAY; response.error.retryCount = AbstractService.RETRY_COUNT; } }); return request; } /** * @returns {String[]} */ static get _safeRetryableCodes() { return ['ResourceInUseException', 'Throttling']; } /** * @returns {Number} */ static get RETRY_COUNT() { return 5; } /** * @returns {Number} */ static get RETRY_DELAY() { return 5000; } } exports.AbstractService = AbstractService;