forked from Qortal/qortal
Extend CHECKPOINT_LOCK to HSQLDBSaver.execute()
This is used when saving new data to the db, so also needs to be blocked if we are checkpointing or deciding whether to checkpoint.
This commit is contained in:
parent
ee95a00ce2
commit
52b0c244a8
@ -55,7 +55,7 @@ public class HSQLDBRepository implements Repository {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger(HSQLDBRepository.class);
|
||||
|
||||
private static final Object CHECKPOINT_LOCK = new Object();
|
||||
public static final Object CHECKPOINT_LOCK = new Object();
|
||||
|
||||
// "serialization failure"
|
||||
private static final Integer DEADLOCK_ERROR_CODE = Integer.valueOf(-4861);
|
||||
|
@ -61,13 +61,15 @@ public class HSQLDBSaver {
|
||||
public boolean execute(HSQLDBRepository repository) throws SQLException {
|
||||
String sql = this.formatInsertWithPlaceholders();
|
||||
|
||||
try {
|
||||
PreparedStatement preparedStatement = repository.prepareStatement(sql);
|
||||
this.bindValues(preparedStatement);
|
||||
synchronized (HSQLDBRepository.CHECKPOINT_LOCK) {
|
||||
try {
|
||||
PreparedStatement preparedStatement = repository.prepareStatement(sql);
|
||||
this.bindValues(preparedStatement);
|
||||
|
||||
return preparedStatement.execute();
|
||||
} catch (SQLException e) {
|
||||
throw repository.examineException(e);
|
||||
return preparedStatement.execute();
|
||||
} catch (SQLException e) {
|
||||
throw repository.examineException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user