[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