feat: Add per-task Fusion control via disk directive#6508
Closed
edmundmiller wants to merge 3 commits intomasterfrom
Closed
feat: Add per-task Fusion control via disk directive#6508edmundmiller wants to merge 3 commits intomasterfrom
edmundmiller wants to merge 3 commits intomasterfrom
Conversation
✅ Deploy Preview for nextflow-docs-staging canceled.
|
Add optional Boolean fusion field to DiskResource to allow per-task control of Fusion filesystem usage. Changes: - Add fusion field to DiskResource class - Update constructor to accept fusion parameter from disk directive - Make request field optional (can be null) for fusion-only usage - Update withRequest() to preserve fusion setting - Update toString() via @tostring to include fusion field This enables syntax like: disk fusion: false disk request: '100 GB', fusion: true Signed-off-by: Edmund Miller <edmund.miller@seqera.io>
Enable per-task control of Fusion filesystem by checking the disk.fusion setting before falling back to executor-level configuration. Changes: - Modify fusionEnabled() in FusionAwareTask to check task's disk.fusion setting first - Fall back to executor.isFusionEnabled() if disk.fusion is not specified - Task-level setting takes priority over global fusion.enabled config - Add null-safe navigation for config to handle cases where task config may not be set (e.g., in test mocks) Priority order: 1. Task-level disk.fusion setting (highest) 2. Executor/session-level fusion.enabled config (fallback) This provides a clearer alternative to using "scratch false" for disabling Fusion on problematic tasks. Signed-off-by: Edmund Miller <edmund.miller@seqera.io>
Add comprehensive unit tests for the disk fusion feature. Changes: - Add test cases for DiskResource with fusion field - Test all combinations: fusion true/false/null - Test fusion field preservation in withRequest() - Test combined usage with type and request fields Tests verify: - DiskResource correctly stores fusion setting - Fusion setting persists through withRequest() transformations - All disk directive syntax variants parse correctly Signed-off-by: Edmund Miller <edmund.miller@seqera.io>
99ec5cc to
cd122f4
Compare
Member
|
Closing since we didn't reach consensus on this |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Per-task Fusion control via
disk fusion: true/false- a clearer alternative toscratch false.Behavior Matrix
truetruefalsetruetruefalsetruetruetruefalsePrecedence:
scratch=true>disk.fusion>fusion.enabledSyntax
process myTask { disk fusion: false // Disable Fusion for this task disk request: '100 GB', fusion: true // With disk size disk request: '375 GB', type: 'local-ssd', fusion: false // With GCP disk type }Notes
scratch falsestill worksdisk.fusionworks (disk.type/requestignored - existing behavior)