Skip to content

Commit 2cd2b07

Browse files
[close #435] SimpleDateFormat is not threadsafe (#479)
1 parent a0ef75d commit 2cd2b07

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

src/main/java/org/tikv/common/log/SlowLogImpl.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ public class SlowLogImpl implements SlowLog {
3232

3333
private static final int MAX_SPAN_SIZE = 1024;
3434

35-
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS");
36-
3735
private final List<SlowLogSpan> slowLogSpans = new ArrayList<>();
3836
private Throwable error = null;
3937

@@ -85,10 +83,11 @@ public void log() {
8583
}
8684

8785
private String getSlowLogString(long currentMS) {
86+
SimpleDateFormat dateFormat = getSimpleDateFormat();
8887
JsonObject jsonObject = new JsonObject();
8988

90-
jsonObject.addProperty("start", DATE_FORMAT.format(startMS));
91-
jsonObject.addProperty("end", DATE_FORMAT.format(currentMS));
89+
jsonObject.addProperty("start", dateFormat.format(startMS));
90+
jsonObject.addProperty("end", dateFormat.format(currentMS));
9291
jsonObject.addProperty("duration", (currentMS - startMS) + "ms");
9392
if (error != null) {
9493
jsonObject.addProperty("error", error.getMessage());
@@ -106,4 +105,8 @@ private String getSlowLogString(long currentMS) {
106105

107106
return jsonObject.toString();
108107
}
108+
109+
public static SimpleDateFormat getSimpleDateFormat() {
110+
return new SimpleDateFormat("HH:mm:ss.SSS");
111+
}
109112
}

src/main/java/org/tikv/common/log/SlowLogSpanImpl.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717

1818
package org.tikv.common.log;
1919

20-
import static org.tikv.common.log.SlowLogImpl.DATE_FORMAT;
20+
import static org.tikv.common.log.SlowLogImpl.getSimpleDateFormat;
2121

2222
import com.google.gson.JsonElement;
2323
import com.google.gson.JsonObject;
24+
import java.text.SimpleDateFormat;
2425

2526
public class SlowLogSpanImpl implements SlowLogSpan {
2627
private final String name;
@@ -60,27 +61,28 @@ public void end() {
6061

6162
@Override
6263
public JsonElement toJsonElement() {
64+
SimpleDateFormat simpleDateFormat = getSimpleDateFormat();
6365
JsonObject jsonObject = new JsonObject();
6466
jsonObject.addProperty("name", name);
65-
jsonObject.addProperty("start", getStartString());
66-
jsonObject.addProperty("end", getEndString());
67+
jsonObject.addProperty("start", getStartString(simpleDateFormat));
68+
jsonObject.addProperty("end", getEndString(simpleDateFormat));
6769
jsonObject.addProperty("duration", getDurationString());
6870

6971
return jsonObject;
7072
}
7173

72-
private String getStartString() {
74+
private String getStartString(SimpleDateFormat simpleDateFormat) {
7375
if (startMS == 0) {
7476
return "N/A";
7577
}
76-
return DATE_FORMAT.format(startMS);
78+
return simpleDateFormat.format(startMS);
7779
}
7880

79-
private String getEndString() {
81+
private String getEndString(SimpleDateFormat simpleDateFormat) {
8082
if (endMS == 0) {
8183
return "N/A";
8284
}
83-
return DATE_FORMAT.format(endMS);
85+
return simpleDateFormat.format(endMS);
8486
}
8587

8688
private String getDurationString() {

0 commit comments

Comments
 (0)