Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

LSF broken for runtimes given in HH:MM:SS format

Abierto
#703 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
65/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
hpc, python

Línea de trabajo

Comienza en el punto de entrada de LSFCluster e inspecciona cómo se pasa su valor de walltime al script de job generado. Compara los formatos de tiempo de ejecución aceptados con la documentación de LSF enlazada y con los ejemplos mostrados de 01:00:00 y de valores no válidos. Se considera terminado cuando las entradas válidas se gestionan adecuadamente y las entradas no válidas producen un resultado claro y accionable.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug LSF

I ran into a really strange issue all of a sudden which took me quite a while to figure out.

Turns out, I had changed from using a walltime="01:00" to a walltime of walltime="01:00:00". This is unexpected because SLURM supports the HH:MM:SS format and some of the documentation presents walltimes in this format.

Currently the walltime seems to be passed down directly to the generated jobscript.

Example

cluster = LSFCluster(
    queue="hpc",
    cores=4,
    memory="8GB",
    walltime="01:00:00",
)
client = Client(
    cluster,
)

Produces:

2026-07-28 16:09:26,984 - dask_jobqueue.lsf - DEBUG - Job script: 
 #!/usr/bin/env bash

#BSUB -J dask-worker
#BSUB -q hpc
#BSUB -n 4
#BSUB -R "span[hosts=1]"
#BSUB -M 8000
#BSUB -W 01:00:00

Indeed putting any string in there just gets directly interpolated into the jobscript (tested with 01:abc:00).

Unfortunately misconfiguration gives a very misleading error trace:


2026-07-28 16:17:22,553 - dask_jobqueue.core - DEBUG - Executing the following command to command line
bsub< /tmp/tmpbydzjudm.sh 2> /dev/null
2026-07-28 16:17:22,565 - tornado.application - ERROR - Exception in callback functools.partial(<bound method IOLoop._discard_future_result of <tornado.platform.asyncio.AsyncIOMainLoop object at 0x7f5e03c7afd0>>, <Task finished name='Task-98' coro=<SpecCluster._correct_state_internal() done, defined at /zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/distributed/deploy/spec.py:352> exception=RuntimeError('Command exited with non-zero exit code.\nExit code: 255\nCommand:\nbsub< /tmp/tmpbydzjudm.sh 2> /dev/null\nstdout:\n\nstderr:\n\n')>)
Traceback (most recent call last):
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/tornado/ioloop.py", line 758, in _run_callback
    ret = callback()
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/tornado/ioloop.py", line 782, in _discard_future_result
    future.result()
    ~~~~~~~~~~~~~^^
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/distributed/deploy/spec.py", line 396, in _correct_state_internal
    await asyncio.gather(*worker_futs)
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/asyncio/tasks.py", line 723, in _wrap_awaitable
    return await awaitable
           ^^^^^^^^^^^^^^^
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/distributed/deploy/spec.py", line 74, in _
    await self.start()
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/dask_jobqueue/core.py", line 426, in start
    out = await self._submit_job(fn)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/dask_jobqueue/lsf.py", line 111, in _submit_job
    return await self._call(piped_cmd, shell=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/zhome/1a/a/219376/Code/qim-naturarv3d-compression/.pixi/envs/default/lib/python3.14/site-packages/dask_jobqueue/core.py", line 514, in _call
    raise RuntimeError(
    ...<5 lines>...
    )
RuntimeError: Command exited with non-zero exit code.
Exit code: 255
Command:
bsub< /tmp/tmpbydzjudm.sh 2> /dev/null
stdout:

stderr:

Proposed solution

I think it would be nice if the runtime as parsed as a timedelta and then rendered into either HH:MM or just minutes for the LSFCluster specifically. Alternatively, just checking whether the format is HH:MM:SS for LSFCluster and raising an error that clearly explains this footgun would be a good solution as well.

If there is appetite and one of the solutions above is preferred, I would be happy to submit a PR for it.

Relevant LSF documentation: https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=o-w-1

Lenguaje dominante
Python
Estrellas
256
Forks
149
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dask/dask-jobqueue

Todos los issues de dask/dask-jobqueue

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.