Skip to content

[Windows] Wizard shows "Process complete" after a crash/force-kill, even though results are silently partial and no Review case was ever created #595

Description

@Mahathi1207

Summary

Force-killing the Player mid-Process (simulating a crash, power loss, or forced restart) leaves
results silently incomplete and no case ever created in Review — but reopening the project shows
the wizard as fully complete, identical to a genuinely successful run. There's no persisted
completion flag; the wizard only checks whether the results folder is non-empty.

Environment

  • Build: 10.8.5 / g9e5ca51+ / 2026-07-27 02:01 UTC (confirmed via git diff that the
    relevant file, FreeEedUI.java, is unchanged through current dev HEAD — not build-dependent)
  • Windows: Windows 11 Home (local machine) | Clean install? No
  • Severity: Major — not a blocker on the happy path (only triggers after an interruption),
    but silently misrepresents incomplete/inaccessible results as fully successful. Same class of
    issue as the PST silent-data-loss bug already fixed in d7d5bdd7.

Steps to Reproduce

  1. Create a new project with a reasonably large input (e.g. test-data\02-loose-files, 122 files).
  2. Click Process.
  3. While it's actively processing (partway through), force-kill the Java process running the
    Player — simulating a crash, power loss, or forced restart.
  4. Reopen FreeEed and open that same project.

Expected vs Actual

Expected: The wizard should reflect that processing was interrupted — "Process" should not
show as complete, and/or there should be a clear indication that results are partial/unreliable,
ideally with a way to resume or re-run.

Actual: All five steps (Project → Inventory → Stage → Process → Review) show as fully
complete with green checkmarks. In this repro, only 25 of 122 input files had actually been
processed (confirmed via metadata1.csv row count and native1.zip size) before the kill, and
no case was ever created in the Review app at all — so the "completed" results aren't even
accessible through Review. A user reopening a crashed project has no indication anything went
wrong.

Root Cause

FreeEedUI.getCurrentStep() (freeeed-processing/src/main/java/org/freeeed/ui/FreeEedUI.java,
lines 824-840) determines step completion purely by checking whether the results folder is
non-empty:

String resultsDir = project.getResultsDir();
if (resultsDir == null) return 3;
File resultsFolder = new File(resultsDir);
if (!resultsFolder.exists() || resultsFolder.list() == null || resultsFolder.list().length == 0) return 3;
return 4;   // "Process" shown as complete

Since native1.zip/metadata1.csv are created right at the start of processing (before the
per-file loop begins), this check passes the instant a single file has been written, regardless
of how much of the batch actually finished.

Evidence

  • FreeEed.log: staging completed normally, "Processing project: qa-test-crash" logged, then
    nothing further — confirming the kill landed very early, with no completion or exception trace
    after it, and no "Creating new case in FreeEed UI" line (present in every normal run).
  • Screenshots:
  1. Player's Welcome screen showing all 5 green checkmarks after reopening the crashed
    project
Image
  1. Cases list showing no entry for this project at all.
Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions