提交 b557fb3f authored 作者: Thomas Mueller's avatar Thomas Mueller

Call System.currentTimeMillis() less often.

上级 5b3b1050
...@@ -477,14 +477,14 @@ public class PageStore implements CacheWriter { ...@@ -477,14 +477,14 @@ public class PageStore implements CacheWriter {
} }
if (compact(full, free)) { if (compact(full, free)) {
j++; j++;
long now = System.currentTimeMillis();
if (now > start + maxCompactTime) {
j = maxMove;
break;
}
} }
} }
} }
long now = System.currentTimeMillis();
if (now > start + maxCompactTime) {
j = maxMove;
break;
}
} }
} }
// TODO can most likely be simplified // TODO can most likely be simplified
......
...@@ -422,7 +422,8 @@ public class RegularTable extends TableBase { ...@@ -422,7 +422,8 @@ public class RegularTable extends TableBase {
private void doLock(Session session, int lockMode, boolean exclusive) { private void doLock(Session session, int lockMode, boolean exclusive) {
traceLock(session, exclusive, "requesting for"); traceLock(session, exclusive, "requesting for");
long max = System.currentTimeMillis() + session.getLockTimeout(); // don't get the current time unless necessary
long max = 0;
boolean checkDeadlock = false; boolean checkDeadlock = false;
while (true) { while (true) {
if (lockExclusive == session) { if (lockExclusive == session) {
...@@ -473,7 +474,10 @@ public class RegularTable extends TableBase { ...@@ -473,7 +474,10 @@ public class RegularTable extends TableBase {
checkDeadlock = true; checkDeadlock = true;
} }
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (now >= max) { if (max == 0) {
// try at least one more time
max = now + session.getLockTimeout();
} else if (now >= max) {
traceLock(session, exclusive, "timeout after " + session.getLockTimeout()); traceLock(session, exclusive, "timeout after " + session.getLockTimeout());
throw DbException.get(ErrorCode.LOCK_TIMEOUT_1, getName()); throw DbException.get(ErrorCode.LOCK_TIMEOUT_1, getName());
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论