![Introducing Enhanced Alert Actions and Triage Functionality](https://cdn.sanity.io/images/cgdhsj6q/production/fe71306d515f85de6139b46745ea7180362324f0-2530x946.png?w=800&fit=max&auto=format)
Product
Introducing Enhanced Alert Actions and Triage Functionality
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
@aws-sdk/util-retry
Advanced tools
Package description
The @aws-sdk/util-retry package is part of the AWS SDK for JavaScript v3. It provides utilities to add retry functionality to the AWS SDK operations. This package is designed to help manage retries in a more efficient and customizable way, allowing developers to handle transient errors by repeating requests without having to implement their own retry logic.
Configuring retry strategies
This feature allows developers to configure retry strategies, specifying how many times an operation should be retried before giving up. The `StandardRetryStrategy` is a built-in strategy that can be used to automatically handle retries according to the SDK's standard logic.
const { StandardRetryStrategy } = require('@aws-sdk/util-retry');
const retryStrategy = new StandardRetryStrategy(maxAttempts);
Custom retry strategy
Developers can extend the `RetryStrategy` class to implement custom retry logic. This allows for fine-grained control over when and how retries should be performed, based on the specific needs of the application.
const { RetryStrategy } = require('@aws-sdk/util-retry');
class MyRetryStrategy extends RetryStrategy {
constructor(maxAttempts) {
super();
this.maxAttempts = maxAttempts;
}
shouldRetry(error) {
// Custom logic to determine if a retry should be attempted
}
delayBeforeNextRetry(retryCount) {
// Custom logic to determine the delay before the next retry
}
}
The `retry` package provides a simple, yet powerful abstraction for retrying asynchronous operations. Unlike @aws-sdk/util-retry, which is designed specifically for AWS SDK operations, `retry` can be used for any asynchronous operation, making it more versatile but less specialized.
Similar to `retry`, `async-retry` is a lightweight library for retrying promises. It offers a simple API and flexible configuration options. While `async-retry` is more focused on promise-based operations, @aws-sdk/util-retry is tailored for AWS SDK operations, providing more specific functionalities for handling AWS service interactions.
The `p-retry` package is designed for retrying promises with a specific focus on simplicity and composability. It uses a declarative approach for defining retry conditions and strategies. Compared to @aws-sdk/util-retry, `p-retry` is more generic and can be applied to any promise-based operation, not just AWS SDK calls.
Changelog
3.338.0 (2023-05-23)
Readme
This package provides shared utilities for retries.
By default, each client already has a default retry strategy. The default retry count is 3, and only retryable errors will be retried.
AWS Documentation: Retry behavior.
import { S3Client } from "@aws-sdk/client-s3";
const client = new S3Client({}); // default retry strategy included.
If you want to change the number of attempts, you can provide maxAttempts
configuration during client creation.
import { S3Client } from "@aws-sdk/client-s3";
const client = new S3Client({ maxAttempts: 4 });
This is recommended because the StandardRetryStrategy
includes backoff calculation,
deciding whether an error should be retried, and a retry token counter.
If you want to change the number of attempts and use a custom delay
computation, you can use the ConfiguredRetryStrategy
from @aws-sdk/util-retry
.
import { S3Client } from "@aws-sdk/client-s3";
import { ConfiguredRetryStrategy } from "@aws-sdk/util-retry";
const client = new S3Client({
retryStrategy: new ConfiguredRetryStrategy(
4, // max attempts.
(attempt: number) => 100 + attempt * 1000 // backoff function.
),
});
This example sets the backoff at 100ms plus 1s per attempt.
If you provide both maxAttempts
and retryStrategy
, the retryStrategy
will
get precedence as it's more specific.
import { S3Client } from "@aws-sdk/client-s3";
import { ConfiguredRetryStrategy } from "@aws-sdk/util-retry";
const client = new S3Client({
maxAttempts: 2, // ignored.
retryStrategy: new ConfiguredRetryStrategy(
4, // used.
(attempt: number) => 100 + attempt * 1000 // backoff function.
),
});
You can implement the RetryStrategyV2
interface.
https://github.com/aws/aws-sdk-js-v3/blob/main/packages/types/src/retry.ts
FAQs
Shared retry utilities to be used in middleware packages.
The npm package @aws-sdk/util-retry receives a total of 1,320,296 weekly downloads. As such, @aws-sdk/util-retry popularity was classified as popular.
We found that @aws-sdk/util-retry demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports four distinct alert actions instead of the previous two, and alert triaging allows users to override the actions taken for all individual alerts.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.