Skip to content

Sched core implementation#6242

Merged
pditommaso merged 73 commits intomasterfrom
sched
Feb 27, 2026
Merged

Sched core implementation#6242
pditommaso merged 73 commits intomasterfrom
sched

Conversation

@pditommaso
Copy link
Member

Draft implementation for sched poc

@pditommaso pditommaso marked this pull request as draft July 2, 2025 08:31
@netlify
Copy link

netlify bot commented Jul 2, 2025

Deploy Preview for nextflow-docs-staging ready!

Name Link
🔨 Latest commit 363012c
🔍 Latest deploy log https://app.netlify.com/projects/nextflow-docs-staging/deploys/69a1d80a6b562c000784ea75
😎 Deploy Preview https://deploy-preview-6242--nextflow-docs-staging.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@bentsherman
Copy link
Member

I wonder if we can fold nf-tower into nf-seqera with subpackages io.seqera.platform and io.seqera.scheduler, SeqeraPlatformClient and SeqeraSchedulerClient, etc. Of course that can be done when we're about to merge

@pditommaso
Copy link
Member Author

Yeah, this is temporary. We to find a better packing.

Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
pditommaso and others added 4 commits January 17, 2026 11:39
…ropagation

Wrap cancelTask call in try-catch to prevent exceptions from escaping
killTask(). This ensures handleException() is called with the original
error, allowing proper workflow termination instead of crashing the
task monitor poll loop.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
- Add keep-alive mechanism to send empty submissions after 60s idle
- Pass sessionId to batch submitter for API calls
- Add null check in killTask when taskId not yet assigned
- Update sched-client to 0.9.0-SNAPSHOT
- Bump plugin version to 0.4.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
pditommaso and others added 12 commits January 26, 2026 11:35
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
- Define SEQERA constant in SeqeraExecutor for reuse
- Override executor name in trace record to 'seqera/aws' for cost tracking
- Add unit test for getTraceRecord() method
- Remove obsolete convertPriceModel test (moved to MapperUtil)

Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
… [ci fast]

- Add nf-seqera plugin to packing.gradle and plugins-info.txt
- Fix workflow hang when batch submission fails by detecting early
  failure in checkIfCompleted()

Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Add proper error handling to prevent thread crashes and enable graceful
workflow abort on fatal errors:

- Add onError callback to propagate fatal errors to session
- Wrap sendTasks0 loop in try-catch to handle unexpected Throwables
- Protect keep-alive calls to prevent thread crash on transient failures
- Add drainAndFailPendingTasks helper to notify pending tasks on failure
- Update SeqeraExecutor to pass session.abort callback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
…xit code [ci fast]

When a Seqera task fails (status=FAILED) but no exit code is available
(exitStatus=MAX_VALUE), set task.error to a ProcessException with the
error message from the task state, or a fallback message if not available.

This aligns with the error handling pattern used in AWS Batch and Google
Batch executors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
…onfig warnings

The config validator checks @ConfigOption FIRST - if present, it treats
the field as a leaf Option and doesn't recurse into nested ConfigScope
types. This caused spurious warnings for machineRequirement nested options:

    WARN: Unrecognized config option 'seqera.machineRequirement.provisioning'
    WARN: Unrecognized config option 'seqera.machineRequirement.maxSpotAttempts'

Removing @ConfigOption allows the validator to recognize that
MachineRequirementOpts implements ConfigScope and properly discover
its nested @ConfigOption fields.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Lorenzo Fontana <fontanalorenz@gmail.com>
- Add disk configuration options to MachineRequirementOpts (diskType, diskThroughputMiBps, diskIops, diskEncrypted)
- Extend DiskResource with cloud-specific properties (iops, throughput, encrypted, filesystem, mountPath)
- Add MapperUtil.toDiskRequirement() to map disk settings to sched API
- Update sched-client to 0.14.0-SNAPSHOT for DiskRequirement support
- Document EBS disk configuration in executor.md and config.md
- Default to gp3 volumes with 325 MiB/s throughput (Fusion recommended)

Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
- Add diskAllocation config option (task/node) to MachineRequirementOpts
- Update MapperUtil to map allocation and use correct volumeType API
- Add validation: node allocation only supports disk size
- Bump sched-client to 0.16.0-SNAPSHOT

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
pditommaso and others added 4 commits January 30, 2026 12:56
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Validate that the container image is not empty before submitting tasks
to the Seqera scheduler. The executor requires all processes to specify
a container image, so this throws ProcessUnrecoverableException with a
clear error message when the container is missing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Add configurable labels that are propagated to AWS resources (ECS tasks,
capacity providers, EC2 instances) for cost tracking and resource organization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Make ExecutorOpts implement ConfigScope and remove @ConfigOption from
the executor field in SeqeraConfig so nested config options are properly
discovered by the config validator.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Copy link
Member

@bentsherman bentsherman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good enough to merge, just left a few minor suggestions

pditommaso and others added 20 commits February 27, 2026 18:38
Co-authored-by: Ben Sherman <bentshermann@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
---------

Signed-off-by: Ben Sherman <bentshermann@gmail.com>
Co-authored-by: Ben Sherman <bentshermann@gmail.com>
Co-authored-by: Jon Martí <jmartifraiz@gmail.com>
Co-authored-by: Ben Sherman <bentshermann@gmail.com>
Co-authored-by: Phil Ewels <phil.ewels@seqera.io>
Co-authored-by: Ben Sherman <bentshermann@gmail.com>
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
@pditommaso pditommaso marked this pull request as ready for review February 27, 2026 17:45
@pditommaso pditommaso requested a review from a team as a code owner February 27, 2026 17:45
@pditommaso pditommaso merged commit 870c858 into master Feb 27, 2026
14 checks passed
@pditommaso pditommaso deleted the sched branch February 27, 2026 17:52
pditommaso added a commit that referenced this pull request Mar 3, 2026
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Lorenzo Fontana <fontanalorenz@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants