You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Johannes Bauer (JIRA)" <ji...@apache.org> on 2014/12/04 11:52:12 UTC

[jira] [Commented] (ACCUMULO-3380) MiniAccumuloCluster does not work with long classpath under Windows.

    [ https://issues.apache.org/jira/browse/ACCUMULO-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14234115#comment-14234115 ] 

Johannes Bauer commented on ACCUMULO-3380:
------------------------------------------

Both problems relate to the classpath when new processes are started by MiniAccumuloClusterImpl under Windows. 

> MiniAccumuloCluster does not work with long classpath under Windows. 
> ---------------------------------------------------------------------
>
>                 Key: ACCUMULO-3380
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3380
>             Project: Accumulo
>          Issue Type: Bug
>          Components: mini
>    Affects Versions: 1.6.0, 1.6.1
>         Environment: MS Windows
>            Reporter: Johannes Bauer
>
> When I run the MiniAccumuloCluster in a bigger test environment, it happens, that the classpath gets very long, in my example about 30,000 bytes. 
> When the MiniAccumuloCluster starts other processes, it gets the classpath in the {{getClasspath()}} function of {{MiniAccumuloClusterImpl}} . 
> It basically takes the classpath of the running process, and adds the temp directory and hands it to the new process with the {{-cp}} option in line 249 (1.6.0) : 
> {code}
>     argList.addAll(Arrays.asList(javaBin, "-Dproc=" + clazz.getSimpleName(), "-cp", classpath));
> {code}
> In my example, adding the tmp-directory just enlarges the length of the classpath over the 32,768-limit for the java-commandline. My test ends with the error
> {code}
> java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.7.0_67\jre\bin\java": CreateProcess error=206, The filename or extension is too long
> at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
> at org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:277)
> at org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:300)
> at org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl.start(MiniAccumuloClusterImpl.java:442)
> at org.apache.accumulo.minicluster.MiniAccumuloCluster.start(MiniAccumuloCluster.java:72)
> {code}
> I recommend to change the implementation to putting the classpath into the variable {{CLASSPATH}}, as described in 
> http://unserializableone.blogspot.de/2007/10/solution-to-classpath-too-long-aka.html



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)