User: chirino
Date: 01/10/27 18:27:00
Modified: src/main/org/jboss/mq/pm/logged PersistenceManager.java
Log:
Commiting my initial implementation of a message cache for the JBossMQ messages.
This should allow the server to scale so it can hold a larger number of message.
Revision Changes Path
1.6 +17 -13 jbossmq/src/main/org/jboss/mq/pm/logged/PersistenceManager.java
Index: PersistenceManager.java
===================================================================
RCS file:
/cvsroot/jboss/jbossmq/src/main/org/jboss/mq/pm/logged/PersistenceManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PersistenceManager.java 2001/09/06 21:49:43 1.5
+++ PersistenceManager.java 2001/10/28 01:27:00 1.6
@@ -31,12 +31,13 @@
import org.jboss.mq.server.JMSServer;
import org.jboss.mq.xml.XElement;
import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.mq.server.MessageReference;
/**
* This class manages all persistence related services.
*
* @author Hiram Chirino ([EMAIL PROTECTED])
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class PersistenceManager extends ServiceMBeanSupport implements
PersistenceManagerMBean, org.jboss.mq.pm.PersistenceManager
{
@@ -124,6 +125,9 @@
File jbossHome = new File(System.getProperty("jboss.system.home"));
dataDirFile = new File(jbossHome, dataDirectory);
+ dataDirFile.mkdirs();
+ if( !dataDirFile.isDirectory() )
+ throw new Exception("The data directory is not valid:
"+dataDirFile.getCanonicalPath());
File txLogFile = new File(dataDirFile, "transactions.dat");
spyTxLog = new SpyTxLog(txLogFile);
@@ -226,9 +230,9 @@
* @param txId Description of Parameter
* @exception javax.jms.JMSException Description of Exception
*/
- public void add(org.jboss.mq.SpyMessage message, org.jboss.mq.pm.Tx txId) throws
javax.jms.JMSException
+ public void add(MessageReference messageRef, org.jboss.mq.pm.Tx txId) throws
javax.jms.JMSException
{
-
+ SpyMessage message = messageRef.getMessage();
LogInfo logInfo;
synchronized (messageLogs)
@@ -274,9 +278,9 @@
* @param txId Description of Parameter
* @exception javax.jms.JMSException Description of Exception
*/
- public void remove(org.jboss.mq.SpyMessage message, org.jboss.mq.pm.Tx txId)
throws javax.jms.JMSException
+ public void remove(MessageReference messageRef, org.jboss.mq.pm.Tx txId) throws
javax.jms.JMSException
{
-
+ SpyMessage message = messageRef.getMessage();
LogInfo logInfo;
synchronized (messageLogs)
@@ -319,14 +323,14 @@
SpyMessage rebuild[] = logInfo.log.restore(commitedTXs);
- //TODO: make sure this lock is good enough
- synchronized (q)
- {
- for (int i = 0; i < rebuild.length; i++)
- {
- q.restoreMessage(rebuild[i]);
- }
- }
+ org.jboss.mq.server.MessageCache cache =
JMSServer.getInstance().getMessageCache();
+ //TODO: make sure this lock is good enough
+ synchronized (q) {
+ for (int i= 0; i < rebuild.length; i++) {
+ MessageReference mr = cache.add(rebuild[i]);
+ q.restoreMessage(mr);
+ }
+ }
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development