[jboss-cvs] JBoss Messaging SVN: r7509 - in branches/clebert_temp_expirement: src/main/org/jboss/messaging/core/journal/impl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 1 12:12:41 EDT 2009


Author: clebert.suconic at jboss.com
Date: 2009-07-01 12:12:40 -0400 (Wed, 01 Jul 2009)
New Revision: 7509

Modified:
   branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/TestableJournal.java
   branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
   branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/AIOJournalCompactTest.java
   branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/NIOJournalCompactTest.java
Log:
Fixing size calculations

Modified: branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/TestableJournal.java
===================================================================
--- branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/TestableJournal.java	2009-07-01 13:39:07 UTC (rev 7508)
+++ branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/TestableJournal.java	2009-07-01 16:12:40 UTC (rev 7509)
@@ -22,6 +22,8 @@
 
 package org.jboss.messaging.core.journal;
 
+import org.jboss.messaging.core.journal.impl.JournalFile;
+
 /**
  * 
  * A TestableJournal
@@ -35,6 +37,8 @@
    void checkAndReclaimFiles() throws Exception;
 
    int getDataFilesCount();
+   
+   JournalFile[] getDataFiles();
 
    int getFreeFilesCount();
 
@@ -50,10 +54,6 @@
 
    int getMinFiles();
 
-  // boolean isSyncTransactional();
-
-  // boolean isSyncNonTransactional();
-
    String getFilePrefix();
 
    String getFileExtension();

Modified: branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java
===================================================================
--- branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2009-07-01 13:39:07 UTC (rev 7508)
+++ branches/clebert_temp_expirement/src/main/org/jboss/messaging/core/journal/impl/JournalImpl.java	2009-07-01 16:12:40 UTC (rev 7509)
@@ -272,7 +272,7 @@
       this.maxAIO = maxAIO;
    }
 
-   // Public methods (used by package members) (those are not part of the JournalImpl interface)
+   // Public methods (used by package members such as JournalCompactor) (these methods are not part of the JournalImpl interface)
 
    public Map<Long, JournalRecord> getRecords()
    {
@@ -323,7 +323,7 @@
          {
             JournalFile usedFile = appendRecord(bb, false, sync, null, callback);
 
-            records.put(id, new JournalRecord(usedFile, record.getEncodeSize()));
+            records.put(id, new JournalRecord(usedFile, size));
          }
          finally
          {
@@ -391,7 +391,7 @@
             }
             else
             {
-               posFiles.addUpdateFile(usedFile, record.getEncodeSize());
+               posFiles.addUpdateFile(usedFile, size);
             }
          }
          finally
@@ -1699,6 +1699,12 @@
    {
       return dataFiles.size();
    }
+   
+   /** Test only */
+   public JournalFile[] getDataFiles()
+   {
+      return (JournalFile[]) dataFiles.toArray(new JournalFile[dataFiles.size()]);
+   }
 
    public int getFreeFilesCount()
    {
@@ -2889,7 +2895,7 @@
             for (Pair<JournalFile, Integer> updFile : updateFiles)
             {
                file.incNegCount(updFile.a);
-               file.decSize(updFile.b);
+               updFile.a.decSize(updFile.b);
             }
          }
       }

Modified: branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/AIOJournalCompactTest.java
===================================================================
--- branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/AIOJournalCompactTest.java	2009-07-01 13:39:07 UTC (rev 7508)
+++ branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/AIOJournalCompactTest.java	2009-07-01 16:12:40 UTC (rev 7509)
@@ -32,7 +32,7 @@
 /**
  * A AIOJournalCompactTest
  *
- * @author clebert
+ * @author <a href="mailto:clebert.suconic at jboss.com">Clebert Suconic</a>
  *
  *
  */

Modified: branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/NIOJournalCompactTest.java
===================================================================
--- branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/NIOJournalCompactTest.java	2009-07-01 13:39:07 UTC (rev 7508)
+++ branches/clebert_temp_expirement/tests/src/org/jboss/messaging/tests/integration/journal/NIOJournalCompactTest.java	2009-07-01 16:12:40 UTC (rev 7509)
@@ -583,6 +583,203 @@
 
    }
 
