From 82717fdd85313725cc3c21dfc006e76620582539 Mon Sep 17 00:00:00 2001 From: rusher Date: Tue, 17 Mar 2020 16:28:56 +0100 Subject: [PATCH] [misc] ensure tracktrace results --- .../jdbc/internal/io/LruTraceCache.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/mariadb/jdbc/internal/io/LruTraceCache.java b/src/main/java/org/mariadb/jdbc/internal/io/LruTraceCache.java index e2ec93aa1..8af4f2f07 100644 --- a/src/main/java/org/mariadb/jdbc/internal/io/LruTraceCache.java +++ b/src/main/java/org/mariadb/jdbc/internal/io/LruTraceCache.java @@ -91,7 +91,7 @@ protected boolean removeEldestEntry(Map.Entry eldest) { * * @return trace cache value */ - public String printStack() { + public synchronized String printStack() { StringBuilder sb = new StringBuilder(); boolean finished = false; while (!finished) { @@ -99,27 +99,29 @@ public String printStack() { Map.Entry[] arr = entrySet().toArray(new Map.Entry[0]); for (Map.Entry entry : arr) { TraceObject traceObj = entry.getValue(); - String key = entry.getKey(); - String indicator = ""; + if (traceObj.getBuf() != null) { + String key = entry.getKey(); + String indicator = ""; - switch (traceObj.getIndicatorFlag()) { - case TraceObject.COMPRESSED_PROTOCOL_NOT_COMPRESSED_PACKET: - indicator = " (compressed protocol - packet not compressed)"; - break; - case TraceObject.COMPRESSED_PROTOCOL_COMPRESSED_PACKET: - indicator = " (compressed protocol - packet compressed)"; - break; - default: - break; - } - sb.append("\nthread:").append(traceObj.getThreadId()); - if (traceObj.isSend()) { - sb.append(" send at -exchange:"); - } else { - sb.append(" read at -exchange:"); - } + switch (traceObj.getIndicatorFlag()) { + case TraceObject.COMPRESSED_PROTOCOL_NOT_COMPRESSED_PACKET: + indicator = " (compressed protocol - packet not compressed)"; + break; + case TraceObject.COMPRESSED_PROTOCOL_COMPRESSED_PACKET: + indicator = " (compressed protocol - packet compressed)"; + break; + default: + break; + } + sb.append("\nthread:").append(traceObj.getThreadId()); + if (traceObj.isSend()) { + sb.append(" send at -exchange:"); + } else { + sb.append(" read at -exchange:"); + } - sb.append(key).append(indicator).append(Utils.hexdump(traceObj.getBuf())); + sb.append(key).append(indicator).append(Utils.hexdump(traceObj.getBuf())); + } } finished = true; } catch (ConcurrentModificationException cc) {