[
https://issues.apache.org/jira/browse/MAPREDUCE-6991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
John Doe updated MAPREDUCE-6991:
--------------------------------
Affects Version/s: 2.5.0
> getRogueTaskPID and testProcessTree hangs when the file creation failed
> -----------------------------------------------------------------------
>
> Key: MAPREDUCE-6991
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-6991
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Affects Versions: 0.23.0, 2.0.0-alpha, 2.5.0
> Reporter: John Doe
> Priority: Major
>
> When writing to file failed, in the following thread, due to disk full,
> hardware error, etc,
> {code:java}
> private class RogueTaskThread extends Thread {
> public void run() {
> try {
> Vector<String> args = new Vector<String>();
> if(isSetsidAvailable()) {
> args.add("setsid");
> }
> args.add("bash");
> args.add("-c");
> args.add(" echo $$ > " + pidFile + "; sh " +
> shellScript + " " + N + ";") ;
> shexec = new ShellCommandExecutor(args.toArray(new String[0]));
> shexec.execute();
> } catch (ExitCodeException ee) {
> LOG.info("Shell Command exit with a non-zero exit code. This is" +
> " expected as we are killing the subprocesses of the" +
> " task intentionally. " + ee);
> } catch (IOException ioe) {
> LOG.info("Error executing shell command " + ioe);
> } finally {
> LOG.info("Exit code: " + shexec.getExitCode());
> }
> }
> }
> {code}
> The getRogueTaskPID() and testProcessTree() get stuck waiting until the file
> is created or get interrupted.
> {code:java}
> private String getRogueTaskPID() {
> File f = new File(pidFile);
> while (!f.exists()) {
> try {
> Thread.sleep(500);
> } catch (InterruptedException ie) {
> break;
> }
> }
> // read from pidFile
> return getPidFromPidFile(pidFile);
> }
> {code}
> {code:java}
> public void testProcessTree() throws Exception {
> // create pid file path string
> tempFile = new File(TEST_ROOT_DIR, getClass().getName() + "_pidFile_" +
> rm.nextInt() + ".pid");
> tempFile.deleteOnExit();
> pidFile = TEST_ROOT_DIR + File.separator + tempFile.getName();
> .....
> Thread t = new RogueTaskThread();
> t.start();
> String pid = getRogueTaskPID();
> ......
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]