提交 af159ebe authored 作者: Andrei Tokar's avatar Andrei Tokar

expand synchronized scope in Command back to what it was

上级 86e99ef0
...@@ -194,17 +194,15 @@ public abstract class Command implements CommandInterface { ...@@ -194,17 +194,15 @@ public abstract class Command implements CommandInterface {
// wait // wait
} }
} }
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (sync) {
session.startStatementWithinTransaction(); session.startStatementWithinTransaction();
session.setCurrentCommand(this, false); session.setCurrentCommand(this, false);
try { try {
while (true) { while (true) {
database.checkPowerOff(); database.checkPowerOff();
try { try {
ResultInterface result; ResultInterface result = query(maxrows);
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (sync) {
result = query(maxrows);
}
callStop = !result.isLazy(); callStop = !result.isLazy();
return result; return result;
} catch (DbException e) { } catch (DbException e) {
...@@ -241,6 +239,7 @@ public abstract class Command implements CommandInterface { ...@@ -241,6 +239,7 @@ public abstract class Command implements CommandInterface {
} }
} }
} }
}
@Override @Override
public ResultWithGeneratedKeys executeUpdate(Object generatedKeysRequest) { public ResultWithGeneratedKeys executeUpdate(Object generatedKeysRequest) {
...@@ -255,6 +254,8 @@ public abstract class Command implements CommandInterface { ...@@ -255,6 +254,8 @@ public abstract class Command implements CommandInterface {
// wait // wait
} }
} }
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (sync) {
Session.Savepoint rollback = session.setSavepoint(); Session.Savepoint rollback = session.setSavepoint();
session.startStatementWithinTransaction(); session.startStatementWithinTransaction();
session.setCurrentCommand(this, generatedKeysRequest); session.setCurrentCommand(this, generatedKeysRequest);
...@@ -262,11 +263,7 @@ public abstract class Command implements CommandInterface { ...@@ -262,11 +263,7 @@ public abstract class Command implements CommandInterface {
while (true) { while (true) {
database.checkPowerOff(); database.checkPowerOff();
try { try {
int updateCount; int updateCount = update();
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (sync) {
updateCount = update();
}
if (!Boolean.FALSE.equals(generatedKeysRequest)) { if (!Boolean.FALSE.equals(generatedKeysRequest)) {
return new ResultWithGeneratedKeys.WithKeys(updateCount, return new ResultWithGeneratedKeys.WithKeys(updateCount,
session.getGeneratedKeys().getKeys(session)); session.getGeneratedKeys().getKeys(session));
...@@ -310,6 +307,7 @@ public abstract class Command implements CommandInterface { ...@@ -310,6 +307,7 @@ public abstract class Command implements CommandInterface {
} }
} }
} }
}
private long filterConcurrentUpdate(DbException e, long start) { private long filterConcurrentUpdate(DbException e, long start) {
int errorCode = e.getErrorCode(); int errorCode = e.getErrorCode();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论