On Windows an extra line "exec: Process pid=... exited with status code 0"
is reported after terminating the subprocess. This isn't relevant for
the `text_exec_invalid_utf` test, so the extra line is just ignored.
No functional changes.
When multiple versions of the same frame are generated (like EXR and
JPG), always report the most web-preview-friendly version.
In other words, when the frames are produces by Blender in the order
(`frame-001.jpg`, `frame-001.exr`), only the JPEG is reported. When the
JPEG follows the EXR, both will be reported as when the EXR is created
it is not yet know whether it will be followed by a JPEG or not.
Before this, the 2nd file would never be reported due to the Worker
throttling such reports to the Manager (to not swamp it when rendering
sequences of images, for example).
Panic when an older subprocess is already running when trying to start a
new subprocess. This situation was already detected, but instead of
failing the current task (and keeping the Worker running), the Worker
now shuts down completely. When running as a systemd service, the Worker
will automatically be restarted.
When this panic occurs, the Worker still signs off at the Manager,
causing its current task to be returned to the queue. That way another
Worker (or this one, after the restart) can retry it.
This is basically a hack to work around the issue that sometimes Blender
is running twice on the same machine.
When running Flamenco Worker from the distribution package, it actually
runs a bundled Python with its own libraries. This is done by setting the
`LD_LIBRARY_PATH` environment variable. Subprocesses inherit this variable,
causing library conflicts (mostly libz) when running Blender or FFmpeg.
Since it requires FFmpeg to be available to the Worker, it was disabled
by default. However, it's the only task type that was disabled by default,
and having everything on is probably easier for new installations.
Furthermore, the `blender-render` task type also requires external software
(namely Blender), but that wasn't disabled by default.
The `shutil.copy()` function calls `shutil.copyfile()` and
`shutil.copymode()`, and fails when either fails. By calling those
functions separately we can ignore errors copying the file mode (this
happens on SMB shares, for example).
See CVE-2019-11324.
The urllib3 library before 1.24.2 for Python mishandles certain cases
where the desired set of CA certificates is different from the OS store
of CA certificates, which results in SSL connections succeeding in
situations where a verification failure is the correct outcome. This is
related to use of the ssl_context, ca_certs, or ca_certs_dir argument.
To secure the previously-open-to-anyone worker registration on the Flamenco
Manager, we now have to send a JWT token that was signed by a pre-shared
secret. To enable this behaviour, set `worker_registration_secret` both
in the Worker and the Manager configuration files to the same string.
Blender's `--render-format` CLI parameter generally takes the same names
as the `bpy.context.scene.render.image_settings.file_format` DNA parameter,
except when it comes to OpenEXR.
See https://developer.blender.org/D4502 for a proposal to make this
consistent.