activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dej...@apache.org
Subject svn commit: r728964 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
Date Tue, 23 Dec 2008 14:23:39 GMT
Author: dejanb
Date: Tue Dec 23 06:23:38 2008
New Revision: 728964

URL: http://svn.apache.org/viewvc?rev=728964&view=rev
Log:
fix for https://issues.apache.org/activemq/browse/AMQ-2038

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java?rev=728964&r1=728963&r2=728964&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
(original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/journal/JournalPersistenceAdapter.java
Tue Dec 23 06:23:38 2008
@@ -83,6 +83,8 @@
  */
 public class JournalPersistenceAdapter implements PersistenceAdapter, JournalEventListener,
UsageListener, BrokerServiceAware {
 
+    private BrokerService brokerService;
+	
     protected static final Scheduler scheduler = Scheduler.getInstance();
     private static final Log LOG = LogFactory.getLog(JournalPersistenceAdapter.class);
 
@@ -599,7 +601,13 @@
      */
     public RecordLocation writeCommand(DataStructure command, boolean sync) throws IOException
{
         if (started.get()) {
-            return journal.write(toPacket(wireFormat.marshal(command)), sync);
+            try {
+        	    return journal.write(toPacket(wireFormat.marshal(command)), sync);
+            } catch (IOException ioe) {
+        	    LOG.error("Cannot write to the journal", ioe);
+        	    stopBroker();
+        	    throw ioe;
+            }
         }
         throw new IOException("closed");
     }
@@ -693,10 +701,23 @@
     }
 
     public void setBrokerService(BrokerService brokerService) {
+        this.brokerService = brokerService;
         PersistenceAdapter pa = getLongTermPersistence();
         if( pa instanceof BrokerServiceAware ) {
             ((BrokerServiceAware)pa).setBrokerService(brokerService);
         }
     }
+    
+    protected void stopBroker() {
+        new Thread() {
+           public void run() {
+        	   try {
+    	            brokerService.stop();
+    	        } catch (Exception e) {
+    	            LOG.warn("Failure occured while stopping broker");
+    	        }    			
+    		}
+    	}.start();
+    }
 
 }



Mime
View raw message