load_checkpoint() doesn't handle missing 'session' file

Bug #1272762 reported by Sylvain Pineau
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
PlainBox (Toolkit)
Fix Released
High
Zygmunt Krynicki

Bug Description

This happened to piotr while testing the provider packages:

plainbox run -i esata/storage-test
===============================[ Analyzing Jobs ]===============================
Do you want to resume the previous session? [y, n] n
Estimated duration cannot be determined for automated jobs.
Estimated duration cannot be determined for manual jobs.
===============================[ Authentication ]===============================
==============================[ Running All Jobs ]==============================
--------------------------------[ esata/insert ]--------------------------------
PURPOSE:
    This test will check the system can detect the insertion of an eSATA HDD
STEPS:
    1. Click 'Test' to begin the test. This test will
       timeout and fail if the insertion has not been detected within 20 seconds.
    2. Plug an eSATA HDD into an available eSATA port.
VERIFICATION:
    The verification of this test is automated. Do not change the automatically
    selected result
^^^^^^^^^^^^^^^^^^^

Running... (output in /home/piotr/.cache/plainbox/sessions/pbox-0yrvd9.session/io-logs/esata_insert.*)
(job esata/insert, <stdout:00001>) You have failed to perform the required manipulation in time
CRITICAL plainbox.crashes: Executable 'plainbox' invoked with Namespace(checkbox=None, command=<plainbox.impl.commands.run.RunCommand object at 0x7f1ce40e5b10>, debug_console=False, debug_interrupt=False, dry_run=False, exclude_pattern_list=[], include_pattern_list=['esata/storage-test'], log_level=None, not_interactive=False, output_file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>, output_format='text', output_options='', pdb=False, trace=[], transport=None, transport_options=None, transport_where=None, whitelist=None) has crashed
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/__init__.py", line 357, in dispatch_and_catch_exceptions
    return self.dispatch_command(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/__init__.py", line 353, in dispatch_command
    return ns.command.invoked(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 380, in invoked
    return RunInvocation(self.provider_list, self.config, ns).run()
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 87, in run
    return self._run_jobs(ns, job_list, exporter, transport)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 201, in _run_jobs
    self._run_jobs_with_session(ns, session, runner)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 321, in _run_jobs_with_session
    self._run_single_job_with_session(ns, session, runner, job)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 361, in _run_single_job_with_session
    session.persistent_save()
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/legacy.py", line 272, in persistent_save
    self.manager.checkpoint()
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/manager.py", line 236, in checkpoint
    self.storage.save_checkpoint(data)
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/storage.py", line 349, in save_checkpoint
    return self._save_checkpoint_unix_py33(data)
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/storage.py", line 532, in _save_checkpoint_unix_py33
    location_fd = os.open(self._location, os.O_DIRECTORY)
FileNotFoundError: [Errno 2] No such file or directory: '/home/piotr/.cache/plainbox/sessions/pbox-0yrvd9.session'
Traceback (most recent call last):
  File "/usr/bin/plainbox", line 9, in <module>
    load_entry_point('plainbox==0.4', 'console_scripts', 'plainbox')()
  File "/usr/lib/python3/dist-packages/plainbox/impl/__init__.py", line 82, in call_impl
    return impl(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/plainbox/impl/box.py", line 88, in main
    raise SystemExit(PlainBoxTool().main(argv))
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/__init__.py", line 148, in main
    return self.dispatch_and_catch_exceptions(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/__init__.py", line 357, in dispatch_and_catch_exceptions
    return self.dispatch_command(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/__init__.py", line 353, in dispatch_command
    return ns.command.invoked(ns)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 380, in invoked
    return RunInvocation(self.provider_list, self.config, ns).run()
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 87, in run
    return self._run_jobs(ns, job_list, exporter, transport)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 201, in _run_jobs
    self._run_jobs_with_session(ns, session, runner)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 321, in _run_jobs_with_session
    self._run_single_job_with_session(ns, session, runner, job)
  File "/usr/lib/python3/dist-packages/plainbox/impl/commands/run.py", line 361, in _run_single_job_with_session
    session.persistent_save()
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/legacy.py", line 272, in persistent_save
    self.manager.checkpoint()
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/manager.py", line 236, in checkpoint
    self.storage.save_checkpoint(data)
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/storage.py", line 349, in save_checkpoint
    return self._save_checkpoint_unix_py33(data)
  File "/usr/lib/python3/dist-packages/plainbox/impl/session/storage.py", line 532, in _save_checkpoint_unix_py33
    location_fd = os.open(self._location, os.O_DIRECTORY)
FileNotFoundError: [Errno 2] No such file or directory: '/home/piotr/.cache/plainbox/sessions/pbox-0yrvd9.session'

Related branches

Changed in checkbox:
assignee: nobody → Zygmunt Krynicki (zkrynicki)
Zygmunt Krynicki (zyga)
Changed in checkbox:
milestone: none → plainbox-0.6
Zygmunt Krynicki (zyga)
Changed in plainbox:
milestone: none → 0.6
assignee: nobody → Zygmunt Krynicki (zkrynicki)
importance: Undecided → High
Zygmunt Krynicki (zyga)
Changed in checkbox:
milestone: plainbox-0.6 → none
Zygmunt Krynicki (zyga)
no longer affects: checkbox
Zygmunt Krynicki (zyga)
tags: removed: plainbox
Zygmunt Krynicki (zyga)
Changed in plainbox:
status: New → Confirmed
status: Confirmed → In Progress
summary: - session file not found
+ load_checkpoint() doesn't handle missing 'session' file
Zygmunt Krynicki (zyga)
Changed in plainbox:
status: In Progress → Fix Committed
Changed in plainbox:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.