Browse Source

Use nanoTime replace currentTimemill to avoid clock backwards (#6740)

3.0.0/version-upgrade
Wenjun Ruan 3 years ago committed by GitHub
parent
commit
0f94577d26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java

5
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java

@ -35,6 +35,9 @@ public class SnowFlakeUtils {
private long sequence = 0L;
private long lastTimestamp = -1L;
private static final long SYSTEM_TIMESTAMP = System.currentTimeMillis();
private static final long SYSTEM_NANOTIME = System.nanoTime();
private SnowFlakeUtils() throws SnowFlakeException {
try {
this.machineId = Math.abs(Objects.hash(InetAddress.getLocalHost().getHostName())) % 32;
@ -80,7 +83,7 @@ public class SnowFlakeUtils {
}
private long nowTimestamp() {
return System.currentTimeMillis();
return SYSTEM_TIMESTAMP + (System.nanoTime() - SYSTEM_NANOTIME) / 1000000;
}
public static class SnowFlakeException extends Exception {

Loading…
Cancel
Save