mirror of
https://github.com/Qortal/qortal.git
synced 2025-02-12 02:05:50 +00:00
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 Logger LOGGER = LogManager.getLogger(HSQLDBRepository.class);
|
||||||
|
|
||||||
private static final Object CHECKPOINT_LOCK = new Object();
|
public static final Object CHECKPOINT_LOCK = new Object();
|
||||||
|
|
||||||
// "serialization failure"
|
// "serialization failure"
|
||||||
private static final Integer DEADLOCK_ERROR_CODE = Integer.valueOf(-4861);
|
private static final Integer DEADLOCK_ERROR_CODE = Integer.valueOf(-4861);
|
||||||
|
@ -61,6 +61,7 @@ public class HSQLDBSaver {
|
|||||||
public boolean execute(HSQLDBRepository repository) throws SQLException {
|
public boolean execute(HSQLDBRepository repository) throws SQLException {
|
||||||
String sql = this.formatInsertWithPlaceholders();
|
String sql = this.formatInsertWithPlaceholders();
|
||||||
|
|
||||||
|
synchronized (HSQLDBRepository.CHECKPOINT_LOCK) {
|
||||||
try {
|
try {
|
||||||
PreparedStatement preparedStatement = repository.prepareStatement(sql);
|
PreparedStatement preparedStatement = repository.prepareStatement(sql);
|
||||||
this.bindValues(preparedStatement);
|
this.bindValues(preparedStatement);
|
||||||
@ -70,6 +71,7 @@ public class HSQLDBSaver {
|
|||||||
throw repository.examineException(e);
|
throw repository.examineException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format table and column names into an INSERT INTO ... SQL statement.
|
* Format table and column names into an INSERT INTO ... SQL statement.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user