1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-30 19:57:59 +02:00

JSONLogger: Acquire a lock to prevent log messages from clobbering each other

This commit is contained in:
Eelco Dolstra 2025-03-13 13:58:35 +01:00
parent 29a9e638c1
commit 1efccf34b1

View file

@ -6,6 +6,7 @@
#include "config-global.hh"
#include "source-path.hh"
#include "position.hh"
#include "sync.hh"
#include <atomic>
#include <sstream>
@ -192,11 +193,22 @@ struct JSONLogger : Logger {
unreachable();
}
struct State
{
};
Sync<State> _state;
void write(const nlohmann::json & json)
{
writeLine(fd,
auto line =
(includeNixPrefix ? "@nix " : "") +
json.dump(-1, ' ', false, nlohmann::json::error_handler_t::replace));
json.dump(-1, ' ', false, nlohmann::json::error_handler_t::replace);
/* Acquire a lock to prevent log messages from clobbering each
other. */
auto state(_state.lock());
writeLine(fd, line);
}
void log(Verbosity lvl, std::string_view s) override