name: "Database Contention Stress Test"
description: |
This workflow is designed to stress test the database with high contention.
It creates 5 stages of 1000 jobs each, with barriers between stages.
All jobs are simple echo commands that complete almost instantly,
causing many jobs to complete simultaneously and trigger concurrent
unblocking operations in the server's background thread.
Expected behavior:
- 5000 total jobs (1000 per stage)
- ~6000 total dependencies
- High contention between API handlers completing jobs and
the background unblocking thread processing completions
Run with:
torc workflows create tests/workflows/database_contention_test/workflow.yaml
torc workflows run <workflow_id>
Or for Slurm:
torc workflows create-slurm --account <account> tests/workflows/database_contention_test/workflow.yaml
torc workflows submit <workflow_id>
jobs:
- name: "stage1_{i:04d}"
command: "echo 'stage1 job {i}'"
resource_requirements: "minimal"
parameters:
i: "0:999"
- name: "barrier_stage1_complete"
command: "echo 'Stage 1 complete: 1000 jobs finished' && date"
resource_requirements: "minimal"
depends_on_regexes: ["^stage1_\\d+$"]
- name: "stage2_{i:04d}"
command: "echo 'stage2 job {i}'"
resource_requirements: "minimal"
depends_on: ["barrier_stage1_complete"]
parameters:
i: "0:999"
- name: "barrier_stage2_complete"
command: "echo 'Stage 2 complete: 1000 jobs finished' && date"
resource_requirements: "minimal"
depends_on_regexes: ["^stage2_\\d+$"]
- name: "stage3_{i:04d}"
command: "echo 'stage3 job {i}'"
resource_requirements: "minimal"
depends_on: ["barrier_stage2_complete"]
parameters:
i: "0:999"
- name: "barrier_stage3_complete"
command: "echo 'Stage 3 complete: 1000 jobs finished' && date"
resource_requirements: "minimal"
depends_on_regexes: ["^stage3_\\d+$"]
- name: "stage4_{i:04d}"
command: "echo 'stage4 job {i}'"
resource_requirements: "minimal"
depends_on: ["barrier_stage3_complete"]
parameters:
i: "0:999"
- name: "barrier_stage4_complete"
command: "echo 'Stage 4 complete: 1000 jobs finished' && date"
resource_requirements: "minimal"
depends_on_regexes: ["^stage4_\\d+$"]
- name: "stage5_{i:04d}"
command: "echo 'stage5 job {i}'"
resource_requirements: "minimal"
depends_on: ["barrier_stage4_complete"]
parameters:
i: "0:999"
- name: "workflow_complete"
command: |
echo "════════════════════════════════════════════════════════════"
echo "Database Contention Stress Test Complete"
echo "Finished at: $(date)"
echo "Total jobs executed: 5000 (5 stages x 1000 jobs)"
echo "════════════════════════════════════════════════════════════"
resource_requirements: "minimal"
depends_on_regexes: ["^stage5_\\d+$"]
resource_requirements:
- name: "minimal"
num_cpus: 1
num_gpus: 0
num_nodes: 1
memory: "100m"
runtime: "PT1M"