Description
On the mailing list ctubbsii mentioned seeing some NPEs in the stderr for mvn verify.
I see one here when running mvn verify with either hadoop profile:
Exception in thread "Thread-0" java.lang.NullPointerException
at org.apache.accumulo.minicluster.MiniAccumuloCluster.stopProcessWithTimeout(MiniAccumuloCluster.java:449)
at org.apache.accumulo.minicluster.MiniAccumuloCluster.stop(MiniAccumuloCluster.java:376)
at org.apache.accumulo.minicluster.MiniAccumuloCluster$1.run(MiniAccumuloCluster.java:318)
The relevant piece of code (in 1.5.2-SNAP) is the executor.execute below
private int stopProcessWithTimeout(final Process proc, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { FutureTask<Integer> future = new FutureTask<Integer>(new Callable<Integer>() { @Override public Integer call() throws InterruptedException { proc.destroy(); return proc.waitFor(); } }); executor.execute(future); return future.get(timeout, unit); }
Reading through the code for stop, it nulls out executor when it's done. So the easy way to get an NPE is calling stop() multiple times on a MAC instance. Since we have a shutdown hook that calls stop, that means that a single user invocation of stop should result in a NPE later.
Since start() doesn't allow multiple starts, we probably shouldn't allow multiple stops. That would mean adding logic to the shutdown hook to check if we're already stopped or making a private unguarded version of stop that allows multiple calls and using that from the hook.
criteria for closing this issue:
- MAC should document wether calling stop() multiple times is allowed
- fix MAC.stop to either guard against multiple calls or handle them gracefully
- find out why this only gets an NPE in one place. Do we rely on the shutdown hook everywhere?
Attachments
Issue Links
- breaks
-
ACCUMULO-3291 MiniAccumuloClusterStartStopTest uses /tmp instead of target/
- Resolved
- is broken by
-
ACCUMULO-2985 MAC doesn't stop cleanly in 1.6.1-SNAPSHOT
- Resolved
- relates to
-
ACCUMULO-3056 Determine what desired repeated start/stop calls are on MAC
- Resolved