+   public void testLiveSize() throws Exception
+   {
+      setup(2, 60 * 1024, true);
+
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      ArrayList<Long> listToDelete = new ArrayList<Long>();
+
+      ArrayList<Integer> expectedSizes = new ArrayList<Integer>();
+
+      for (int i = 0; i < 10; i++)
+      {
+         long id = idGenerator.generateID();
+         listToDelete.add(id);
+
+         expectedSizes.add(recordLength + JournalImpl.SIZE_ADD_RECORD);
+
+         add(id);
+         journal.forceMoveNextFile();
+         update(id);
+
+         expectedSizes.add(recordLength + JournalImpl.SIZE_UPDATE_RECORD);
+         journal.forceMoveNextFile();
+      }
+
+      System.out.println("DataFiles = " + journal.getDataFilesCount());
+
+      JournalFile files[] = journal.getDataFiles();
+
+      for (JournalFile file : files)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      stopJournal();
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      journal.forceMoveNextFile();
+
+      System.out.println("DataFiles = " + journal.getDataFilesCount());
+
+      JournalFile files2[] = journal.getDataFiles();
+
+      assertEquals(files.length, files2.length);
+
+      for (JournalFile file : files2)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      for (int i = 0; i < files.length; i++)
+      {
+         assertEquals(expectedSizes.get(i).intValue(), files[i].getLiveSize());
+         assertEquals(expectedSizes.get(i).intValue(), files2[i].getLiveSize());
+      }
+
+      for (long id : listToDelete)
+      {
+         delete(id);
+      }
+
+      journal.forceMoveNextFile();
+
+      JournalFile files3[] = journal.getDataFiles();
+
+      for (JournalFile file : files3)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      for (JournalFile file : files3)
+      {
+         assertEquals(0, file.getLiveSize());
+      }
+
+      stopJournal();
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      files3 = journal.getDataFiles();
+
+      for (JournalFile file : files3)
+      {
+         assertEquals(0, file.getLiveSize());
+      }
+
+   }
+
+   public void testLiveSizeTransactional() throws Exception
+   {
+      setup(2, 60 * 1024, true);
+
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      ArrayList<Long> listToDelete = new ArrayList<Long>();
+
+      ArrayList<Integer> expectedSizes = new ArrayList<Integer>();
+
+      for (int i = 0; i < 10; i++)
+      {
+         long tx = idGenerator.generateID();
+         long id = idGenerator.generateID();
+         listToDelete.add(id);
+
+         addTx(tx, id);
+
+         // Append Record Transaction will make the recordSize as exactly recordLength (discounting SIZE_ADD_RECORD_TX)
+         expectedSizes.add(recordLength);
+         journal.forceMoveNextFile();
+
+         updateTx(tx, id);
+         // uPDATE Record Transaction will make the recordSize as exactly recordLength (discounting SIZE_ADD_RECORD_TX)
+         expectedSizes.add(recordLength);
+
+         journal.forceMoveNextFile();
+         expectedSizes.add(0);
+
+         commit(tx);
+
+         journal.forceMoveNextFile();
+      }
+
+      System.out.println("DataFiles = " + journal.getDataFilesCount());
+
+      JournalFile files[] = journal.getDataFiles();
+
+      for (JournalFile file : files)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      stopJournal();
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      journal.forceMoveNextFile();
+
+      System.out.println("DataFiles = " + journal.getDataFilesCount());
+
+      JournalFile files2[] = journal.getDataFiles();
+
+      assertEquals(files.length, files2.length);
+
+      for (JournalFile file : files2)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      for (int i = 0; i < files.length; i++)
+      {
+         assertEquals(expectedSizes.get(i).intValue(), files[i].getLiveSize());
+         assertEquals(expectedSizes.get(i).intValue(), files2[i].getLiveSize());
+      }
+
+      long tx = idGenerator.generateID();
+      for (long id : listToDelete)
+      {
+         deleteTx(tx, id);
+      }
+      commit(tx);
+
+      journal.forceMoveNextFile();
+
+      JournalFile files3[] = journal.getDataFiles();
+
+      for (JournalFile file : files3)
+      {
+         System.out.println("Size: " + file.getLiveSize());
+      }
+
+      for (JournalFile file : files3)
+      {
+         assertEquals(0, file.getLiveSize());
+      }
+
+      stopJournal();
+      createJournal();
+      startJournal();
+      loadAndCheck();
+
+      files3 = journal.getDataFiles();
+
+      for (JournalFile file : files3)
+      {
+         assertEquals(0, file.getLiveSize());
+      }
+
+   }
+
    protected int getAlignment()
    {
       return 1;




More information about the jboss-cvs-commits mailing list