Deleting jobs from the database can still sometimes cause consistency
errors, as if foreign key constraints aren't enabled. This check is there
to try and get a grip on things.
When an API request comes in to delete a job, not only log the job's UUID,
but also include its database ID. This can help in figuring out database
issues, as when the job is deleted, it's unknown what UUID it had. Database
relations use the ID, and not the UUID.
Just as a safety measure, before deleting a job, check that foreign key
constraints are enabled. These are optional in SQLite, and the deletion
function assumes that they are on.
This can help to debug issues.
Note that these are logged at `INFO` level, and thus probably won't be
seen with Python's default logging configuration.
Replace calls to `Path.absolute()` and `Path.resolve()` with
`bpathlib.make_absolute(path)`.
The replaced functions can transform drive letters on Windows to UNC
notation. Either all of Flamenco + BAT should be using UNC notation, or
drive letters, but mixing those will cause errors.
Fix an issue where a submission error would keep the BAT status set to
`INVESTIGATING`, which hides the 'Submit to Flamenco' button. In case of
an error, it's now properly set to `ABORTED`, which does show that button.
When refreshing the list of available job types, Blender recreates the
job type property itself, clearing out any previously chosen value. The
add-on tries to restore that previously chosen value, and now also
gracefully handles the case where this job type is no longer available.
Log any CLI command that's run in a way that can be easily copy-pasted
from the task log. This can help a lot in determining whether an issue
is caused by Flamenco or by the CLI program itself.
Rename the file containing the command executor from `command_exe.go` to
`cmd_executor.go`), to distinguish it from the implementation of the
`exec` command (`command_exec.go`).
No functional changes.
Implement the API function to mass-mark jobs for deletion, based on
their 'updated_at' timestamp.
Note that the `last_updated_max` parameter is rounded up to entire
seconds. This may mark more jobs for deletion than you expect, if their
`updated_at` timestamps differ by less than a second.
Reorder from name/type/priority/updated to name/updated/priority/type.
The new ordering moves the more important info into (according to Blender
Studio) view when the job table is narrow.
GORM Automigration created a separate `job_storage_infos` table (because
we used it wrong, to be fair), which is actually only used as an
embedded struct in the `jobs` table. This means this table itself can be
dropped.
Replace GORM's auto-migration with Goose. The latter uses hand-written
SQL queries to apply database schema changes, which is safer and easier to
understand than what GORM is doing.
Now the Worker and the Manager share the same database initialisation
code (enabling foreign key constraints + write-ahead logging).
The foreign key constraints were already enabled before, but now it's done
with (a copy of) the same code as the Manager.
The tests were already made timezone-independent, but in a way that assumed
the day would still be the same and only the time would be different.
Now that assumption is removed as well.
- Describe how to enable/disable the Shaman in more detail,
- adjust the link to Stack Exchange w.r.t. SAMBA & symlinks, and
- include a table of contents at the top of the page.