Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-34478

JSON-editor with File-Upload causes "Argument list too long" fatal error

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Fixed
    • None
    • Ubuntu 14.04 x64
      Oracle JDK 1.7.0_80
      Extended Choice Parameter Plug-In 0.64

    Description

      Related to: JENKINS-34440

      After using File-Upload feature from JSON-Editor with a single 2MB file upload,
      the Jenkins job return fatal error:

      [test-JSON_UI] $ /bin/bash -x /tmp/hudson8925785768174517081.sh
      FATAL: command execution failed
      java.io.IOException: Cannot run program "/bin/bash" (in directory "/home/devops/jenkins_slave/workspace/Test/test-JSON_UI"): error=7, Argument list too long
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
      at hudson.Proc$LocalProc.<init>(Proc.java:244)
      at hudson.Proc$LocalProc.<init>(Proc.java:216)
      at hudson.Launcher$LocalLauncher.launch(Launcher.java:815)
      at hudson.Launcher$ProcStarter.start(Launcher.java:381)
      at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1148)
      at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1113)
      at hudson.remoting.UserRequest.perform(UserRequest.java:120)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:326)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:745)
      at ......remote call to jenkins-slave3(192.168.100.162)(Native Method)
      at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
      at hudson.remoting.UserResponse.retrieve(UserRequest.java:220)
      at hudson.remoting.Channel.call(Channel.java:781)
      at hudson.Launcher$RemoteLauncher.launch(Launcher.java:928)
      at hudson.Launcher$ProcStarter.start(Launcher.java:381)
      at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:95)
      at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:64)
      at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
      at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
      at hudson.model.Build$BuildExecution.build(Build.java:205)
      at hudson.model.Build$BuildExecution.doRun(Build.java:162)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
      at hudson.model.Run.execute(Run.java:1738)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      at hudson.model.ResourceController.execute(ResourceController.java:98)
      at hudson.model.Executor.run(Executor.java:410)
      Caused by: java.io.IOException: error=7, Argument list too long
      at java.lang.UNIXProcess.forkAndExec(Native Method)
      at java.lang.UNIXProcess.<init>(UNIXProcess.java:187)
      at java.lang.ProcessImpl.start(ProcessImpl.java:130)
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
      at hudson.Proc$LocalProc.<init>(Proc.java:244)
      at hudson.Proc$LocalProc.<init>(Proc.java:216)
      at hudson.Launcher$LocalLauncher.launch(Launcher.java:815)
      at hudson.Launcher$ProcStarter.start(Launcher.java:381)
      at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1148)
      at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1113)
      at hudson.remoting.UserRequest.perform(UserRequest.java:120)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:326)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:745)

      Attachments

        Activity

          vimil vimil added a comment -

          Rick, I can make an enhancement to store the file in the job's work-space folder. So if the job runs on the slave then it will be available in the workspace folder which is on the slave machine.

          vimil vimil added a comment - Rick, I can make an enhancement to store the file in the job's work-space folder. So if the job runs on the slave then it will be available in the workspace folder which is on the slave machine.
          totoroliu Rick Liu added a comment -

          That'd be awesome~
          Thank you very much vimil.

          totoroliu Rick Liu added a comment - That'd be awesome~ Thank you very much vimil.
          totoroliu Rick Liu added a comment -

          By the way,

          I have another question regarding to JSON's File option:

          "File": {
          "type": "string",
          "propertyOrder": 3,

          • "media":
            Unknown macro: { "binaryEncoding"}

            ,*
            "options":

            Unknown macro: { "include_filename"}

            }

          Do I have to predefine "binaryEncoding" and "type"?
          If I want to allow user to upload either text files, or tarball files, or image files,
          then how do I make it to dynamically use different binaryEncoding and type?

          totoroliu Rick Liu added a comment - By the way, I have another question regarding to JSON's File option: "File": { "type": "string", "propertyOrder": 3, "media": Unknown macro: { "binaryEncoding"} ,* "options": Unknown macro: { "include_filename"} } Do I have to predefine "binaryEncoding" and "type"? If I want to allow user to upload either text files, or tarball files, or image files, then how do I make it to dynamically use different binaryEncoding and type?
          vimil vimil added a comment -

          version 0.65 of the plugin has the enhancement to save the json file to the workspace of the running job. This will be on the slave machine if the job is configured to run on the slave.

          the json file will be present under parameters folder in the workspace. The parameter value will hold the location of the file, so you can use that to get the json file location.

          Regarding your question about predefining "binaryEncoding" and "type", you don't have to specify the type. The users will be able to upload any type of file, but all the uploaded files will appear in the json file in base64 encoded format.

          vimil vimil added a comment - version 0.65 of the plugin has the enhancement to save the json file to the workspace of the running job. This will be on the slave machine if the job is configured to run on the slave. the json file will be present under parameters folder in the workspace. The parameter value will hold the location of the file, so you can use that to get the json file location. Regarding your question about predefining "binaryEncoding" and "type", you don't have to specify the type. The users will be able to upload any type of file, but all the uploaded files will appear in the json file in base64 encoded format.
          vimil vimil added a comment -

          marking this as fixed in version 0.65

          vimil vimil added a comment - marking this as fixed in version 0.65

          People

            vimil vimil
            totoroliu Rick Liu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: