Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
eec534d
feat: setup for WOW file system
ftschirpke Mar 25, 2025
e3709a7
feat: register new trace fields
ftschirpke Mar 25, 2025
74fb76b
feat: WOW scheduler - configuration, k8s requests, scheduler requests
ftschirpke Mar 25, 2025
190376c
feat: all file related changes - trying TaskProcessor inheritance
ftschirpke Mar 27, 2025
1e795b4
fix: properly copy and call script in bash wrapper
ftschirpke Mar 27, 2025
cfc9e45
feat: register files in WOW file system
ftschirpke Apr 1, 2025
48a6ec3
debug: log usage of overwritten methods
ftschirpke Apr 10, 2025
9668dc4
fix: solves dependency issues with FTP
ftschirpke Apr 10, 2025
9470602
feat: (empty) file transfer for WOW file system
ftschirpke Apr 10, 2025
d40a9e1
avoid download for wow files
Lehmann-Fabian Apr 23, 2025
ec0eafc
Avoid Download for WOW files
ftschirpke Apr 25, 2025
b40a2ab
Remove the need for the TaskProcessor
Lehmann-Fabian Apr 25, 2025
4a7212b
asType on LocalPath returns itself
Lehmann-Fabian Apr 25, 2025
3389c60
relativize to localpath uses internal path
Lehmann-Fabian Apr 25, 2025
55de3d6
add equals and hashCode to LocalPath
Lehmann-Fabian Apr 25, 2025
b4e889b
ignore compiled getStatsAndResolveSymlinks
Lehmann-Fabian Apr 25, 2025
516b47c
Remove old Java artefacts
Lehmann-Fabian Apr 25, 2025
722769f
Replace deprecated new URL
Lehmann-Fabian Apr 25, 2025
2fcc174
Warning if copy strategy is unsupported
Lehmann-Fabian Apr 25, 2025
e0f65eb
Use fixed hasher
Lehmann-Fabian Apr 25, 2025
d3bbc23
Remove unused method
Lehmann-Fabian Apr 25, 2025
0852d23
Remove unused import
Lehmann-Fabian Apr 25, 2025
2365448
Create LocalFile
Lehmann-Fabian Apr 25, 2025
bdf8d30
Remove unused method getRelativePathonFake
Lehmann-Fabian Apr 25, 2025
ecdd8f0
Check also for inherited classes on asType call.
Lehmann-Fabian Apr 25, 2025
d5d718d
Cast instead of asType
Lehmann-Fabian Apr 25, 2025
1649baa
Remove unused import
Lehmann-Fabian Apr 25, 2025
d2c11e3
Use Java native methods to check also for inherited classes on asType…
Lehmann-Fabian Apr 25, 2025
f50d42f
Remove the need for overwriting Nextflow's TaskProcessor
ftschirpke Apr 25, 2025
62a2b1a
Hint user to NXF_OPTS="--add-exports=java.base/sun.net.ftp=ALL-UNNAMED"
Lehmann-Fabian Apr 25, 2025
35b44cd
Clear data when no needed to free up memory
Lehmann-Fabian Apr 25, 2025
aaa3186
refactor: replace FtpClient with FtpURLConnection
ftschirpke Apr 26, 2025
1a413b4
Merge branch 'wow_as_fs' into improvements
ftschirpke Apr 26, 2025
9cd025f
Merge pull request #3 from Lehmann-Fabian/improvements
ftschirpke Apr 26, 2025
62ac1d2
fix: revert FTP changes
ftschirpke Apr 26, 2025
e94a84e
feat: generalize InputStream and OutputStream for LocalPath
ftschirpke Apr 26, 2025
a04860a
fix: check for scheduler client existence
ftschirpke Apr 26, 2025
1383dd4
fix: check for fully read FTP stream
ftschirpke Apr 26, 2025
2d089af
fix: implement available()
ftschirpke Apr 26, 2025
5848367
fix: do not close ftp client before starting
ftschirpke Apr 26, 2025
7802c8c
More Fixes (#4)
Lehmann-Fabian Apr 30, 2025
4f3a5c4
Fix Compilation Errors and Missing Files (#5)
Lehmann-Fabian May 2, 2025
dc21986
fix: do not check for .command.outfiles in CWS
ftschirpke May 2, 2025
edafe7d
fix: remove need for 'cp -u' to be implemented
ftschirpke May 2, 2025
f1d6751
refactor: simplify LocalPath
ftschirpke May 2, 2025
84151c6
Use ConfigMap and make BashWrapper Ponder compatible (#6)
Lehmann-Fabian May 4, 2025
8c6b406
Module Restructure and TODOs (#7)
ftschirpke May 9, 2025
baa95ce
WOW scheduler README (#8)
ftschirpke May 13, 2025
6550209
Transfer workdir and localworkdir to scheduler
Lehmann-Fabian May 14, 2025
c059b37
Trigger publish all remaining data when workflow has finished
Lehmann-Fabian May 14, 2025
3b974ff
Require daemon in version 2.0
Lehmann-Fabian May 14, 2025
0905e35
Require kubernetesscheduler in version 2.1
Lehmann-Fabian May 15, 2025
dc6b1a5
Set kubernetesscheduler to version 2.1 in readme
Lehmann-Fabian May 15, 2025
aef4df0
Fix problem that fileType was not correctly parsed
Lehmann-Fabian May 16, 2025
9c73ca5
fix: parse FileTime from long int
ftschirpke May 16, 2025
d7acc4b
fix: WOW-only checks and small chores
ftschirpke May 16, 2025
6812763
fix: move location-awareness check to CWSConfig
ftschirpke May 16, 2025
e619974
ci: build c script in GitHub actions
ftschirpke May 16, 2025
d3df860
fix: nextflow version
ftschirpke May 16, 2025
83811fb
fix: CI and newest Nextflow version
ftschirpke May 16, 2025
20aa740
fix: final CI and Nextflow version available on Maven
ftschirpke May 16, 2025
2f1ab0d
fix: CI and tests
ftschirpke May 16, 2025
e04bd5a
fix: more one-line functions
ftschirpke May 16, 2025
84d43c6
chore: add nf-hello changes from ee8371fb7c46b82d9e705a1b3281736aeaea…
ftschirpke May 16, 2025
7ecb873
Merge branch 'master' into wow_as_fs
ftschirpke May 16, 2025
6211338
fix: update README with Nextflow versions
ftschirpke May 16, 2025
9aa9797
Update Readme
Lehmann-Fabian May 16, 2025
9e26f2f
Release version 2.0.0
Lehmann-Fabian May 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ jobs:
fetch-depth: 1
submodules: true

- name: Install dependencies for C (cross-)compilation
run: |
sudo apt-get update
sudo apt-get install -y clang lld gcc-aarch64-linux-gnu libc6-dev-arm64-cross

- name: Compile C script using make
run: make c_scripts

- name: Setup Java ${{ matrix.java_version }}
uses: actions/setup-java@v3
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ out
/gradle.properties
/logs.tmp
*.jar
/plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks_*
40 changes: 37 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,52 @@ else
mm =
endif

C_SCRIPT_SRC = plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks.c
C_SCRIPT_AARCH64 = plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks_linux_aarch64
C_SCRIPT_X86_64 = plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks_linux_x86_64
C_SCRIPT_ALL_TARGETS = $(C_SCRIPT_X86_64) $(C_SCRIPT_AARCH64)

arch:=$(shell uname -m)

ifneq ($(arch),x86_64)
$(info ====================================================================================)
$(info This Makefile assumes to be run on an x86_64 build system. Found: $(arch))
$(info As an alternative you can adjust the Makefile or build $(C_SCRIPT_SRC) yourself for the following targets:)
$(info - target aarch64-linux-gnu: saved to $(C_SCRIPT_AARCH64))
$(info - target x86_64-linux-gnu: saved to $(C_SCRIPT_X86_64))
$(error Aborting)
endif

c_scripts: $(C_SCRIPT_ALL_TARGETS)

$(C_SCRIPT_AARCH64): $(C_SRIPT_SRC)
clang -static \
-target aarch64-linux-gnu \
--sysroot=/usr/aarch64-linux-gnu \
plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks.c \
-fuse-ld=lld \
-o $@


$(C_SCRIPT_X86_64): $(C_SCRIPT_SRC)
clang -static \
-target x86_64-linux-gnu \
plugins/nf-cws/src/resources/nf-cws/getStatsAndResolveSymlinks.c \
-fuse-ld=lld \
-o $@

clean:
rm -rf .nextflow*
rm -rf work
rm -rf build
rm -rf plugins/*/build
rm -f $(C_SCRIPT_ALL_TARGETS)
./gradlew clean

compile:
./gradlew :nextflow:exportClasspath compileGroovy
@echo "DONE `date`"


check:
./gradlew check

Expand Down Expand Up @@ -55,7 +89,7 @@ assemble:
# generate build zips under build/plugins
# you can install the plugin copying manually these files to $HOME/.nextflow/plugins
#
buildPlugins:
buildPlugins: $(C_SCRIPT_ALL_TARGETS)
./gradlew copyPluginZip

#
Expand All @@ -69,4 +103,4 @@ upload-plugins:
./gradlew plugins:upload

publish-index:
./gradlew plugins:publishIndex
./gradlew plugins:publishIndex
303 changes: 195 additions & 108 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}

sourceCompatibility = 17
targetCompatibility = 17
}
Expand Down
2 changes: 1 addition & 1 deletion plugins/nf-cws/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ sourceSets {
}

ext{
nextflowVersion = '24.11.0-edge'
nextflowVersion = '25.01.0-edge'
}

dependencies {
Expand Down
12 changes: 12 additions & 0 deletions plugins/nf-cws/src/main/nextflow/cws/CWSConfig.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ class CWSConfig {

String getStrategy() { target.strategy as String ?: 'FIFO' }

boolean strategyIsLocationAware() {
switch(target.strategy) {
case "wow": return true
default:
return false
}
}

String getCostFunction() { target.costFunction as String }

String getMemoryPredictor() { target.memoryPredictor as String }
Expand All @@ -30,6 +38,10 @@ class CWSConfig {
return s ? new MemoryUnit(s) : null
}

Integer getMaxCopyTasksPerNode() { target.maxCopyTasksPerNode as Integer }

Integer getMaxWaitingCopyTasksPerNode() { target.maxWaitingCopyTasksPerNode as Integer }

int getBatchSize() {
String s = target.batchSize as String
//Default: 1 -> No batching
Expand Down
27 changes: 27 additions & 0 deletions plugins/nf-cws/src/main/nextflow/cws/CWSPlugin.groovy
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
package nextflow.cws

import groovy.transform.CompileStatic
import nextflow.cws.wow.file.LocalPath
import nextflow.cws.wow.file.OfflineLocalPath
import nextflow.cws.wow.file.WorkdirPath
import nextflow.cws.wow.filesystem.WOWFileSystemProvider
import nextflow.cws.wow.serializer.LocalPathSerializer
import nextflow.file.FileHelper
import nextflow.plugin.BasePlugin
import nextflow.trace.TraceRecord
import nextflow.util.KryoHelper
import org.pf4j.PluginWrapper

@CompileStatic
Expand All @@ -14,6 +21,10 @@ class CWSPlugin extends BasePlugin {

private static void registerTraceFields() {
TraceRecord.FIELDS.putAll( [
infiles_time: 'num',
outfiles_time: 'num',
create_bash_wrapper_time: 'num',
create_request_time: 'num',
submit_to_scheduler_time: 'num',
submit_to_k8s_time: 'num',
scheduler_time_in_queue: 'num',
Expand All @@ -33,13 +44,29 @@ class CWSPlugin extends BasePlugin {
scheduler_delta_submitted_batch_end: 'num',
memory_adapted: 'mem',
input_size: 'num',
scheduler_files_bytes: 'num',
scheduler_files_node_bytes: 'num',
scheduler_files_node_other_task_bytes: 'num',
scheduler_files: 'num',
scheduler_files_node: 'num',
scheduler_files_node_other_task: 'num',
scheduler_depending_task: 'num',
scheduler_location_count: 'num',
scheduler_nodes_to_copy_from: 'num',
scheduler_no_alignment_found: 'num',
scheduler_time_delta_phase_three: 'str',
scheduler_copy_tasks: 'num',
] )
}

@Override
void start() {
super.start()
registerTraceFields()
KryoHelper.register( LocalPath, LocalPathSerializer )
KryoHelper.register( OfflineLocalPath, LocalPathSerializer )
KryoHelper.register( WorkdirPath, LocalPathSerializer )
FileHelper.getOrInstallProvider(WOWFileSystemProvider)
}

}
2 changes: 2 additions & 0 deletions plugins/nf-cws/src/main/nextflow/cws/CWSSchedulerBatch.groovy
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package nextflow.cws

import groovy.transform.CompileStatic
import nextflow.cws.processor.SchedulerBatch

@CompileStatic
class CWSSchedulerBatch extends SchedulerBatch {

private SchedulerClient schedulerClient
Expand Down
3 changes: 3 additions & 0 deletions plugins/nf-cws/src/main/nextflow/cws/CWSSession.groovy
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package nextflow.cws

import groovy.transform.CompileStatic

/**
* Central, global instance to manage all generated Executor instances
*/
@CompileStatic
class CWSSession {

static final CWSSession INSTANCE = new CWSSession()
Expand Down
Loading