提交 dd0a9640 编写于 作者: M Mark Waite 提交者: Oliver Gondža

Merge pull request #4714 from jglick/deadlock-JENKINS-62181

[JENKINS-62181] Deadlock during log formatting

(cherry picked from commit c2bd4fa0)
上级 9ddf41bc
......@@ -1020,12 +1020,12 @@ public class SlaveComputer extends Computer {
public Void call() {
SLAVE_LOG_HANDLER = new RingBufferLogHandler(ringBufferSize) {
Formatter dummy = new SimpleFormatter();
ThreadLocal<Formatter> 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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册