注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

0与1构筑世界,程序员创造时代

软件架构设计 Java编程

 
 
 

日志

 
 

ActiveMQ-解决启动异常  

2009-09-15 17:21:49|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

环境

SUSE Linux 9 / SUSE Linux 10
ActiveMQ-5.2.0

1、Waiting to Lock the Store /nfs231/aofeng/apache-activemq-5.2.0/data

启动ActiveMQ,日志显示告警信息:
ACTIVEMQ_HOME: /nfs231/aofeng/apache-activemq-5.2.0
ACTIVEMQ_BASE: /nfs231/aofeng/apache-activemq-5.2.0
Loading message broker from: xbean:activemq.xml
INFO  DefaultCamelContext  - JMX enabled. Using InstrumentationLifecycleStrategy.
INFO  BrokerService  - Using Persistence Adapter: AMQPersistenceAdapter(/nfs231/aofeng/apache-activemq-5.2.0/data)
WARN  AMQPersistenceAdapter  - Waiting to Lock the Store /nfs231/aofeng/apache-activemq-5.2.0/data
ActiveMQ无法完成启动。

进入该目录查看:
aofeng@suse9dev:~/apache-activemq-5.2.0/data> ls -l
total 24
-rw-r--r--  1 aofeng users 8789 2009-09-15 11:32 activemq.log
drwxr-xr-x  2 aofeng users 4096 2009-09-08 17:03 journal
drwxr-xr-x  4 aofeng users 4096 2009-09-08 17:03 kr-store
drwxr-xr-x  3 aofeng users 4096 2009-09-08 17:04 localhost
-rw-r--r--  1 aofeng users    0 2009-09-08 17:03 lock
发现有一个lock文件,这是用于锁定当前目录的标识文件。

ActiveMQ-解决异常 - 傲风 - 解决方法:
停止ActiveMQ,删除lock文件。
aofeng@suse9dev:~/apache-activemq-5.2.0/data> rm -r lock

2、Journal is locked... waiting 10 seconds for the journal to be unlocked.

启动ActiveMQ,日志显示告警信息:
ACTIVEMQ_HOME: /nfs231/aofeng/apache-activemq-5.2.0
ACTIVEMQ_BASE: /nfs231/aofeng/apache-activemq-5.2.0
Loading message broker from: xbean:activemq.xml
INFO  DefaultCamelContext            - JMX enabled. Using InstrumentationLifecycleStrategy.
INFO  BrokerService                  - Using Persistence Adapter: AMQPersistenceAdapter(/nfs231/aofeng/apache-activemq-5.2.0/data)
INFO  AMQPersistenceAdapter          - AMQStore starting using directory: /nfs231/aofeng/apache-activemq-5.2.0/data
INFO  AMQPersistenceAdapter          - Journal is locked... waiting 10 seconds for the journal to be unlocked.
INFO  AMQPersistenceAdapter          - Journal is locked... waiting 10 seconds for the journal to be unlocked.
ActiveMQ无法完成启动。

按照解决第一个问题的思路,删除了所有目录下的lock文件,问题仍然存在。
在网上查了许多资料后,根本就没有这方面的问题。无奈之下,查看ActiveMQ的源代码,找到了解决问题的办法,其代码如下:
while (true) {
    try {
        asyncDataManager.lock();
        break;
    } catch (IOException e) {
        LOG.info("Journal is locked... waiting " + (JOURNAL_LOCKED_WAIT_DELAY / 1000) + " seconds for the journal to be unlocked.");
        try {
            Thread.sleep(JOURNAL_LOCKED_WAIT_DELAY);
        } catch (InterruptedException e1) {
        }
    }
}

public void lock() throws IOException {
    synchronized (this) {
        if( controlFile == null ) {
            directory.mkdirs();
            controlFile = new ControlFile(new File(directory, filePrefix + "control"), CONTROL_RECORD_MAX_LENGTH);
        }
           controlFile.lock();
       }
}

public void store(ByteSequence data, boolean sync) throws IOException {

    version++;
    randomAccessFile.setLength((maxRecordSize * 2) + 32);
    randomAccessFile.seek(0);

    // Write the first copy of the control data.
    randomAccessFile.writeLong(version);
    randomAccessFile.writeInt(data.getLength());
    randomAccessFile.write(data.getData());
    randomAccessFile.seek(firstRecordEnd);
    randomAccessFile.writeLong(version);

    // Write the second copy of the control data.
    randomAccessFile.writeLong(version);
    randomAccessFile.writeInt(data.getLength());
    randomAccessFile.write(data.getData());
    randomAccessFile.seek(secondRecordEnd);
    randomAccessFile.writeLong(version);

    if (sync) {
        randomAccessFile.getFD().sync();
    }
}
原来是获取控制文件 data-control 的锁时出错。

ActiveMQ-解决异常 - 傲风 - 解决方法:
停止ActiveMQ,删除控制文件。
aofeng@suse9dev:~/apache-activemq-5.2.0/data/journal> ls -l
total 1632
-rw-r--r--  1 aofeng users 20447232 2009-09-14 18:38 data-1
-rw-r--r--  1 aofeng users     2088 2009-09-14 18:39 data-control
aofeng@suse9dev:~/apache-activemq-5.2.0/data/journal> rm -r data-control

3、UnknownHostException on startup

启动ActiveMQ,日志显示告警信息:
……
报错UnknownHostException,Transport Connection无法建立,但是可以获取到主机名:suse10。

ActiveMQ-解决异常 - 傲风 - 解决方法:
编辑/etc/hosts,添加127.0.0.1 suse10 suse10。再次启动即可。Ubuntu上hosts自动把计算机名解析到127.0.0.1,其他部分Linux系统上需要你手动配置。
……

<正文结束>
文章声明


作者:傲风(aofengblog@163.com)       编写时间:2009年09月15日

网址:http://aofengblog.blog.163.com

作者保留所有权利,转载请保留文章全部内容或者说明原作者和转载地址



  评论这张
 
阅读(16463)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017