This is an automated email from the ASF dual-hosted git repository.
leonbao pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new be28d2c [Bug][SnowFlakeUtils] fix snowFlake bug (#6744)
be28d2c is described below
commit be28d2c63bb9101a3525c1102ae1a8e91f1668c9
Author: JinYong Li <[email protected]>
AuthorDate: Tue Nov 9 10:59:16 2021 +0800
[Bug][SnowFlakeUtils] fix snowFlake bug (#6744)
* fix snowFlake bug
* fix hash machine
---
.../apache/dolphinscheduler/common/utils/SnowFlakeUtils.java | 10 +++++-----
.../dolphinscheduler/common/utils/SnowFlakeUtilsTest.java | 3 ++-
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java
index 9bb360e..6393e19 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtils.java
@@ -24,13 +24,13 @@ import java.util.Objects;
public class SnowFlakeUtils {
// start timestamp
private static final long START_TIMESTAMP = 1609430400000L; //2021-01-01
00:00:00
- // Number of digits
- private static final long SEQUENCE_BIT = 13;
+ // Each machine generates 32 in the same millisecond
+ private static final long SEQUENCE_BIT = 5;
private static final long MACHINE_BIT = 2;
private static final long MAX_SEQUENCE = ~(-1L << SEQUENCE_BIT);
// The displacement to the left
- private static final long MACHINE_LEFT = SEQUENCE_BIT;
- private static final long TIMESTAMP_LEFT = SEQUENCE_BIT + MACHINE_BIT;
+ private static final long MACHINE_LEFT = SEQUENCE_BIT + MACHINE_BIT;
+ private static final long TIMESTAMP_LEFT = SEQUENCE_BIT + MACHINE_BIT +
MACHINE_LEFT;
private final int machineId;
private long sequence = 0L;
private long lastTimestamp = -1L;
@@ -40,7 +40,7 @@ public class SnowFlakeUtils {
private SnowFlakeUtils() throws SnowFlakeException {
try {
- this.machineId =
Math.abs(Objects.hash(InetAddress.getLocalHost().getHostName())) % 32;
+ this.machineId =
Math.abs(Objects.hash(InetAddress.getLocalHost().getHostName())) % 4;
} catch (UnknownHostException e) {
throw new SnowFlakeException(e.getMessage());
}
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtilsTest.java
index 4f4c667..bdf7096 100644
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtilsTest.java
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/SnowFlakeUtilsTest.java
@@ -23,7 +23,8 @@ public class SnowFlakeUtilsTest {
@Test
public void testNextId() {
try {
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 100; i++) {
+ Thread.sleep(1);
System.out.println(SnowFlakeUtils.getInstance().nextId());
}
} catch (Exception e) {