diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java index 4e9349c1..4d8e5043 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBRepository.java @@ -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); diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBSaver.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBSaver.java index c1b6ee9b..acf24c54 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBSaver.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBSaver.java @@ -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); - - return preparedStatement.execute(); - } catch (SQLException e) { - throw repository.examineException(e); + synchronized (HSQLDBRepository.CHECKPOINT_LOCK) { + try { + PreparedStatement preparedStatement = repository.prepareStatement(sql); + this.bindValues(preparedStatement); + + return preparedStatement.execute(); + } catch (SQLException e) { + throw repository.examineException(e); + } } }