Support sync=true in JDBCJournal append record

Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/0e4a164b
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/0e4a164b
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/0e4a164b

Branch: refs/heads/refactor-openwire
Commit: 0e4a164b39e0fcd59751f737c97440541f376892
Parents: 5eecd87
Author: Martyn Taylor <[email protected]>
Authored: Thu Feb 4 14:44:26 2016 +0000
Committer: Martyn Taylor <[email protected]>
Committed: Thu Feb 4 16:24:47 2016 +0000

----------------------------------------------------------------------
 .../artemis/jdbc/store/journal/JDBCJournalImpl.java   | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/0e4a164b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/journal/JDBCJournalImpl.java
----------------------------------------------------------------------
diff --git 
a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/journal/JDBCJournalImpl.java
 
b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/journal/JDBCJournalImpl.java
index 2f56add..632d7a3 100644
--- 
a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/journal/JDBCJournalImpl.java
+++ 
b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/journal/JDBCJournalImpl.java
@@ -42,13 +42,14 @@ import 
org.apache.activemq.artemis.core.journal.PreparedTransactionInfo;
 import org.apache.activemq.artemis.core.journal.RecordInfo;
 import org.apache.activemq.artemis.core.journal.TransactionFailureCallback;
 import org.apache.activemq.artemis.core.journal.impl.JournalFile;
+import org.apache.activemq.artemis.core.journal.impl.SimpleWaitIOCallback;
 import org.apache.activemq.artemis.jdbc.store.JDBCUtils;
 import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
 
 public class JDBCJournalImpl implements Journal {
 
    // Sync Delay in ms
-   public static final int SYNC_DELAY = 500;
+   public static final int SYNC_DELAY = 5;
 
    private static int USER_VERSION = 1;
 
@@ -285,7 +286,14 @@ public class JDBCJournalImpl implements Journal {
       t.start();
    }
 
-   private synchronized void appendRecord(JDBCJournalRecord record) {
+   private void appendRecord(JDBCJournalRecord record) throws Exception {
+
+      SimpleWaitIOCallback callback = null;
+      if (record.isSync() && record.getIoCompletion() == null) {
+         callback = new SimpleWaitIOCallback();
+         record.setIoCompletion(callback);
+      }
+
       try {
          journalLock.writeLock().lock();
          if (record.isTransactional() || record.getRecordType() == 
JDBCJournalRecord.PREPARE_RECORD) {
@@ -296,6 +304,8 @@ public class JDBCJournalImpl implements Journal {
       finally {
          journalLock.writeLock().unlock();
       }
+
+      if (callback != null) callback.waitCompletion();
    }
 
    private void addTxRecord(JDBCJournalRecord record) {

Reply via email to