[ 
https://issues.apache.org/jira/browse/HADOOP-11903?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14613977#comment-14613977
 ] 

Kengo Seki commented on HADOOP-11903:
-------------------------------------

Attached a patch.

Adding Default-foo is detected as follows (showing only related parts):

{code}
[sekikn@mobile hadoop]$ cat ~/add_default.patch 
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DefaultUtil.java
 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DefaultUtil.java
new file mode 100644
index 0000000..ca3be96
--- /dev/null
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DefaultUtil.java
@@ -0,0 +1,20 @@

(snip)

+package org.apache.hadoop.util;
+
+public interface DefaultUtil { }
[sekikn@mobile hadoop]$ dev-support/test-patch.sh 
--basedir=/Users/sekikn/hadoop --project=hadoop --resetrepo ~/add_default.patch 

| Vote |      Subsystem |  Runtime   | Comment
============================================================================
|  -1  |     classname  |  0m 00s    | The patch has 1 new problematic 
|      |                |            | classnames.

|| Subsystem || Report/Notes ||
============================================================================
| classname | /private/tmp/test-patch-hadoop/70393/bad-classname.txt |
{code}

But modifying existing Default-foo is not considered to be a problem:

{code}
[sekikn@mobile hadoop]$ cat ~/modify_default.patch 
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/DefaultStringifier.java
 
b/hadoop-common-project/hadoopcommon/src/main/java/org/apache/hadoop/io/DefaultStringifier.java
index 3ba577f..8b0bfd5 100644
--- 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/DefaultStringifier.java
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/DefaultStringifier.java
@@ -203,5 +203,4 @@ public void close() throws IOException {
       stringifier.close();
     }
   }
-
 }
[sekikn@mobile hadoop]$ dev-support/test-patch.sh 
--basedir=/Users/sekikn/hadoop --project=hadoop --resetrepo 
~/modify_default.patch 

| Vote |      Subsystem |  Runtime   | Comment
============================================================================
|  +1  |     classname  |  0m 00s    | Patch has no classname issues. 
{code}

Of course, unrelated changes are not regarded as problems:

{code}
[sekikn@mobile hadoop]$ cat ~/add_new.patch 
diff --git 
a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/NewClass.java
 
b/hadoop-common-project/hadoopcommon/src/main/java/org/apache/hadoop/NewClass.java
new file mode 100644
index 0000000..60c2057
--- /dev/null
+++ 
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/NewClass.java
@@ -0,0 +1,20 @@

(snip)

+package org.apache.hadoop;
+
+public class NewClass { }
[sekikn@mobile hadoop]$ dev-support/test-patch.sh 
--basedir=/Users/sekikn/hadoop --project=hadoop --resetrepo ~/add_new.patch 

| Vote |      Subsystem |  Runtime   | Comment
============================================================================
|  +1  |     classname  |  0m 00s    | Patch has no classname issues. 
{code}

Users can specify the patterns which are regarded as invalid classnames:

{code}
[sekikn@mobile hadoop]$ dev-support/test-patch.sh 
--basedir=/Users/sekikn/hadoop --project=hadoop --resetrepo 
--classname-re='^Default|^New' ~/add_new.patch 

| Vote |      Subsystem |  Runtime   | Comment
============================================================================
|  -1  |     classname  |  0m 00s    | The patch has 1 new problematic 
|      |                |            | classnames.

|| Subsystem || Report/Notes ||
============================================================================
| classname | /private/tmp/test-patch-hadoop/25538/bad-classname.txt |

[sekikn@mobile hadoop]$ cat 
/private/tmp/test-patch-hadoop/25538/bad-classname.txt
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/NewClass.java
{code}

> test-patch should fail any new classes called Default-foo
> ---------------------------------------------------------
>
>                 Key: HADOOP-11903
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11903
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: yetus
>    Affects Versions: HADOOP-12111
>            Reporter: Allen Wittenauer
>            Assignee: Kengo Seki
>         Attachments: HADOOP-11903.HADOOP-12111.00.patch
>
>
> In the past, we've named things like DefaultResourceCalculator, 
> DefaultContainerExecutor, and DefaultCodec that do nothing but cause problems 
> down the road since they are effectively version and functionality locked 
> forever.  If these examples had been named what they truly were (e.g., 
> MemoryResourceCalculator, SimpleContainerExecutor, and GZipCodec), the 
> defaults could then be changed in the future in a compatible way. 
> One way to enforce this is to prevent the creation of new classes called 
> Default-anything. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to