You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@accumulo.apache.org by David Medinets <da...@gmail.com> on 2014/11/30 03:15:08 UTC

Program runs fine in NetBeans fails the shutdown properly running via Maven

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?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by Jared Winick <ja...@gmail.com>.
Please only use the "jaredwinick" package name for code that works
perfectly. Thanks. ;-)

On Sun, Nov 30, 2014 at 5:34 PM, Josh Elser <jo...@gmail.com> wrote:

> Great. Glad it's working as expected.
>
>
> David Medinets wrote:
>
>> Of course I did. Using CleanUp.shutdownNow(); works perfectly from
>> inside the "mvn exec:java" command. Excellent.
>>
>> On Sun, Nov 30, 2014 at 6:54 PM, Josh Elser<jo...@gmail.com>  wrote:
>>
>>> David Medinets wrote:
>>>
>>>> I experimented a bit more. In the waitForZooKeeperClientThreads
>>>> method, I added a "thread.interrupt" call inside the "while
>>>> (thread.isAlive())" loop. It seems like the thread is interrupted
>>>> after a few seconds, but then is reconnected. Darn that resiliency!
>>>> I've watched it reconnect four times before I killed the process. Can
>>>> I reset the retry number somehow? Am I too far down the rabbit hole?
>>>>
>>>
>>> You shouldn't have to interrupt the ZK threads (I'm not sure what it's
>>> doing
>>> underneath the hood when you do so). As the comment in that method says,
>>> ZooKeeper.close() is non-blocking, so that loop will finish gracefully
>>> (given ZooKeeper.close() is performing how we expect it to).
>>>
>>>
>>>  java.lang.InterruptedException: sleep interrupted
>>>>       at java.lang.Thread.sleep(Native Method)
>>>>       at
>>>> org.apache.zookeeper.ClientCnxn$SendThread.
>>>> startConnect(ClientCnxn.java:1045)
>>>>       at
>>>> org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1101)
>>>> 2014-11-30 09:29:32,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-30 09:29:32,597 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-30 09:29:32,599 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 = 0x1
>>>>
>>>>
>>>> On Sun, Nov 30, 2014 at 9:10 AM, David Medinets
>>>> <da...@gmail.com>   wrote:
>>>>
>>>>> Right again. I changed the package name to "jaredwinick" and the
>>>>> "sealing violation" issue was resolved. But the JIRA ticket comments
>>>>> were correct about the code's being brittle. It has a String literal
>>>>> that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
>>>>> does not exist in Accumulo v1.6.1.
>>>>>
>>>>
>>> I'm sure Jared is pleased with your alternative package name.
>>>
>>> Did you copy/paste the code Jared had on his Github rather than using the
>>> variant we have in the codebase (org.apache.accumulo.core.util.CleanUp)?
>>>
>>

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by Josh Elser <jo...@gmail.com>.
Great. Glad it's working as expected.

David Medinets wrote:
> Of course I did. Using CleanUp.shutdownNow(); works perfectly from
> inside the "mvn exec:java" command. Excellent.
>
> On Sun, Nov 30, 2014 at 6:54 PM, Josh Elser<jo...@gmail.com>  wrote:
>> David Medinets wrote:
>>> I experimented a bit more. In the waitForZooKeeperClientThreads
>>> method, I added a "thread.interrupt" call inside the "while
>>> (thread.isAlive())" loop. It seems like the thread is interrupted
>>> after a few seconds, but then is reconnected. Darn that resiliency!
>>> I've watched it reconnect four times before I killed the process. Can
>>> I reset the retry number somehow? Am I too far down the rabbit hole?
>>
>> You shouldn't have to interrupt the ZK threads (I'm not sure what it's doing
>> underneath the hood when you do so). As the comment in that method says,
>> ZooKeeper.close() is non-blocking, so that loop will finish gracefully
>> (given ZooKeeper.close() is performing how we expect it to).
>>
>>
>>> java.lang.InterruptedException: sleep interrupted
>>>       at java.lang.Thread.sleep(Native Method)
>>>       at
>>> org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1045)
>>>       at
>>> org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1101)
>>> 2014-11-30 09:29:32,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-30 09:29:32,597 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-30 09:29:32,599 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 = 0x1
>>>
>>>
>>> On Sun, Nov 30, 2014 at 9:10 AM, David Medinets
>>> <da...@gmail.com>   wrote:
>>>> Right again. I changed the package name to "jaredwinick" and the
>>>> "sealing violation" issue was resolved. But the JIRA ticket comments
>>>> were correct about the code's being brittle. It has a String literal
>>>> that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
>>>> does not exist in Accumulo v1.6.1.
>>
>> I'm sure Jared is pleased with your alternative package name.
>>
>> Did you copy/paste the code Jared had on his Github rather than using the
>> variant we have in the codebase (org.apache.accumulo.core.util.CleanUp)?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by David Medinets <da...@gmail.com>.
Of course I did. Using CleanUp.shutdownNow(); works perfectly from
inside the "mvn exec:java" command. Excellent.

