We are pleased to announce the release of Stash v2025.6.30 , packed with major improvement. You can check out the full changelog HERE . In this post, we’ll highlight the changes done in this release.
New Feature: TaskQueue
We’re excited to introduce a new feature in this release. This feature can be enabled during the installation or upgrade of Stash.
TaskQueue acts as a centralized controller that manages the execution of BackupSessions based on a defined Maximum Concurrency Limit. It queues incoming BackupSessions and ensures they are processed one at a time (or concurrently, up to the configured limit), maintaining their original order of arrival.
Why is TaskQueue important?
In environments where multiple BackupConfigurations share the same schedule, all corresponding BackupSessions may be triggered simultaneously. Without TaskQueue, this can overwhelm the system, leading to resource contention and backup failures.
By enforcing a controlled execution flow, TaskQueue ensures:
- Ensures the number of active
BackupSessionsnever exceeds the defined concurrency limit. - It maintains a
Queueand processesBackupSessionsin order, one after another or up to the allowed concurrency. - Prevents simultaneous backup job creation, resources are used efficiently, reducing resource spikes.
- Cluster System resources are used efficiently, based on the concurrency limit.
- Optimizes resource usage across the cluster by distributing backup execution over time.
- Backups have a higher chance of completing successfully without overloading the cluster.
- Increases the reliability of backups by minimizing the risk of failure due to resource exhaustion.
How to Enable TaskQueue?
To enable TaskQueue, you can use the --enable-task-queue flag during the installation or upgrade of Stash. Here is an example:
$ helm install stash oci://ghcr.io/appscode-charts/stash \
--version v2025.6.30 \
--namespace stash --create-namespace \
--set features.enterprise=true \
--set global.taskQueue.enabled=true \
--set global.taskQueue.maxConcurrentSessions=<max_concurrent_sessions> \
--set-file global.license=/path/to/the/license.txt \
--wait --burst-limit=10000 --debug
Here,
global.taskQueue.enabledis set totrueto enable theTaskQueuefeature.global.taskQueue.maxConcurrentSessionsis set to define the maximum number of concurrentBackupSessionsthat can be executed at a time.
Note: The
TaskQueuefeature is available only in the Enterprise Edition of Stash. To use this feature, make sure you install the Enterprise Edition. Installation instructions can be found here .
How Stash utilize TaskQueue?
When this feature enabled, Stash uses a separate controller called TaskQueueController,
It works as follows:
- Instead of triggering
BackupSessionsdirectly, theStashoperator creates a resource calledPendingTaskfor eachBackupSession. - Each PendingTask contains the actual
BackupSessionand is monitored by theTaskQueueController. - The
TaskQueueControllerprocesses thesePendingTaskresources based on the defined maximum concurrency limit.
Example of TaskQueue YAML
apiVersion: batch.k8s.appscode.com/v1alpha1
kind: TaskQueue
metadata:
name: appscode-stash-task-queue
spec:
maxConcurrentTasks: 10
tasks:
- rules:
failed: has(self.status.phase) && self.status.phase == 'Failed'
inProgress: has(self.status.phase) && self.status.phase == 'Running'
success: has(self.status.phase) && self.status.phase == 'Succeeded'
type:
group: stash.appscode.com
kind: BackupSession
Here,
maxConcurrentTasksis set to10, meaning a maximum of 10BackupSessionscan be executed concurrently.- If you need to reconfigure the
TaskQueueafter enabling it, you can modify themaxConcurrentTasksvalue according to your cluster’s capacity.
Example of PendingTask YAML
apiVersion: batch.k8s.appscode.com/v1alpha1
kind: PendingTask
metadata:
name: backupconfiguration-demo-s3-pvc-backup
spec:
resource:
metadata:
name: s3-pvc-backup-2-1751630401
namespace: demo
ownerReferences:
- apiVersion: stash.appscode.com/v1beta1
blockOwnerDeletion: true
controller: true
kind: BackupConfiguration
name: s3-pvc-backup-2
uid: c00376b7-1baf-4b7a-98df-c55f848e936c
spec:
invoker:
apiGroup: stash.appscode.com
kind: BackupConfiguration
name: s3-pvc-backup
status: {}
taskType:
group: stash.appscode.com
kind: BackupSession
status:
taskQueueName: appscode-stash-task-queue
What Next?
Please try the latest release and give us your valuable feedback.
- If you want to install Stash in a clean cluster, please follow the installation instruction from HERE .
- If you want to upgrade Stash from a previous version, please follow the upgrade instruction from HERE .
Support
To speak with us, please leave a message on our website .
To receive product announcements, follow us on Twitter/X .
If you have found a bug with Stash or want to request new features, please file an issue .
