package.dist.src.config.retry.fixed-count-retry-strategy.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sdk Show documentation
Show all versions of sdk Show documentation
Client SDK for Momento services
The newest version!
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FixedCountRetryStrategy = void 0;
const default_eligibility_strategy_1 = require("./default-eligibility-strategy");
class FixedCountRetryStrategy {
constructor(props) {
var _a;
this.logger = props.loggerFactory.getLogger(this);
this.eligibilityStrategy =
(_a = props.eligibilityStrategy) !== null && _a !== void 0 ? _a : new default_eligibility_strategy_1.DefaultEligibilityStrategy(props.loggerFactory);
this.maxAttempts = props.maxAttempts;
}
determineWhenToRetryRequest(props) {
this.logger.debug(`Determining whether request is eligible for retry; status code: ${props.grpcStatus.code}, request type: ${props.grpcRequest.path}, attemptNumber: ${props.attemptNumber}, maxAttempts: ${this.maxAttempts}`);
if (!this.eligibilityStrategy.isEligibleForRetry(props)) {
// null means do not retry
return null;
}
if (props.attemptNumber > this.maxAttempts) {
this.logger.debug(`Exceeded max attempt count (${this.maxAttempts})`);
// null means do not retry
return null;
}
this.logger.debug(`Request is eligible for retry (attempt ${props.attemptNumber} of ${this.maxAttempts}, retrying immediately.`);
// 0 means retry immediately
return 0;
}
}
exports.FixedCountRetryStrategy = FixedCountRetryStrategy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZWQtY291bnQtcmV0cnktc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29uZmlnL3JldHJ5L2ZpeGVkLWNvdW50LXJldHJ5LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLGlGQUEwRTtBQVMxRSxNQUFhLHVCQUF1QjtJQUtsQyxZQUFZLEtBQW1DOztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsTUFBQSxLQUFLLENBQUMsbUJBQW1CLG1DQUN6QixJQUFJLHlEQUEwQixDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVELDJCQUEyQixDQUN6QixLQUF1QztRQUV2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixtRUFBbUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLG1CQUFtQixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksb0JBQW9CLEtBQUssQ0FBQyxhQUFhLGtCQUFrQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQzdNLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZELDBCQUEwQjtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLDBCQUEwQjtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsMENBQTBDLEtBQUssQ0FBQyxhQUFhLE9BQU8sSUFBSSxDQUFDLFdBQVcseUJBQXlCLENBQzlHLENBQUM7UUFDRiw0QkFBNEI7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0Y7QUFsQ0QsMERBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGV0ZXJtaW5ld2hlblRvUmV0cnlSZXF1ZXN0UHJvcHMsXG4gIFJldHJ5U3RyYXRlZ3ksXG59IGZyb20gJy4vcmV0cnktc3RyYXRlZ3knO1xuaW1wb3J0IHtFbGlnaWJpbGl0eVN0cmF0ZWd5fSBmcm9tICcuL2VsaWdpYmlsaXR5LXN0cmF0ZWd5JztcbmltcG9ydCB7RGVmYXVsdEVsaWdpYmlsaXR5U3RyYXRlZ3l9IGZyb20gJy4vZGVmYXVsdC1lbGlnaWJpbGl0eS1zdHJhdGVneSc7XG5pbXBvcnQge01vbWVudG9Mb2dnZXJGYWN0b3J5LCBNb21lbnRvTG9nZ2VyfSBmcm9tICcuLi8uLi8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkQ291bnRSZXRyeVN0cmF0ZWd5UHJvcHMge1xuICBsb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeTtcbiAgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgZWxpZ2liaWxpdHlTdHJhdGVneT86IEVsaWdpYmlsaXR5U3RyYXRlZ3k7XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZENvdW50UmV0cnlTdHJhdGVneSBpbXBsZW1lbnRzIFJldHJ5U3RyYXRlZ3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGlnaWJpbGl0eVN0cmF0ZWd5OiBFbGlnaWJpbGl0eVN0cmF0ZWd5O1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEZpeGVkQ291bnRSZXRyeVN0cmF0ZWd5UHJvcHMpIHtcbiAgICB0aGlzLmxvZ2dlciA9IHByb3BzLmxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIHRoaXMuZWxpZ2liaWxpdHlTdHJhdGVneSA9XG4gICAgICBwcm9wcy5lbGlnaWJpbGl0eVN0cmF0ZWd5ID8/XG4gICAgICBuZXcgRGVmYXVsdEVsaWdpYmlsaXR5U3RyYXRlZ3kocHJvcHMubG9nZ2VyRmFjdG9yeSk7XG4gICAgdGhpcy5tYXhBdHRlbXB0cyA9IHByb3BzLm1heEF0dGVtcHRzO1xuICB9XG5cbiAgZGV0ZXJtaW5lV2hlblRvUmV0cnlSZXF1ZXN0KFxuICAgIHByb3BzOiBEZXRlcm1pbmV3aGVuVG9SZXRyeVJlcXVlc3RQcm9wc1xuICApOiBudW1iZXIgfCBudWxsIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBEZXRlcm1pbmluZyB3aGV0aGVyIHJlcXVlc3QgaXMgZWxpZ2libGUgZm9yIHJldHJ5OyBzdGF0dXMgY29kZTogJHtwcm9wcy5ncnBjU3RhdHVzLmNvZGV9LCByZXF1ZXN0IHR5cGU6ICR7cHJvcHMuZ3JwY1JlcXVlc3QucGF0aH0sIGF0dGVtcHROdW1iZXI6ICR7cHJvcHMuYXR0ZW1wdE51bWJlcn0sIG1heEF0dGVtcHRzOiAke3RoaXMubWF4QXR0ZW1wdHN9YFxuICAgICk7XG4gICAgaWYgKCF0aGlzLmVsaWdpYmlsaXR5U3RyYXRlZ3kuaXNFbGlnaWJsZUZvclJldHJ5KHByb3BzKSkge1xuICAgICAgLy8gbnVsbCBtZWFucyBkbyBub3QgcmV0cnlcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocHJvcHMuYXR0ZW1wdE51bWJlciA+IHRoaXMubWF4QXR0ZW1wdHMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFeGNlZWRlZCBtYXggYXR0ZW1wdCBjb3VudCAoJHt0aGlzLm1heEF0dGVtcHRzfSlgKTtcbiAgICAgIC8vIG51bGwgbWVhbnMgZG8gbm90IHJldHJ5XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgUmVxdWVzdCBpcyBlbGlnaWJsZSBmb3IgcmV0cnkgKGF0dGVtcHQgJHtwcm9wcy5hdHRlbXB0TnVtYmVyfSBvZiAke3RoaXMubWF4QXR0ZW1wdHN9LCByZXRyeWluZyBpbW1lZGlhdGVseS5gXG4gICAgKTtcbiAgICAvLyAwIG1lYW5zIHJldHJ5IGltbWVkaWF0ZWx5XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbiJdfQ==
© 2015 - 2025 Weber Informatics LLC | Privacy Policy