-
Notifications
You must be signed in to change notification settings - Fork 776
Closed
Description
Bug report
(Please follow this template by replacing the text between parentheses with the requested information)
Expected behavior and actual behavior
-
Expected behaviour: The nextflow pipelines pulls the container using the default parameter apptainer.pullTimeout and runs correctly.
Documentation:The amount of time the Apptainer pull can last, exceeding which the process is terminated (default: 20 min).(https://www.nextflow.io/docs/stable/reference/config.html#config-apptainer) -
Actual behaviour: The nextflow pipeline crashes with the following message
Caused by: Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
Steps to reproduce the problem
main.nf
process hello {
container "community.wave.seqera.io/library/bcftools:1.2--90c7b6fdb96e230f"
output:
path("hello.txt"), emit: text
script:
"""
echo "hello" > hello.txt
"""
}
workflow {
file = hello()
}nextflow.config
apptainer {
enabled = true
cacheDir = "work/singularity/"
}
command
nextflow run main.nf -c nextflow.config
Program output
N E X T F L O W ~ version 25.10.0
Launching `main.nf` [drunk_fourier] DSL2 - revision: 3c3f6a6691
Pulling Apptainer image docker://community.wave.seqera.io/library/bcftools:1.2--90c7b6fdb96e230f [cache /Users/user/DPulling Apptainer image docker://community.wave.seqera.io/library/bcftools:1.2--90c7b6fdb96e230f [cache /Users/user/nextflow/failure/work/singularity/community.wave.seqera.io-library-bcftools-1.2--90c7b6fdb96e230f.img]
ERROR ~ Error executing process > 'hello'
Caused by:
Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
-- Check '.nextflow.log' file for details
Oct-28 11:03:23.724 [main] DEBUG nextflow.cli.Launcher - $> nextflow -c nextflow.config run main.nf
Oct-28 11:03:23.757 [main] DEBUG nextflow.cli.CmdRun - N E X T F L O W ~ version 25.10.0
Oct-28 11:03:24.236 [main] DEBUG nextflow.config.ConfigBuilder - Found config local: /Users/user/nextflow/failure/nextflow.config
Oct-28 11:03:24.238 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /Users/user/nextflow/failure/nextflow.config
Oct-28 11:03:24.239 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /Users/user/nextflow/failure/nextflow.config
Oct-28 11:03:24.239 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /Users/user/nextflow/failure/nextflow.config
Oct-28 11:03:24.253 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard`
Oct-28 11:03:24.441 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard`
Oct-28 11:03:24.463 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/Users/user/.nextflow/plugins; core-plugins: nf-amazon@3.4.1,nf-azure@1.20.2,nf-cloudcache@0.5.0,nf-codecommit@0.5.0,nf-console@1.3.0,nf-google@1.23.3,nf-k8s@1.2.2,nf-tower@1.17.1,nf-wave@1.16.1
Oct-28 11:03:24.471 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
Oct-28 11:03:24.472 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
Oct-28 11:03:24.473 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode
Oct-28 11:03:24.483 [main] DEBUG nextflow.util.RetryConfig - Missing nextflow session - using default retry config
Oct-28 11:03:24.574 [main] INFO org.pf4j.AbstractPluginManager - No plugins
Oct-28 11:03:24.574 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[]
Oct-28 11:03:24.574 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[]
Oct-28 11:03:24.584 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /Users/user/.nextflow/secrets/store.json
Oct-28 11:03:24.586 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@6aa3bfc] - activable => nextflow.secret.LocalSecretsProvider@6aa3bfc
Oct-28 11:03:24.591 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 by global default
Oct-28 11:03:24.598 [main] DEBUG nextflow.cli.CmdRun - Launching `main.nf` [drunk_fourier] DSL2 - revision: 3c3f6a6691
Oct-28 11:03:24.623 [main] DEBUG nextflow.Session - Session UUID: 5cd61535-fdb9-49f4-9f35-d4ad1d420573
Oct-28 11:03:24.623 [main] DEBUG nextflow.Session - Run name: drunk_fourier
Oct-28 11:03:24.623 [main] DEBUG nextflow.Session - Executor pool size: 12
Oct-28 11:03:24.628 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null
Oct-28 11:03:24.630 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=36; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false
Oct-28 11:03:25.086 [main] DEBUG nextflow.cli.CmdRun -
Version: 25.10.0 build 10289
Created: 22-10-2025 16:26 UTC (18:26 CEST)
System: Mac OS X 26.0.1
Runtime: Groovy 4.0.28 on OpenJDK 64-Bit Server VM 23.0.2+7
Encoding: UTF-8 (UTF-8)
Process: 3684@users-MacBook-Pro.local [127.0.0.1]
CPUs: 12 - Mem: 36 GB (14.7 GB) - Swap: 0 (0)
Oct-28 11:03:25.100 [main] DEBUG nextflow.Session - Work-dir: /Users/user/nextflow/failure/work [Mac OS X]
Oct-28 11:03:25.100 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /Users/user/nextflow/failure/bin
Oct-28 11:03:25.107 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[]
Oct-28 11:03:25.112 [main] DEBUG nextflow.Session - Observer factory (v2): LinObserverFactory
Oct-28 11:03:25.113 [main] DEBUG nextflow.Session - Observer factory (v2): DefaultObserverFactory
Oct-28 11:03:25.130 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory
Oct-28 11:03:25.135 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 13; maxThreads: 1000
Oct-28 11:03:25.163 [main] DEBUG nextflow.Session - Session start
Oct-28 11:03:25.248 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution
Oct-28 11:03:25.285 [main] DEBUG nextflow.executor.ExecutorFactory - << taskConfig executor: null
Oct-28 11:03:25.285 [main] DEBUG nextflow.executor.ExecutorFactory - >> processorType: 'local'
Oct-28 11:03:25.290 [main] DEBUG nextflow.executor.Executor - [warm up] executor > local
Oct-28 11:03:25.293 [main] DEBUG n.processor.LocalPollingMonitor - Creating local task monitor for executor 'local' > cpus=12; memory=36 GB; capacity=12; pollInterval=100ms; dumpInterval=5m
Oct-28 11:03:25.294 [main] DEBUG n.processor.TaskPollingMonitor - >>> barrier register (monitor: local)
Oct-28 11:03:25.304 [main] DEBUG nextflow.processor.TaskProcessor - Creating process 'hello': maxForks=0; fair=false; array=0
Oct-28 11:03:25.324 [main] DEBUG nextflow.Session - Workflow process names [dsl2]: hello
Oct-28 11:03:25.325 [main] DEBUG nextflow.Session - Igniting dataflow network (1)
Oct-28 11:03:25.325 [main] DEBUG nextflow.processor.TaskProcessor - Starting process > hello
Oct-28 11:03:25.325 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files:
Script_1ff0da7547f92f24: /Users/user/nextflow/failure/main.nf
Oct-28 11:03:25.325 [main] DEBUG nextflow.script.ScriptRunner - > Awaiting termination
Oct-28 11:03:25.325 [main] DEBUG nextflow.Session - Session await
Oct-28 11:03:25.362 [Actor Thread 5] INFO nextflow.container.SingularityCache - Pulling Apptainer image docker://community.wave.seqera.io/library/bcftools:1.2--90c7b6fdb96e230f [cache /Users/user/nextflow/failure/work/singularity/community.wave.seqera.io-library-bcftools-1.2--90c7b6fdb96e230f.img]
Oct-28 11:03:25.365 [Actor Thread 3] DEBUG nextflow.processor.TaskProcessor - Handling unexpected condition for
task: name=hello; work-dir=null
error [java.lang.IllegalStateException]: java.lang.NullPointerException: Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
Oct-28 11:03:25.369 [Actor Thread 3] ERROR nextflow.processor.TaskProcessor - Error executing process > 'hello'
Caused by:
Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
java.lang.IllegalStateException: java.lang.NullPointerException: Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
at nextflow.container.SingularityCache.getCachePathFor(SingularityCache.groovy:354)
at nextflow.container.ContainerHandler.createApptainerCache(ContainerHandler.groovy:110)
at nextflow.container.ContainerHandler.normalizeImageName(ContainerHandler.groovy:84)
at nextflow.container.resolver.DefaultContainerResolver.resolveImage0(DefaultContainerResolver.groovy:68)
at nextflow.container.resolver.DefaultContainerResolver.resolveImage(DefaultContainerResolver.groovy:61)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskRun.containerInfo0(TaskRun.groovy:722)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1339)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1094)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:97)
at nextflow.processor.TaskRun.this$dist$invoke$1(TaskRun.groovy)
at nextflow.processor.TaskRun$3.methodMissing(TaskRun.groovy)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:924)
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1419)
at groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1341)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1094)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskRun$3.apply(TaskRun.groovy:703)
at nextflow.processor.TaskRun$3.apply(TaskRun.groovy)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1713)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskRun.containerInfo(TaskRun.groovy:700)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskRun.getContainer(TaskRun.groovy:734)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskRun.isContainerEnabled(TaskRun.groovy:800)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskProcessor.createTaskHashKey(TaskProcessor.groovy:2031)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.processor.TaskProcessor.invokeTask(TaskProcessor.groovy:687)
at nextflow.processor.InvokeTaskAdapter.call(InvokeTaskAdapter.groovy:52)
at groovyx.gpars.dataflow.operator.DataflowOperatorActor.startTask(DataflowOperatorActor.java:120)
at groovyx.gpars.dataflow.operator.ForkingDataflowOperatorActor.access$001(ForkingDataflowOperatorActor.java:35)
at groovyx.gpars.dataflow.operator.ForkingDataflowOperatorActor$1.run(ForkingDataflowOperatorActor.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1575)
Caused by: java.lang.NullPointerException: Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
at nextflow.container.SingularityCache.runCommand(SingularityCache.groovy:292)
at nextflow.container.SingularityCache.downloadContainerImage0(SingularityCache.groovy:273)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1339)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1094)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:645)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:628)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:82)
at nextflow.container.SingularityCache$_downloadContainerImage_closure1.doCall(SingularityCache.groovy:241)
at nextflow.container.SingularityCache$_downloadContainerImage_closure1.call(SingularityCache.groovy)
at nextflow.file.FileMutex.lock(FileMutex.groovy:106)
at nextflow.container.SingularityCache.downloadContainerImage(SingularityCache.groovy:241)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1339)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1094)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:645)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:628)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethodSafe(InvokerHelper.java:82)
at nextflow.container.SingularityCache$_getLazyImagePath_closure2.doCall(SingularityCache.groovy:331)
at nextflow.container.SingularityCache$_getLazyImagePath_closure2.call(SingularityCache.groovy)
at groovyx.gpars.dataflow.LazyDataflowVariable$1.run(LazyDataflowVariable.java:70)
... 3 common frames omitted
Oct-28 11:03:25.371 [Actor Thread 3] DEBUG nextflow.Session - Session aborted -- Cause: java.lang.NullPointerException: Cannot invoke "nextflow.util.Duration.toMillis()" because "this.pullTimeout" is null
Oct-28 11:03:25.377 [Actor Thread 3] DEBUG nextflow.Session - The following nodes are still active:
[process] hello
status=ACTIVE
port 0: (cntrl) - ; channel: $
Oct-28 11:03:25.382 [Actor Thread 3] DEBUG n.trace.WorkflowStatsObserver - Workflow completed > WorkflowStats[succeededCount=0; failedCount=0; ignoredCount=0; cachedCount=0; pendingCount=0; submittedCount=0; runningCount=0; retriesCount=0; abortedCount=0; succeedDuration=0ms; failedDuration=0ms; cachedDuration=0ms;loadCpus=0; loadMemory=0; peakRunning=0; peakCpus=0; peakMemory=0; ]
Oct-28 11:03:25.400 [Task monitor] DEBUG n.processor.TaskPollingMonitor - <<< barrier arrives (monitor: local) - terminating tasks monitor poll loop
Oct-28 11:03:25.587 [main] DEBUG nextflow.Session - Session await > all processes finished
Oct-28 11:03:25.587 [main] DEBUG nextflow.Session - Session await > all barriers passed
Oct-28 11:03:25.588 [main] DEBUG n.trace.WorkflowStatsObserver - Workflow completed > WorkflowStats[succeededCount=0; failedCount=0; ignoredCount=0; cachedCount=0; pendingCount=0; submittedCount=0; runningCount=0; retriesCount=0; abortedCount=0; succeedDuration=0ms; failedDuration=0ms; cachedDuration=0ms;loadCpus=0; loadMemory=0; peakRunning=0; peakCpus=0; peakMemory=0; ]
Oct-28 11:03:25.590 [Actor Thread 1] DEBUG nextflow.processor.TaskProcessor - Handling unexpected condition for
task: name=hello; work-dir=null
error [java.lang.InterruptedException]: java.lang.InterruptedException
Oct-28 11:03:25.596 [main] DEBUG nextflow.cache.CacheDB - Closing CacheDB done
Oct-28 11:03:25.607 [main] DEBUG nextflow.script.ScriptRunner - > Execution complete -- Goodbye
Environment
- Nextflow version: 25.10.0
- Java version: openjdk 23.0.2 2025-01-21
- Operating system: [macOS and Linux]
- Bash version:
zsh 5.9 (arm64-apple-darwin25.0)andGNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)
Additional context
apptainer version 1.4.0
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels