Uploaded image for project: 'Commons Exec'
  1. Commons Exec
  2. EXEC-6

[exec] Watchdog test cases and argument quotation fix

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • None
    • apache commons exec trunk/head; M$ Windows XP

    Description

      Please find attached a patch for apache commons exec with respect to two issues (note that I have only tested them under M$ Windows yet, but I am very confident that these changes should work under *nix too):

      (1) ExecuteWatchdog test cases (DefaultExecutorTest.java): one for synchronous and one for asynchronous execution including the required test scripts (watchdog.bat, watchdog.sh) and test app (JavaApp.java). Whereas the one for asynchronous is a bit more elaborated and kind of "more correct", please note the hint on the well-known Java "bug"/issue under M$ Windows with respect to the Process.destroy() method in the asynchronous test case code.

      (2) Add a method to CommandLine (CommandLine.java) to add arguments without quoting, i.e. pre-quoted arguments, because default quoting may not be correct in all cases. Note that I have not tried to find out if the default quoting can be changed accordingly. And also that maybe this problem is only M$ Windows specific, but I don't know (yet). The encountered problem was:

      I want to start an executable (runMemorySud.cmd) with a list of JVM GC options that in turn will then start a Java application utilising these JVM GC options. I failed to find an accepted way of specifying the following:

      runMemorySud.cmd -XX:+UseParallelGC -XX:ParallelGCThreads=2

      After quite some time I found out that the default quoting of apache commons exec is causing the problem, and with default pure standard Java it works as expected by using (see attached ProcessTest.java example):

      Process p = new ProcessBuilder("runMemorySud.cmd", "10", "30", "-XX:+UseParallelGC", "\"-XX:ParallelGCThreads=2\"").start();

      However, as I said, I found no way of being able to "propagate this to the ProcessBuilder through apache commons exec". Thus, the need for adding a so-called pre-quoted argument addArgument() method.

      Would you mind applying these patches? Thanks.

      Attachments

        1. patch_apache-commons-exec.txt
          7 kB
          Reinhold Füreder
        2. ProcessTest.java
          0.8 kB
          Reinhold Füreder
        3. ProcessTest.java
          0.8 kB
          Reinhold Füreder

        Activity

          People

            sgoeschl Siegfried Goeschl
            reinhold.fuereder Reinhold Füreder
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: