accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Medinets <david.medin...@gmail.com>
Subject Re: Program runs fine in NetBeans fails the shutdown properly running via Maven
Date Sun, 30 Nov 2014 04:35:33 GMT
Thanks Josh. That explanation makes sense. I added the referenced
ClientThreads.shutdownNow() method to my code and ran into the
following:

   java.lang.SecurityException: sealing violation: package
org.apache.accumulo.core.util is sealed


I can live with this issue until v2.0 since it happens when the JVM is
exiting. And I'm just writing demonstration code for no particular
reason. At the least, we'll have a small project to test the fix
against.


On Sat, Nov 29, 2014 at 10:35 PM, Josh Elser <josh.elser@gmail.com> wrote:
> From http://mojo.codehaus.org/exec-maven-plugin/usage.html,
>
> "By default daemon threads are joined and interrupted once all known non
> daemon threads have quitted"
>
> So, your main thread finished, but before the exec plugin stopped the
> application, it tried to interrupt the other non-daemon threads that were
> still running (which should be a sign for them quit on their own).
>
> However, it's a known issue[1] that we have ZooKeeper and Thrift resources
> that are not cleaned up (a problem which is slated to be fixed by
> Christopher's 2.0 API refactoring).
>
> Hope that makes sense.
>
> [1] https://issues.apache.org/jira/browse/ACCUMULO-2113
>
>
> David Medinets wrote:
>>
>> This might be a stupid David issue but it's at least marginally
>> related to Accumulo so I'm hoping someone will recognize the problem
>> and help.
>>
>> I am seeing this error when my program is run via maven:
>>
>>    java.lang.InterruptedException: sleep interrupted
>>
>> The program connects to a MiniAccumuloCluster and creates a table if
>> it does not exist. The program works fine inside Netbeans.
>>
>> In both NetBeans and Maven, the program connects to the
>> MiniAccumuloCluster just fine. The shutdown is the problem.
>>
>> I have a github project which should demonstrate the issue.
>>
>> # First clone the project
>> git clone https://github.com/medined/jodoc.git
>> cd jodoc
>>
>> # Then build the java image
>> cd java_zulu7
>> ./build_image.sh
>>
>> # Then compile and create a jar file
>> mvn package
>>
>> # Then build the jodoc image
>> ./build_image.sh
>>
>> # And run the jodoc image. This image runs a MiniAccumuloCluster
>> # using port 20000 for Zookeeper.
>> ./run_image.sh
>>
>> # Finally run the client program via Maven
>> mvn exec:java -Dexec.mainClass="com.codebits.jodoc.WriteAndReadDriver"
>> -DZOOKEEPER_PORT=20000
>>
>> Here is the full error stack:
>>
>> java.lang.InterruptedException: sleep interrupted
>>      at java.lang.Thread.sleep(Native Method)
>>      at
>> org.apache.accumulo.core.client.impl.ThriftTransportPool$Closer.closeConnections(ThriftTransportPool.java:137)
>>      at
>> org.apache.accumulo.core.client.impl.ThriftTransportPool$Closer.run(ThriftTransportPool.java:147)
>>      at java.lang.Thread.run(Thread.java:745)
>> 2014-11-29 21:05:18,011 ERROR
>> [com.codebits.jodoc.WriteAndReadDriver.main()-EventThread]
>> zookeeper.ClientCnxn (ClientCnxn.java:run(513)) - Event thread exiting
>> due to interruption
>> java.lang.InterruptedException
>>      at
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
>>      at
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048)
>>      at
>> java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
>>      at
>> org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
>> 2014-11-29 21:05:18,012 INFO
>> [com.codebits.jodoc.WriteAndReadDriver.main()-EventThread]
>> zookeeper.ClientCnxn (ClientCnxn.java:run(516)) - EventThread shut
>> down
>> 2014-11-29 21:05:28,010 WARN
>> [com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000)]
>> zookeeper.ClientCnxn (ClientCnxn.java:run(1185)) - Session
>> 0x149fe6a2c5a0007 for server localhost/127.0.0.1:20000, unexpected
>> error, closing socket connection and attempting reconnect
>> java.nio.channels.ClosedByInterruptException
>>      at
>> java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
>>      at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:477)
>>      at
>> org.apache.zookeeper.ClientCnxn$SendThread.doIO(ClientCnxn.java:890)
>>      at
>> org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1154)
>> 2014-11-29 21:05:29,596 INFO
>> [com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000)]
>> zookeeper.ClientCnxn (ClientCnxn.java:startConnect(1058)) - Opening
>> socket connection to server localhost/127.0.0.1:20000
>> 2014-11-29 21:05:29,596 INFO
>> [com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000)]
>> zookeeper.ClientCnxn (ClientCnxn.java:primeConnection(947)) - Socket
>> connection established to localhost/127.0.0.1:20000, initiating
>> session
>> 2014-11-29 21:05:29,598 INFO
>> [com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000)]
>> zookeeper.ClientCnxn (ClientCnxn.java:readConnectResult(736)) -
>> Session establishment complete on server localhost/127.0.0.1:20000,
>> sessionid = 0x149fe6a2c5a0007, negotiated timeout = 30000
>> [WARNING] thread
>>
>> Thread[com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000),5,com.codebits.jodoc.WriteAndReadDriver]
>> was interrupted but is still alive after waiting at least 15000msecs
>> [WARNING] thread
>>
>> Thread[com.codebits.jodoc.WriteAndReadDriver.main(localhost:20000),5,com.codebits.jodoc.WriteAndReadDriver]
>> will linger despite being asked to die via interruption
>> [WARNING] thread Thread[Thrift Connection Pool
>> Checker,5,com.codebits.jodoc.WriteAndReadDriver] will linger despite
>> being asked to die via interruption
>> [WARNING] NOTE: 2 thread(s) did not finish despite being asked to  via
>> interruption. This is not a problem with exec:java, it is a problem
>> with the running code. Although not serious, it should be remedied.
>> [WARNING] Couldn't destroy threadgroup
>>
>> org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=com.codebits.jodoc.WriteAndReadDriver,maxpri=10]
>> java.lang.IllegalThreadStateException
>>      at java.lang.ThreadGroup.destroy(ThreadGroup.java:778)
>>      at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:328)
>>      at
>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
>>      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
>>      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
>>      at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
>>      at
>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
>>      at
>> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
>>      at
>> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
>>      at
>> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
>>      at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
>>      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
>>      at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
>>      at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
>>      at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>      at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>      at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      at java.lang.reflect.Method.invoke(Method.java:483)
>>      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
>>      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
>>      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
>>      at
>> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
>>
>> ----
>>
>> Any ideas?

Mime
View raw message