【问题标题】:Maven Failsafe plugin hangs unexpectedlyMaven Failsafe 插件意外挂起
【发布时间】:2014-02-09 16:19:04
【问题描述】:

使用以下配置运行 maven 故障安全插件时

    <profiles>
        <profile>
            <id>it</id>
            <build>
                <plugins>
                    <plugin>
                         <artifactId>maven-failsafe-plugin</artifactId>
                             <version>2.12</version>
                             <dependencies>
                                  <dependency>
                                   <groupId>org.apache.maven.surefire</groupId>
                                   <artifactId>surefire-junit47</artifactId>
                                   <version>2.12</version>
                                  </dependency>
                             </dependencies>
                             <configuration>
                                <groups>IntegrationTest</groups>
                             </configuration>
                             <executions>
                                  <execution>
                                       <id>default-integration-tests</id>
                                       <goals>
                                            <goal>integration-test</goal>
                                       </goals>
                                       <configuration>
                                            <groups>IntegrationTest</groups>
                                            <includes>
                                                <include>**/*.class</include>
                                            </includes>
                                        </configuration>
                                  </execution>
                             </executions>
                        </plugin>
                    </plugins>
                </build>
        </profile>
    </profiles>

Maven 在下面一行挂了一段时间

Concurrency config is parallel='none', perCoreThreadCount=true, threadCount=2, useUnlimitedThreads=false

我不知道如何为 maven 开启更多调试。

我看到 Log4J 输出的第一行会在 1.5 分钟后出现,原因不明。

我想调查一下为什么会发生这种挂起,有没有人遇到过类似的问题?如何获得更多关于正在发生的事情的调试输出?

非常感谢任何帮助。

编辑我: log4j.rootCategory=信息,滚动,控制台 log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.category.net.sf.ehcache=info
log4j.category.net.sf.ehcache.distribution=info
log4j.category.net.sf.ehcache.config=info

log4j.category.<copyanypackage>=debug

log4j.category.org.hibernate=info
#log4j.category.org.hibernate.type.BasicTypeRegistry=debug
log4j.category.org.hibernate.util.DTDEntityResolver=debug
#log4j.category.org.hibernate.cfg=debug
log4j.category.org.hibernate.SQL=info
log4j.category.org.hibernate.jdbc.AbstractBatcher=debug
log4j.category.org.hibernate.type=info, rolling

#  second: Any configuration information needed for that appender.
#    Many appenders require a layout.
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%p %d{HH:mm:ss,SSS} %C] %m%n

log4j.appender.rolling=org.apache.log4j.RollingFileAppender
log4j.appender.rolling.File=c:/logging/logfile.log
# log4j.appender.rolling.File=c:/temp/logfile.log
log4j.appender.rolling.MaxFileSize=100KB
log4j.appender.rolling.MaxBackupIndex=5
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.ConversionPattern=%d{ISO8601} %p %t %C - %m%n

更新:

这里是线程转储

"Task-Thread-for-com.mchange.v2.async.ThreadPerTaskAsynchronousRunner@7d316b06" daemon prio=5 tid=0x00007fa676812800 nid=0x7203 waiting for monitor entry [0x000000011d9e5000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1456)
    - waiting to lock <0x00000007af590628> (a java.lang.Object)
    at com.microsoft.sqlserver.jdbc.Util.lookupHostName(Util.java:575)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2684)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    - locked <0x00000007ab34c890> (a java.lang.Object)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPerTaskAsynchronousRunner$TaskThread.run(ThreadPerTaskAsynchronousRunner.java:255)

【问题讨论】:

  • 诊断这类错误真的很困难,因为它可能是你的一个测试造成了死锁(或类似的)。您可以做的是在挂起时进行线程转储,您将看到哪些线程正在等待。另一方面,Log4J 可以配置为异步记录......这可能是 1.5 分钟没有日志的原因(但您的测试确实在运行)
  • 亲爱的奥古斯托。添加了 log4j 配置。您是否看到任何用于异步日志记录的配置。
  • 您似乎没有使用 AsyncAppender。您是否尝试过获取线程转储?这将为您提供有关测试无响应原因的更多信息。

标签: integration-testing maven-failsafe-plugin


【解决方案1】:

好像跟

有关
java.net.InetAddress.getLocalHost

为 Java 激活 IPv4,就像这样

-Djava.net.preferIPv4Stack=true 

解决问题。

另见here

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多