Erreur Snakemake

Bonjour,
j'ai une erreur avec snakemake qui est apparue jeudi 25 (mes jobs marchaient à 15h51 et plus à 16h31, je n'ai a priori rien changé entre temps, je travaillais déjà avec snakemake 5.19.2).

Traceback (most recent call last):
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/__init__.py", line 626, in snakemake
    success = workflow.execute(
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/workflow.py", line 658, in execute
    dag.check_incomplete()
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/dag.py", line 291, in check_incomplete
    incomplete = self.incomplete_files
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/dag.py", line 410, in incomplete_files
    chain(
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/dag.py", line 411, in <genexpr>
    *(
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/persistence.py", line 209, in incomplete
    return any(map(lambda f: f.exists and marked_incomplete(f), job.output))
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/persistence.py", line 209, in <lambda>
    return any(map(lambda f: f.exists and marked_incomplete(f), job.output))
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/persistence.py", line 207, in marked_incomplete
    return self._read_record(self._metadata_path, f).get("incomplete", False)
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/persistence.py", line 326, in _read_record_cached
    return self._read_record_uncached(subject, id)
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/site-packages/snakemake/persistence.py", line 332, in _read_record_uncached
    return json.load(f)
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/json/__init__.py", line 293, in load
    return loads(fp.read(),
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/shared/mfs/data/software/miniconda/envs/snakemake-5.19.2/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Une idée??
Merci d'avance!

Magali

Bonjour Magali,

Il n'y a pas eu de mise à jour des outils (https://gitlab.com/ifb-elixirfr/cluster/tools/-/commits/master/), ni d'intervention particulière à ce moment là.
Excepté les instabilités sur le stockage (très importante depuis Jeudi) qui peuvent expliquer cette erreur (l'erreur renvoyé, pas toujours explicite, semble indiquer une erreur lors de la lecture).

Avez-vous relancer ce type de job et est-ce qu'il ne fonctionne toujours pas ?

Bonne journée

Merci de votre réponse. Dans ce cas, ça vient de mon code... J'y replonge immédiatement!

Je suis tombé la dessus après avoir eu littéralement le même message d'erreur.
Ce message est lié à la création de fichier incomplet pour cause de manque d'espace.
Dans ces cas là l'option --rerun-incomplete ne marche pas, ni le run normal de snakemake.
La solution est de soit trouver le fichier incomplet et le supprimer, soit de lancer l'option --ignore-incomplete.

Si jamais ça peut aider, ça vous évitera de vous arracher les cheveux si vous aussi vous tombez sur cette réponse :slight_smile:

Merci pour cette réponse!!
A vrai dire mes jobs ont recommencé à marcher quelques jours plus tard sans que je comprenne trop pourquoi... Peut-être après avoir fait un peu de ménage effectivement!