[ 
https://issues.apache.org/activemq/browse/AMQ-1380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=41168#action_41168
 ] 

palmsun edited comment on AMQ-1380 at 1/27/08 9:54 PM:
-------------------------------------------------------------

This patch is still not part of ActiveMQ 5.0,  where slave file handle leaks 
are still an issue. I manually applied this patch and it fixed the problem. Why 
is this patch not part of 5.0? Running a master/slave (persistence based on 
journal file-system) using a conf file below, leads to the crash of the slave 
after a few hours, due to running out of open files. If you monitor the number 
of open files (lsof | wc -l), you'll see that the number of open files keeps 
increasing every 10 seconds. With this patch, this is no-longer a problem. 
Please include this patch in the release. Here is the conf file that I've used 
for master/slave (the only difference is that the value of the IP address in 
the  broker name and the  transport connector)

<beans
  xmlns="http://www.springframework.org/schema/beans";
  xmlns:amq="http://activemq.org/config/1.0";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.org/config/1.0 
http://activemq.apache.org/schema/activemq-core.xsd
  http://activemq.apache.org/camel/schema/spring 
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>

  <!-- Allows us to use system properties as variables in this configuration 
file -->
  <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
  
  <broker xmlns="http://activemq.org/config/1.0"; brokerName="10.0.1.200" 
useJmx="false">
  
    <!-- The transport connectors ActiveMQ will listen to -->
    <transportConnectors>
       <transportConnector name="openwire" 
uri="tcp://10.0.1.200:61616?trace=true"/>
    </transportConnectors>
        <persistenceAdapter>
              <journaledJDBC dataDirectory="/Users/sjavey/amq-broker-data"/>
        </persistenceAdapter>

  </broker>

  <!-- An embedded servlet engine for serving up the Admin console -->
  <jetty xmlns="http://mortbay.com/schemas/jetty/1.0";>
    <connectors>
      <nioConnector port="8161" />
    </connectors>

    <handlers>
      <webAppContext contextPath="/admin" 
resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />
    </handlers>
  </jetty>
  
</beans>

      was (Author: palmsun):
    This patch is still not part of ActiveMQ 5.0,  where slave file handle 
leaks are still an issue. I manually applied this patch and it fixed the 
problem. Why is this patch not part of 5.0? Running a master/slave (persistence 
based on journal file-system) using a conf file below, leads to the crash of 
the slave after a few hours, due to running out of open files. If you monitor 
the number of open files (lsof | wc -l), you'll see that the number of open 
files keeps increasing every 10 seconds. With this patch, this is no-longer a 
problem. Please include this patch in the release. 

<beans
  xmlns="http://www.springframework.org/schema/beans";
  xmlns:amq="http://activemq.org/config/1.0";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.org/config/1.0 
http://activemq.apache.org/schema/activemq-core.xsd
  http://activemq.apache.org/camel/schema/spring 
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>

  <!-- Allows us to use system properties as variables in this configuration 
file -->
  <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
  
  <broker xmlns="http://activemq.org/config/1.0"; brokerName="10.0.1.200" 
useJmx="false">
  
    <!-- The transport connectors ActiveMQ will listen to -->
    <transportConnectors>
       <transportConnector name="openwire" 
uri="tcp://10.0.1.200:61616?trace=true"/>
    </transportConnectors>
        <persistenceAdapter>
              <journaledJDBC dataDirectory="/Users/sjavey/amq-broker-data"/>
        </persistenceAdapter>

  </broker>

  <!-- An embedded servlet engine for serving up the Admin console -->
  <jetty xmlns="http://mortbay.com/schemas/jetty/1.0";>
    <connectors>
      <nioConnector port="8161" />
    </connectors>

    <handlers>
      <webAppContext contextPath="/admin" 
resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />
    </handlers>
  </jetty>
  
</beans>
  
> ActiveIO does not close ControlFile 
> ------------------------------------
>
>                 Key: AMQ-1380
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1380
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.1.1
>         Environment: All
>            Reporter: Joe Kutner
>         Attachments: patch.txt
>
>
> The following exception is thrown from an ActiveMQ instance that is in Slave 
> mode that causes it to crash.
> java.io.FileNotFoundException: ***/*******/*****/*******/journal/control.dat 
> (Too many open files)
>         at java.io.RandomAccessFile.open(Native Method)
>         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
>         at 
> org.apache.activeio.journal.active.ControlFile.<init>(ControlFile.java:60)
>         at 
> org.apache.activeio.journal.active.LogFileManager.initialize(LogFileManager.java:119)
>         at 
> org.apache.activeio.journal.active.LogFileManager.<init>(LogFileManager.java:102)
>         at 
> org.apache.activeio.journal.active.JournalImpl.<init>(JournalImpl.java:101)
>         at 
> org.apache.activemq.store.DefaultPersistenceAdapterFactory.createJournal(DefaultPersistenceAdapterFactory.java:224)
>         at 
> org.apache.activemq.store.DefaultPersistenceAdapterFactory.getJournal(DefaultPersistenceAdapterFactory.java:132)
>         at 
> org.apache.activemq.store.DefaultPersistenceAdapterFactory.createPersistenceAdapter(DefaultPersistenceAdapterFactory.java:70)
>         at 
> org.apache.activemq.store.PersistenceAdapterFactoryBean.getObject(PersistenceAdapterFactoryBean.java:35)
>         at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:994)
>         ... 41 more
> The problem is that each time ActiveIO checks to see if control.dat is locked 
> it creates a new java.io.RandomAccessFile.  If the control.dat file is 
> locked, it fails to close the RandomAccessFile.
> This exception always will be thrown from an instance in Shared-File-System 
> Slave mode that continues to check the Journal file (which the Master has 
> locked).  But the rate at which is is thrown depends on the maximum number of 
> files the OS allows to be open.  You can check how many files are open with 
> 'ulimit -a'

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to