[jboss-cvs] JBoss Messaging SVN: r5166 - in branches/Branch_Chunk_Clebert: src/main/org/jboss/messaging/core/journal/impl and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Oct 21 19:27:29 EDT 2008
Author: clebert.suconic at jboss.com
Date: 2008-10-21 19:27:28 -0400 (Tue, 21 Oct 2008)
New Revision: 5166
Modified:
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalServerLargeMessageImpl.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageServerLargeMessageImpl.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/ServerLargeMessage.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java
branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java
Log:
Treating temporary files on sending files and big messages
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/SequentialFile.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -77,5 +77,7 @@
void sync() throws Exception;
long size() throws Exception;
+
+ void renameTo(SequentialFile file) throws Exception;
}
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/AIOSequentialFile.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -179,6 +179,14 @@
open(maxIO);
}
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.journal.SequentialFile#renameTo(org.jboss.messaging.core.journal.SequentialFile)
+ */
+ public void renameTo(SequentialFile file) throws Exception
+ {
+ throw new IllegalStateException ("method rename not supported on AIO");
+
+ }
public synchronized void open(final int currentMaxIO) throws Exception
{
opened = true;
@@ -368,4 +376,5 @@
return;
}
}
+
}
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/journal/impl/NIOSequentialFile.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -43,13 +43,8 @@
public class NIOSequentialFile implements SequentialFile
{
private static final Logger log = Logger.getLogger(NIOSequentialFile.class);
+ private File file;
- private final String journalDir;
-
- private final String fileName;
-
- private final File file;
-
private FileChannel channel;
private RandomAccessFile rfile;
@@ -58,12 +53,7 @@
public NIOSequentialFile(final String journalDir, final String fileName)
{
- this.journalDir = journalDir;
-
- this.fileName = fileName;
-
- this.file = new File(journalDir + "/" + fileName);
-
+ this.file = new File(journalDir + "/" + fileName);
}
public int getAlignment()
@@ -78,7 +68,7 @@
public String getFileName()
{
- return fileName;
+ return file.getName();
}
public synchronized boolean isOpen()
@@ -125,9 +115,15 @@
public void close() throws Exception
{
- channel.close();
+ if (channel != null)
+ {
+ channel.close();
+ }
- rfile.close();
+ if (rfile != null)
+ {
+ rfile.close();
+ }
channel = null;
@@ -214,7 +210,8 @@
throw e;
}
}
-
+
+
public void sync() throws Exception
{
channel.force(false);
@@ -234,10 +231,21 @@
{
return channel.position();
}
+
+ public void renameTo(SequentialFile newFile) throws Exception
+ {
+ close();
+ this.file.renameTo(((NIOSequentialFile)newFile).file);
+ file = ((NIOSequentialFile)newFile).file;
+ }
+
+
public String toString()
{
- return "NIOSequentialFile " + this.fileName;
+ return "NIOSequentialFile " + this.file;
}
+
+
}
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalServerLargeMessageImpl.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalServerLargeMessageImpl.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalServerLargeMessageImpl.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -26,6 +26,7 @@
import org.jboss.messaging.core.exception.MessagingException;
import org.jboss.messaging.core.journal.SequentialFile;
+import org.jboss.messaging.core.journal.impl.NIOSequentialFile;
import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
import org.jboss.messaging.core.server.ServerLargeMessage;
@@ -51,7 +52,10 @@
private final JournalStorageManager storageManager;
- private SequentialFile file;
+ // We should only use the NIO implementation on the Journal
+ private volatile SequentialFile file;
+
+ private volatile boolean complete = false;
// Static --------------------------------------------------------
@@ -151,6 +155,8 @@
@Override
public void decode(final MessagingBuffer buffer)
{
+ file = null;
+ complete = true;
decodeProperties(buffer);
}
@@ -187,6 +193,17 @@
// The body won't be on memory (aways on-file), so we don't consider this for paging
return super.getPropertiesEncodeSize();
}
+
+ public synchronized void complete() throws Exception
+ {
+ releaseResources();
+
+ if (!complete)
+ {
+ SequentialFile fileToRename = storageManager.createFileForLargeMessage(this.getMessageID(), true);
+ file.renameTo(fileToRename);
+ }
+ }
public synchronized void releaseResources() throws Exception
{
@@ -210,8 +227,9 @@
{
throw new RuntimeException("MessageID not set on LargeMessage");
}
-
- file = storageManager.createFileForLargeMessage(this.getMessageID());
+
+ file = storageManager.createFileForLargeMessage(this.getMessageID(), complete);
+
}
}
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -749,9 +749,16 @@
* @param messageID
* @return
*/
- SequentialFile createFileForLargeMessage(long messageID)
+ SequentialFile createFileForLargeMessage(final long messageID, final boolean completeFile)
{
- return largeMessagesFactory.createSequentialFile(messageID + ".msg", -1);
+ if (completeFile)
+ {
+ return largeMessagesFactory.createSequentialFile(messageID + ".msg", -1);
+ }
+ else
+ {
+ return largeMessagesFactory.createSequentialFile(messageID + ".tmp", -1);
+ }
}
// Private ----------------------------------------------------------------------------------
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageServerLargeMessageImpl.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageServerLargeMessageImpl.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageServerLargeMessageImpl.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -94,6 +94,15 @@
// nothing to be done here.. we don really have a file on this Storage
}
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.server.ServerLargeMessage#complete()
+ */
+ public void complete() throws Exception
+ {
+ // nothing to be done here.. we don really have a file on this Storage
+
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/ServerLargeMessage.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/ServerLargeMessage.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/ServerLargeMessage.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -38,6 +38,8 @@
/** Close the files if opened */
void releaseResources() throws Exception;
+ void complete() throws Exception;
+
void deleteFile() throws Exception;
}
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -410,6 +410,7 @@
if (!message.isContinues())
{
+ largeMessage.complete();
session.clearCurrentLargeMessage(message.getTargetID());
session.sendProducerMessage(message.getTargetID(), largeMessage);
}
Modified: branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java
===================================================================
--- branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java 2008-10-21 22:38:02 UTC (rev 5165)
+++ branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/unit/core/journal/impl/fakes/FakeSequentialFileFactory.java 2008-10-21 23:27:28 UTC (rev 5166)
@@ -528,6 +528,14 @@
}
}
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.journal.SequentialFile#renameTo(org.jboss.messaging.core.journal.SequentialFile)
+ */
+ public void renameTo(SequentialFile file) throws Exception
+ {
+ throw new IllegalStateException("Method rename not supoprted on FakeSequentialFile");
+ }
+
}
}
More information about the jboss-cvs-commits
mailing list