On Sun, Nov 30, 2014 at 6:54 PM, Josh Elser <jo...@gmail.com> wrote:
> David Medinets wrote:
>>
>> I experimented a bit more. In the waitForZooKeeperClientThreads
>> method, I added a "thread.interrupt" call inside the "while
>> (thread.isAlive())" loop. It seems like the thread is interrupted
>> after a few seconds, but then is reconnected. Darn that resiliency!
>> I've watched it reconnect four times before I killed the process. Can
>> I reset the retry number somehow? Am I too far down the rabbit hole?
>
>
> You shouldn't have to interrupt the ZK threads (I'm not sure what it's doing
> underneath the hood when you do so). As the comment in that method says,
> ZooKeeper.close() is non-blocking, so that loop will finish gracefully
> (given ZooKeeper.close() is performing how we expect it to).
>
>
>> java.lang.InterruptedException: sleep interrupted
>>      at java.lang.Thread.sleep(Native Method)
>>      at
>> org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1045)
>>      at
>> org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1101)
>> 2014-11-30 09:29:32,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-30 09:29:32,597 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-30 09:29:32,599 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 = 0x1
>>
>>
>> On Sun, Nov 30, 2014 at 9:10 AM, David Medinets
>> <da...@gmail.com>  wrote:
>>>
>>> Right again. I changed the package name to "jaredwinick" and the
>>> "sealing violation" issue was resolved. But the JIRA ticket comments
>>> were correct about the code's being brittle. It has a String literal
>>> that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
>>> does not exist in Accumulo v1.6.1.
>
>
> I'm sure Jared is pleased with your alternative package name.
>
> Did you copy/paste the code Jared had on his Github rather than using the
> variant we have in the codebase (org.apache.accumulo.core.util.CleanUp)?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by Josh Elser <jo...@gmail.com>.
David Medinets wrote:
> I experimented a bit more. In the waitForZooKeeperClientThreads
> method, I added a "thread.interrupt" call inside the "while
> (thread.isAlive())" loop. It seems like the thread is interrupted
> after a few seconds, but then is reconnected. Darn that resiliency!
> I've watched it reconnect four times before I killed the process. Can
> I reset the retry number somehow? Am I too far down the rabbit hole?

You shouldn't have to interrupt the ZK threads (I'm not sure what it's 
doing underneath the hood when you do so). As the comment in that method 
says, ZooKeeper.close() is non-blocking, so that loop will finish 
gracefully (given ZooKeeper.close() is performing how we expect it to).

> java.lang.InterruptedException: sleep interrupted
>      at java.lang.Thread.sleep(Native Method)
>      at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1045)
>      at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1101)
> 2014-11-30 09:29:32,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-30 09:29:32,597 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-30 09:29:32,599 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 = 0x1
>
>
> On Sun, Nov 30, 2014 at 9:10 AM, David Medinets
> <da...@gmail.com>  wrote:
>> Right again. I changed the package name to "jaredwinick" and the
>> "sealing violation" issue was resolved. But the JIRA ticket comments
>> were correct about the code's being brittle. It has a String literal
>> that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
>> does not exist in Accumulo v1.6.1.

I'm sure Jared is pleased with your alternative package name.

Did you copy/paste the code Jared had on his Github rather than using 
the variant we have in the codebase (org.apache.accumulo.core.util.CleanUp)?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by David Medinets <da...@gmail.com>.
I experimented a bit more. In the waitForZooKeeperClientThreads
method, I added a "thread.interrupt" call inside the "while
(thread.isAlive())" loop. It seems like the thread is interrupted
after a few seconds, but then is reconnected. Darn that resiliency!
I've watched it reconnect four times before I killed the process. Can
I reset the retry number somehow? Am I too far down the rabbit hole?

java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1045)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1101)
2014-11-30 09:29:32,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-30 09:29:32,597 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-30 09:29:32,599 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 = 0x1


On Sun, Nov 30, 2014 at 9:10 AM, David Medinets
<da...@gmail.com> wrote:
> Right again. I changed the package name to "jaredwinick" and the
> "sealing violation" issue was resolved. But the JIRA ticket comments
> were correct about the code's being brittle. It has a String literal
> that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
> does not exist in Accumulo v1.6.1.
>
> On Sun, Nov 30, 2014 at 12:05 AM, Josh Elser <jo...@gmail.com> wrote:
>> I believe that means you re-used the package org.apache.accumulo.core.util
>> which was already defined in accumulo-core.jar.
>>
>> Don't do that.
>>
>>
>> David Medinets wrote:
>>>
>>> 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<jo...@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?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by David Medinets <da...@gmail.com>.
Right again. I changed the package name to "jaredwinick" and the
"sealing violation" issue was resolved. But the JIRA ticket comments
were correct about the code's being brittle. It has a String literal
that refers to "org.apache.accumulo.core.zookeeper.ZooSession"which
does not exist in Accumulo v1.6.1.

On Sun, Nov 30, 2014 at 12:05 AM, Josh Elser <jo...@gmail.com> wrote:
> I believe that means you re-used the package org.apache.accumulo.core.util
> which was already defined in accumulo-core.jar.
>
> Don't do that.
>
>
> David Medinets wrote:
>>
>> 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<jo...@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?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by Josh Elser <jo...@gmail.com>.
I believe that means you re-used the package 
org.apache.accumulo.core.util which was already defined in 
accumulo-core.jar.

Don't do that.

David Medinets wrote:
> 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<jo...@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?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by David Medinets <da...@gmail.com>.
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 <jo...@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?

Re: Program runs fine in NetBeans fails the shutdown properly running via Maven

Posted by Josh Elser <jo...@gmail.com>.
 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?