debian-forge/osbuild
Michael Vogt 035781ea1c osbuild: add a mutex to the _jsonseq() writer
This commit fixes a race/threading issue with the way the monitor
works. The osbuild monitor can be called from multiple threads,
e.g. in buildroot.py:run() monitor.log() is called but also
in host.py:_stdout_ready(). This can lead to out-of-order writes
when many messages need to be processed.

We did not notice this so far because we were lucky and also
log was just used for information. But now it is used to transmit
the jsonseq data which means out-of-order communication results
in broken json.

Closes: https://github.com/osbuild/image-builder-cli/issues/110
2025-01-30 20:08:53 +01:00
..
formats Add support for using librepo to download packages 2025-01-14 08:19:16 +01:00
solver depsolve: remove nevra field 2025-01-23 20:07:12 +01:00
testutil Testutil: add DNF5 helper function for depsolving 2024-12-02 23:24:39 +01:00
util util/path: add join_abs() to join potentially absolute paths 2025-01-06 11:53:46 -08:00
__init__.py Post release version bump 2025-01-29 08:30:14 +00:00
__main__.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00
api.py Fix errors reported by new version of mypy 2023-04-12 11:57:18 +02:00
buildroot.py osbuild: make the entire /etc/selinux avaialble for the buildroot 2024-03-22 11:24:35 +01:00
devices.py osbuild: error when {Device,Mount} is modified after creation 2024-01-19 02:54:26 +01:00
host.py tox: add tox 2023-08-01 15:01:13 +02:00
inputs.py jsoncomm: transparently handle huge messages via fds 2024-09-17 19:27:03 +02:00
loop.py devices/loopback: add read-only option 2024-09-18 08:54:34 +02:00
main_cli.py osbuild/cli: prefer --cache over --store 2025-01-21 11:35:16 +01:00
meta.py meta: use pathlib to join paths in class Index 2024-10-17 08:55:18 +02:00
mixins.py osbuild: error when {Device,Mount} is modified after creation 2024-01-19 02:54:26 +01:00
monitor.py osbuild: add a mutex to the _jsonseq() writer 2025-01-30 20:08:53 +01:00
mounts.py mounts/ostree.deployment: support deployments on mount 2024-01-31 16:46:01 -05:00
objectstore.py objectstore: add new skip_preserve_owner to Object.export() 2023-12-20 09:28:39 +01:00
pipeline.py osbuild: tweak build() to be mypy clean 2025-01-14 14:33:28 +01:00
remoteloop.py osbuild/remoteloop: add more loop device options 2024-12-04 16:30:55 +01:00
sources.py jsoncomm: transparently handle huge messages via fds 2024-09-17 19:27:03 +02:00