Sometimes there are pending executions in process reporting, either the process is taking too long or it is stuck somewhere in the process. For processes that have the option "Allow Simultaneous Executions" unchecked, pending process executions will stop the next executions from occurring and give you the "Process is already running, executionId ...." error. There are a couple of ways to terminate the pending execution.
On the Dell Boomi Clouds
The Dell Boomi test and production cloud only allow a process to run for a maximum of 24 hours so processes will normally get terminated if it runs for that long. To terminate a pending process, follow the instructions here, Terminating a pending process execution or let it terminate by itself after 24 hours. It might take a couple of minutes for the termination to go through.
If you need the process terminated before the 24 hour mark, you can send a support ticket to request that. It will take time for the internal team to process that request. Provide the account ID, process ID and execution ID.
On Local Runtimes
On your own atoms, molecules or private clouds, you will be able to follow the same steps above to terminate a process via process reporting. If your execution is not terminated after 15 minutes following those steps above, you can manually terminate the execution:
- Look in your process reporting and see what the execution ID for your execution(s) is, e.g. "execution-b4d0364b-7611-426b-a6ae-048858fdc6da-2018.07.12". To get the execution ID, follow instructions here
- Go to the <<atom_installation_directory>>\execution\current folder
- There should be a file there with the execution ID in it e.g. "execution-b4d0364b-7611-426b-a6ae-048858fdc6da-2018.07.12.9a3a8df8-62ab-43e9-90d7-a4bcd2d647bb.cur". The ID after the execution ID is the process ID
- Delete the appropriate file in the current folder
- If you have .lck files in the current folder, you can remove them too. They should be the component ID of a related process
If the above does not work, you can try a restart of the service. Information about that execution will be lost, so check any information (like the process state or process logs, etc. if available) before restarting. Ideally you should not have other processes running and your schedules are paused for the moment. If nothing is scheduled to run around the time you plan to stop/start the service, then proceed:
- Stop the atom/molecule/cloud service
- Double check the .cur and .lck files above are not in the current folder
- Restart the atom/molecule/cloud service
- The pending execution should not be in your process reporting anymore
For forked executions running on molecules or clouds, you might need to end the JVM after doing the above steps so the pending goes away in process reporting.
- In the extended execution information window where you got the execution ID, look for the node ID to see which node the execution ran on
- Login to the node as the administrator and execute the command to find the process ID on the server:
ps -ef | grep <<execution_ID>>
ps -ef | grep execution-c36b18f5-4718-40b2-9ef4-2fe41e336cf1-2018.07.11
- This will return the process status with the PID you will need to kill, e.g. 2088
- Kill the process:
kill -9 <<PID>>
kill -9 2088
- In the extended execution information window where you got the execution ID look for the node ID to see which node the execution ran on
- Login to the node as the administrator and execute the command:
tasklist | FIND "<<execution_ID>>"
tasklist | FIND "execution-c36b18f5-4718-40b2-9ef4-2fe41e336cf1-2018.07.11"
- This will return the process with the PID you will need to kill, e.g. 20286
- End the task:
taskkill /PID <<PID>> /F
tasklist /PID 20286 /F
Setting Maximum Execution Time
A way to prevent executions from running too long is to set the maximum execution time.
Clouds and Forked Execution Enabled Molecules
On the cloud or for molecules with forked execution, you can set an advanced property called "Maximum Forked Execution Time in Cloud" to some time limit in milliseconds in the atom properties page. Alternatively, you can also set it directly in the container.properties file located in <<atom_installation_directory>>/conf folder. Add this inside the file:
com.boomi.container.maxExecutionTime=90000, where 90000 is in milliseconds
Atoms and Standard Molecules
Atoms and standard molecules (molecules that do not have forked execution enabled) can also use that same property above but the mechanics are a little differently. A task runs at a set interval to check whether an execution ran for longer than the maximum execution time or not. For cloud or forked molecules, the task runs frequently so it enforces the accuracy of the maxExecutionTime setting. For an atom and standard molecule, the internal is 15 minutes. Your execution will end within maxExecutionTime and maxExecutionTime + 15 minutes, so if you set the limit to 1 hour, the process will be stopped anytime between 1 hour and 1 hour 15 minutes.