diff --git a/core/src/main/java/hudson/slaves/SlaveComputer.java b/core/src/main/java/hudson/slaves/SlaveComputer.java index cc1f5cdaa9..c6d1c56019 100644 --- a/core/src/main/java/hudson/slaves/SlaveComputer.java +++ b/core/src/main/java/hudson/slaves/SlaveComputer.java @@ -1020,12 +1020,12 @@ public class SlaveComputer extends Computer { public Void call() { SLAVE_LOG_HANDLER = new RingBufferLogHandler(ringBufferSize) { - Formatter dummy = new SimpleFormatter(); + ThreadLocal dummy = ThreadLocal.withInitial(() -> new SimpleFormatter()); @Override - public synchronized void publish(LogRecord record) { + public /* not synchronized */ void publish(LogRecord record) { // see LogRecord.writeObject for dangers of serializing non-String/null parameters if (record.getMessage() != null && record.getParameters() != null && Stream.of(record.getParameters()).anyMatch(p -> p != null && !(p instanceof String))) { - record.setMessage(dummy.formatMessage(record)); + record.setMessage(dummy.get().formatMessage(record)); record.setParameters(null); } super.publish(record);