diff --git a/src/main/java/org/tikv/common/log/SlowLogImpl.java b/src/main/java/org/tikv/common/log/SlowLogImpl.java index f8f92c568a..c6efcf457a 100644 --- a/src/main/java/org/tikv/common/log/SlowLogImpl.java +++ b/src/main/java/org/tikv/common/log/SlowLogImpl.java @@ -83,6 +83,7 @@ public class SlowLogImpl implements SlowLog { @Override public void log() { + recordTime(); if (error != null || timeExceeded()) { SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss.SSS"); logger.warn( @@ -95,9 +96,12 @@ public class SlowLogImpl implements SlowLog { } } - boolean timeExceeded() { + private void recordTime() { long currentNS = System.nanoTime(); durationMS = (currentNS - startNS) / 1_000_000; + } + + boolean timeExceeded() { return slowThresholdMS >= 0 && durationMS > slowThresholdMS; } diff --git a/src/test/java/org/tikv/common/log/SlowLogImplTest.java b/src/test/java/org/tikv/common/log/SlowLogImplTest.java index 004df5cf8a..23f103575b 100644 --- a/src/test/java/org/tikv/common/log/SlowLogImplTest.java +++ b/src/test/java/org/tikv/common/log/SlowLogImplTest.java @@ -28,10 +28,17 @@ public class SlowLogImplTest { public void testThresholdTime() throws InterruptedException { SlowLogImpl slowLog = new SlowLogImpl(1000); Thread.sleep(1100); + slowLog.log(); Assert.assertTrue(slowLog.timeExceeded()); slowLog = new SlowLogImpl(1000); Thread.sleep(500); + slowLog.log(); + Assert.assertFalse(slowLog.timeExceeded()); + + slowLog = new SlowLogImpl(-1); + Thread.sleep(500); + slowLog.log(); Assert.assertFalse(slowLog.timeExceeded()); }