From d863534808fb567f331d2b9ff94b00ee3627de48 Mon Sep 17 00:00:00 2001 From: CoffeeLatte007 <563868273@qq.com> Date: Tue, 30 Apr 2019 16:55:10 +0800 Subject: [PATCH 1/3] fix resttime bug --- .../src/main/java/io/seata/server/session/GlobalSession.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 7b8d6520247..0abe61b91a2 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -517,9 +517,8 @@ public void lock() throws TransactionException { boolean flag; int times = 0; long beginTime = System.currentTimeMillis(); - long restTime = GLOBAL_SESSOION_LOCK_TIME_OUT_MILLS ; do { - restTime -= (System.currentTimeMillis() - beginTime); + long restTime = GLOBAL_SESSOION_LOCK_TIME_OUT_MILLS - (System.currentTimeMillis() - beginTime); if (restTime <= 0){ throw new TransactionException(TransactionExceptionCode.FailedLockGlobalTranscation); } From 3fd8de98218c880dc6a3afae1ede4aa39cfc9471 Mon Sep 17 00:00:00 2001 From: CoffeeLatte007 <563868273@qq.com> Date: Tue, 30 Apr 2019 17:43:17 +0800 Subject: [PATCH 2/3] fix unit bug --- .../main/java/io/seata/server/session/GlobalSession.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 0abe61b91a2..1a11e9f359e 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -27,6 +27,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collections; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.LockSupport; @@ -511,7 +512,7 @@ private class GlobalSessionSpinLock{ private static final int PARK_TIMES_BASE = 10; - private static final int PARK_TIMES_BASE_NANOS = 1 * 1000 * 1000; + private static final int PARK_TIMES_BASE_MILLS = 1 * 1000; public void lock() throws TransactionException { boolean flag; @@ -525,9 +526,9 @@ public void lock() throws TransactionException { // Pause every PARK_TIMES_BASE times,yield the CPU if (times % PARK_TIMES_BASE == 0){ // Exponential Backoff - long backOffTime = PARK_TIMES_BASE_NANOS << (times/PARK_TIMES_BASE); + long backOffTime = PARK_TIMES_BASE_MILLS << (times/PARK_TIMES_BASE); long parkTime = backOffTime < restTime ? backOffTime : restTime; - LockSupport.parkNanos(parkTime); + LockSupport.parkNanos(TimeUnit.MILLISECONDS.toNanos(parkTime)); } flag = this.globalSessionSpinLock.compareAndSet(true, false); times++; From eef0f1f1a5725c8618aaefcc94409bf72823ead4 Mon Sep 17 00:00:00 2001 From: CoffeeLatte007 <563868273@qq.com> Date: Thu, 2 May 2019 01:10:13 +0800 Subject: [PATCH 3/3] fix review --- server/src/main/java/io/seata/server/session/GlobalSession.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 1a11e9f359e..73766fabfd8 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -512,7 +512,7 @@ private class GlobalSessionSpinLock{ private static final int PARK_TIMES_BASE = 10; - private static final int PARK_TIMES_BASE_MILLS = 1 * 1000; + private static final int PARK_TIMES_BASE_MILLS = 1; public void lock() throws TransactionException { boolean flag;