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