[jira] [Commented] (MAPREDUCE-5253) Whitespace value entry in mapred-site.xml for name=mapred.reduce.child.java.opts causes child tasks to fail at launch

2013-05-16 Thread Karl D. Gierach (JIRA)

[ 
https://issues.apache.org/jira/browse/MAPREDUCE-5253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13660100#comment-13660100
 ] 

Karl D. Gierach commented on MAPREDUCE-5253:


The patch also should be applied to this file under the current trunk (as noted 
by Chris Nauroth).

https://github.com/apache/hadoop-common/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapred/MapReduceChildJVM.java#L156

 Whitespace value entry in mapred-site.xml for 
 name=mapred.reduce.child.java.opts causes child tasks to fail at launch
 -

 Key: MAPREDUCE-5253
 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5253
 Project: Hadoop Map/Reduce
  Issue Type: Bug
  Components: task
Affects Versions: 1.1.2
 Environment: Centos 6.2 32Bit, OpenJDK
Reporter: Karl D. Gierach
 Fix For: 1.1.3


 Hi,
 Below is a patch for Hadoop v1.1.2.  I'm new to this list, so if I need to 
 write up a JIRA ticket for this, please let me know.
 The defect scenario is that if you enter any white space within values in 
 this file:
 /etc/hadoop/mapred-site.xml
 e.g.: (a white space prior to the -X...)
   property
 namemapred.reduce.child.java.opts/name
 value -Xmx1G/value
   /property
 All of the child jobs fail, and each child gets an error in the stderr log 
 like:
 Could not find the main class: . Program will exit.
 The root cause is obvious in the patch below - the split on the value was 
 done on whitespace, and any preceding whitespace ultimately becomes a 
 zero-length entry on the child jvm command line, causing the jvm to think 
 that a '' argument is the main class.   The patch just skips over any 
 zero-length entries prior to adding them to the jvm vargs list.  I looked in 
 trunk as well, to see if the patch would apply there but it looks like Tasks 
 were refactored and this code file is not present any more.
 This error occurred on Open JDK, Centos 6.2, 32 bit.
 Regards,
 Karl
 Index: src/mapred/org/apache/hadoop/mapred/TaskRunner.java
 ===
 --- src/mapred/org/apache/hadoop/mapred/TaskRunner.java(revision 1482686)
 +++ src/mapred/org/apache/hadoop/mapred/TaskRunner.java(working copy)
 @@ -437,7 +437,9 @@
vargs.add(-Djava.library.path= + libraryPath);
  }
  for (int i = 0; i  javaOptsSplit.length; i++) {
 -  vargs.add(javaOptsSplit[i]);
 +  if( javaOptsSplit[i].trim().length()  0 ) {
 +vargs.add(javaOptsSplit[i]);
 +  }
  }
  
  Path childTmpDir = createChildTmpDir(workDir, conf, false);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (MAPREDUCE-5253) Whitespace value entry in mapred-site.xml for name=mapred.reduce.child.java.opts causes child tasks to fail at launch

2013-05-15 Thread Karl D. Gierach (JIRA)
Karl D. Gierach created MAPREDUCE-5253:
--

 Summary: Whitespace value entry in mapred-site.xml for 
name=mapred.reduce.child.java.opts causes child tasks to fail at launch
 Key: MAPREDUCE-5253
 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5253
 Project: Hadoop Map/Reduce
  Issue Type: Bug
  Components: task
Affects Versions: 1.1.2
 Environment: Centos 6.2 32Bit, OpenJDK
Reporter: Karl D. Gierach
 Fix For: 1.1.3


Hi,

Below is a patch for Hadoop v1.1.2.  I'm new to this list, so if I need to 
write up a JIRA ticket for this, please let me know.

The defect scenario is that if you enter any white space within values in this 
file:
/etc/hadoop/mapred-site.xml

e.g.: (a white space prior to the -X...)

  property
namemapred.reduce.child.java.opts/name
value -Xmx1G/value
  /property

All of the child jobs fail, and each child gets an error in the stderr log like:

Could not find the main class: . Program will exit.

The root cause is obvious in the patch below - the split on the value was done 
on whitespace, and any preceding whitespace ultimately becomes a zero-length 
entry on the child jvm command line, causing the jvm to think that a '' 
argument is the main class.   The patch just skips over any zero-length entries 
prior to adding them to the jvm vargs list.  I looked in trunk as well, to see 
if the patch would apply there but it looks like Tasks were refactored and this 
code file is not present any more.

This error occurred on Open JDK, Centos 6.2, 32 bit.

Regards,
Karl


Index: src/mapred/org/apache/hadoop/mapred/TaskRunner.java
===
--- src/mapred/org/apache/hadoop/mapred/TaskRunner.java(revision 1482686)
+++ src/mapred/org/apache/hadoop/mapred/TaskRunner.java(working copy)
@@ -437,7 +437,9 @@
   vargs.add(-Djava.library.path= + libraryPath);
 }
 for (int i = 0; i  javaOptsSplit.length; i++) {
-  vargs.add(javaOptsSplit[i]);
+  if( javaOptsSplit[i].trim().length()  0 ) {
+vargs.add(javaOptsSplit[i]);
+  }
 }
 
 Path childTmpDir = createChildTmpDir(workDir, conf, false);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira