User: lqd
Date: 02/01/14 04:30:45
Modified: src/main/org/jboss/mq/pm/file MessageLog.java
PersistenceManager.java
Log:
- remove old code
- use org.jboss.logging instead of System.out.println
Revision Changes Path
1.10 +88 -100 jbossmq/src/main/org/jboss/mq/pm/file/MessageLog.java
Index: MessageLog.java
===================================================================
RCS file: /cvsroot/jboss/jbossmq/src/main/org/jboss/mq/pm/file/MessageLog.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- MessageLog.java 2001/11/30 18:43:15 1.9
+++ MessageLog.java 2002/01/14 12:30:45 1.10
@@ -23,39 +23,35 @@
import org.jboss.mq.server.MessageCache;
import org.jboss.mq.server.MessageReference ;
+import org.jboss.logging.Logger;
+
/**
* This is used to keep SpyMessages on the disk and is used reconstruct the
* queue in case of provider failure.
*
* @created August 16, 2001
* @author: Paul Kendall ([EMAIL PROTECTED])
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
*/
public class MessageLog {
/////////////////////////////////////////////////////////////////////
// Attributes
/////////////////////////////////////////////////////////////////////
- private File queueName;
+ private File queueName;
private MessageCache messageCache;
+ private static Logger log = Logger.getLogger( MessageLog.class );
+
/////////////////////////////////////////////////////////////////////
// Constants
/////////////////////////////////////////////////////////////////////
- protected final static byte OBJECT_MESS = 3;
- protected final static byte BYTES_MESS = 4;
- protected final static byte MAP_MESS = 5;
- protected final static byte TEXT_MESS = 6;
- protected final static byte STREAM_MESS = 7;
- protected final static byte ENCAP_MESS = 8;
- protected final static byte SPY_MESS = 9;
/////////////////////////////////////////////////////////////////////
// Constructor
/////////////////////////////////////////////////////////////////////
public MessageLog(MessageCache messageCache, File file )
-
{
if (messageCache == null)
{
@@ -71,185 +67,173 @@
// Public Methods
/////////////////////////////////////////////////////////////////////
public void close()
- throws JMSException {
+ throws JMSException
+ {
}
-
public Map restore( java.util.TreeSet rollBackTXs )
- throws JMSException {
+ throws JMSException
+ {
//use sorted map to get queue order right.
TreeMap messageIndex = new TreeMap();
- try {
+ try
+ {
File[] files = queueName.listFiles();
- for ( int i = 0; i < files.length; i++ ) {
+ for ( int i = 0; i < files.length; i++ )
+ {
String fileName = files[i].getName();
int extIndex = fileName.indexOf( "." );
- if ( extIndex < 0 ) {
+ if ( extIndex < 0 )
+ {
//non transacted message so simply restore
restoreMessageFromFile( messageIndex, files[i] );
- } else {
+ } else
+ {
//test if message from a transaction that is being rolled back.
Long tx = new Long( Long.parseLong( fileName.substring( extIndex + 1
) ) );
- if ( rollBackTXs.contains( tx ) ) {
+ if ( rollBackTXs.contains( tx ) )
+ {
delete( files[i] );
- } else {
+ } else
+ {
restoreMessageFromFile( messageIndex, files[i] );
}
}
}
- } catch ( Exception e ) {
+ } catch ( Exception e )
+ {
throwJMSException( "Could not rebuild the queue from the queue's
tranaction log.", e );
}
return messageIndex;
- /*
- MessageReference rc[] = new MessageReference[messageIndex.size()];
- java.util.Iterator iter = messageIndex.values().iterator();
- for ( int i = 0; iter.hasNext(); i++ ) {
- rc[i] = ( MessageReference )iter.next();
- }
- return rc;
- */
}
public void add( MessageReference messageRef, org.jboss.mq.pm.Tx transactionId )
- throws JMSException {
- try {
- SpyMessage message = messageRef.getMessage();
+ throws JMSException
+ {
+ try
+ {
+ SpyMessage message = messageRef.getMessage();
File f;
- if ( transactionId == null ) {
+ if ( transactionId == null )
+ {
f = new File( queueName, message.getJMSMessageID() );
- } else {
+ } else
+ {
f = new File( queueName, message.getJMSMessageID() + "." +
transactionId );
}
writeMessageToFile( message, f );
messageRef.persistData = f;
- } catch ( IOException e ) {
+ } catch ( IOException e )
+ {
throwJMSException( "Could not write to the tranaction log.", e );
}
}
public void finishAdd( MessageReference message, org.jboss.mq.pm.Tx
transactionId )
- throws JMSException {
+ throws JMSException
+ {
}
public void finishRemove( MessageReference messageRef, org.jboss.mq.pm.Tx
transactionId )
- throws JMSException {
- try {
+ throws JMSException
+ {
+ try
+ {
File file = ( File )messageRef.persistData;
delete( file );
- } catch ( IOException e ) {
+ } catch ( IOException e )
+ {
throwJMSException( "Could not write to the tranaction log.", e );
}
}
public void remove( SpyMessage message, org.jboss.mq.pm.Tx transactionId )
- throws JMSException {
+ throws JMSException
+ {
}
public void undoAdd( MessageReference messageRef, org.jboss.mq.pm.Tx
transactionId )
- throws JMSException {
- try {
+ throws JMSException
+ {
+ try
+ {
File file = ( File )messageRef.persistData;
delete( file );
- } catch ( IOException e ) {
+ } catch ( IOException e )
+ {
throwJMSException( "Could not write to the tranaction log.", e );
}
}
public void undoRemove( MessageReference message, org.jboss.mq.pm.Tx
transactionId )
- throws JMSException {
+ throws JMSException
+ {
}
/////////////////////////////////////////////////////////////////////
// Utility Methods
/////////////////////////////////////////////////////////////////////
protected void delete( File file )
- throws IOException {
+ throws IOException
+ {
// I know this looks silly! But sometimes (but not often) M$ systems fail
// on the first delete
- if ( !file.delete() ) {
+ if ( !file.delete() )
+ {
Thread.yield();
- if ( file.exists() ) {
- if ( !file.delete() ) {
- System.out.println( "Failed to delete file: " +
file.getAbsolutePath() );
+ if ( file.exists() )
+ {
+ if ( !file.delete() )
+ {
+ log.warn( "Failed to delete file: " + file.getAbsolutePath() );
}
- } else {
- System.out.println( "File was deleted, but delete() failed for: " +
file.getAbsolutePath() );
+ } else
+ {
+ if( log.isTraceEnabled() )
+ log.trace( "File was deleted, but delete() failed for: " +
file.getAbsolutePath() );
}
}
}
protected void rename( File from, File to )
- throws IOException {
+ throws IOException
+ {
// I know this looks silly! But sometimes (but not often) M$ systems fail
// on the first rename (as above)
- if ( !from.renameTo( to ) ) {
+ if ( !from.renameTo( to ) )
+ {
Thread.yield();
- if ( from.exists() ) {
- if ( !from.renameTo( to ) ) {
- System.out.println( "Rename of file " + from.getAbsolutePath() + "
to " + to.getAbsolutePath() + " failed." );
+ if ( from.exists() )
+ {
+ if ( !from.renameTo( to ) )
+ {
+ log.warn( "Rename of file " + from.getAbsolutePath() + " to " +
to.getAbsolutePath() + " failed." );
}
- } else {
- System.out.println( "Rename of file " + from.getAbsolutePath() + " to "
+ to.getAbsolutePath() + " failed but from no longer exists?" );
+ } else
+ {
+ if( log.isTraceEnabled() )
+ log.trace( "Rename of file " + from.getAbsolutePath() + " to " +
to.getAbsolutePath() + " failed but from no longer exists?" );
}
}
}
protected void writeMessageToFile( SpyMessage message, File file )
- throws IOException {
+ throws IOException
+ {
ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream( file )
);
out.writeLong( message.header.messageId );
SpyMessage.writeMessage(message,out);
-// if ( message instanceof SpyEncapsulatedMessage ) {
-// out.writeByte( ENCAP_MESS );
-// } else if ( message instanceof SpyObjectMessage ) {
-// out.writeByte( OBJECT_MESS );
-// } else if ( message instanceof SpyBytesMessage ) {
-// out.writeByte( BYTES_MESS );
-// } else if ( message instanceof SpyMapMessage ) {
-// out.writeByte( MAP_MESS );
-// } else if ( message instanceof SpyTextMessage ) {
-// out.writeByte( TEXT_MESS );
-// } else if ( message instanceof SpyStreamMessage ) {
-// out.writeByte( STREAM_MESS );
-// } else {
-// out.writeByte( SPY_MESS );
-// }
-// message.writeExternal( out );
out.flush();
out.close();
}
protected void restoreMessageFromFile(TreeMap store, File file )
- throws Exception {
+ throws Exception
+ {
ObjectInputStream in = new ObjectInputStream( new FileInputStream( file ) );
long msgId = in.readLong();
SpyMessage message = SpyMessage.readMessage(in);
-// byte type = in.readByte();
-// switch ( type ) {
-// case OBJECT_MESS:
-// message = new SpyObjectMessage();
-// break;
-// case BYTES_MESS:
-// message = new SpyBytesMessage();
-// break;
-// case MAP_MESS:
-// message = new SpyMapMessage();
-// break;
-// case STREAM_MESS:
-// message = new SpyStreamMessage();
-// break;
-// case TEXT_MESS:
-// message = new SpyTextMessage();
-// break;
-// case ENCAP_MESS:
-// message = new SpyEncapsulatedMessage();
-// break;
-// default:
-// message = new SpyMessage();
-// }
-// message.readExternal( in );
in.close();
message.header.messageId = msgId;
@@ -259,9 +243,13 @@
}
private void throwJMSException( String message, Exception e )
- throws JMSException {
+ throws JMSException
+ {
JMSException newE = new SpyJMSException( message );
newE.setLinkedException( e );
throw newE;
}
}
+/*
+vim:tabstop=3:expandtab:shiftwidth=3
+*/
1.15 +2 -123 jbossmq/src/main/org/jboss/mq/pm/file/PersistenceManager.java
Index: PersistenceManager.java
===================================================================
RCS file:
/cvsroot/jboss/jbossmq/src/main/org/jboss/mq/pm/file/PersistenceManager.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- PersistenceManager.java 2002/01/05 06:38:13 1.14
+++ PersistenceManager.java 2002/01/14 12:30:45 1.15
@@ -37,7 +37,7 @@
* persistence.
*
* @author Paul Kendall ([EMAIL PROTECTED])
- * @version $Revision: 1.14 $
+ * @version $Revision: 1.15 $
*/
public class PersistenceManager extends ServiceMBeanSupport implements
PersistenceManagerMBean, org.jboss.mq.pm.PersistenceManager
{
@@ -336,123 +336,6 @@
} // end of if ()
}
- /**
- * #Description of the Method
- *
- * @param server Description of Parameter
- * @exception javax.jms.JMSException Description of Exception
- */
- /*
- public void restore(JMSServer server) throws javax.jms.JMSException
- {
- //reconstruct TXs
- TreeSet txs = new TreeSet();
- File[] transactFiles = dataDirFile.listFiles();
- if(transactFiles != null)
- {
- for (int i = 0; i < transactFiles.length; i++)
- {
- // Ignore the queue data directories.
- if( transactFiles[i].isDirectory() ) {
- transactFiles[i] = null;
- continue;
- }
-
- try
- {
- Long tx = new Long(Long.parseLong(transactFiles[i].getName()));
- java.util.ArrayList removingMessages = readTxFile(transactFiles[i]);
- if (testRollBackTx(tx, removingMessages))
- {
- txs.add(tx);
- }
- }
- catch (NumberFormatException e)
- {
- System.out.println("Ignoring invalid transaction record file " +
transactFiles[i].getAbsolutePath());
- transactFiles[i] = null;
- }
- catch (IOException e)
- {
- JMSException jmse = new SpyJMSException("IO Error when restoring.");
- jmse.setLinkedException(e);
- throw jmse;
- }
- }
- }
- if (!txs.isEmpty())
- {
- this.tidcounter = ((Long)txs.last()).longValue() + 1;
- }
-
- HashMap clone;
- synchronized (messageLogs)
- {
- clone = (HashMap)messageLogs.clone();
- }
-
- Iterator iter = clone.values().iterator();
- while (iter.hasNext())
- {
- LogInfo logInfo = (LogInfo)iter.next();
- JMSDestination q = server.getJMSDestination(logInfo.destination);
- MessageReference rebuild[] = logInfo.log.restore(txs);
- //TODO: make sure this lock is good enough
- synchronized (q)
- {
- for (int i = 0; i < rebuild.length; i++)
- {
- if (logInfo.destination instanceof org.jboss.mq.SpyTopic)
- {
- SpyMessage m = rebuild[i].getMessage();
- m.header.durableSubscriberID =
((org.jboss.mq.SpyTopic)logInfo.destination).getDurableSubscriptionID();
- rebuild[i].invalidate(); // since we did an update.
- }
- q.restoreMessage(rebuild[i]);
- }
- }
- }
-
- //all txs now committed or rolled back so delete tx files
- if(transactFiles != null)
- {
- for (int i = 0; i < transactFiles.length; i++)
- {
- if (transactFiles[i] != null)
- {
- deleteTxFile(transactFiles[i]);
- }
- }
- }
- }
- */
-
- public void initQueue(SpyDestination dest) throws javax.jms.JMSException
- {
- try
- {
- File logDir = new File(dataDirFile, dest.toString());
- MessageLog log = new MessageLog(messageCache, logDir);
- LogInfo info = new LogInfo(log, dest);
- synchronized (messageLogs)
- {
- messageLogs.put(dest.toString(), info);
- }
- }
- catch (Exception e)
- {
- javax.jms.JMSException newE = new javax.jms.JMSException("Invalid
configuration.");
- newE.setLinkedException(e);
- throw newE;
- }
- }
- /**
- * #Description of the Method
- *
- * @param dest Description of Parameter
- * @exception javax.jms.JMSException Description of Exception
- */
- /*
public void initQueue(SpyDestination dest) throws javax.jms.JMSException
{
try
@@ -465,10 +348,6 @@
messageLogs.put(dest.toString(), info);
}
}
- catch (javax.jms.JMSException e)
- {
- throw e;
- }
catch (Exception e)
{
javax.jms.JMSException newE = new javax.jms.JMSException("Invalid
configuration.");
@@ -476,7 +355,7 @@
throw newE;
}
}
- */
+
/**
* #Description of the Method
*
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development