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

Eli Collins commented on HADOOP-6796:
-------------------------------------

I think classes like FileStatus (eg writables) are special cases where the user 
has to know that they're using a constructor that leaves the object partially 
constructed. All the fields are invalid when using the default constructor, by 
the same logic we should also set a default owner, group etc instead of using 
null and converting to "". The path is not special (other parts of the system 
are not happy with "" users). While objects like this are less user friendly 
(they violate the rule that a constructor leaves an object in a valid state) 
they prevent you from allocating a bunch of objects that you're just going to 
overwrite.  The default constructor for most of the other objects that 
implement writable (eg FsPermission) leave their fields as null as well. Its a 
trade off between performance and user friendlyness, the code currently 
sacrifies user friendlyness for performance.  If we didn't do that you can see 
someone doing some profiling and following a jira that notices "we create a lot 
of objects in the default constructors that we immediately overwrite, let's 
avoid that".  Not vetoing your patch, just pointing out that there's a reason 
the code works the way it does. This isn't a one off case where it's different, 
so we should be consistent.

Assertions are only enabled when the unit tests run, so there's no performance 
impact. I think asserts are good practice, not a maintenance burden, by that's 
my 2c.


> FileStatus allows null srcPath but crashes if that's done
> ---------------------------------------------------------
>
>                 Key: HADOOP-6796
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6796
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 0.22.0
>            Reporter: Rodrigo Schmidt
>            Assignee: Rodrigo Schmidt
>            Priority: Minor
>             Fix For: 0.22.0
>
>         Attachments: HADOOP-6796.patch
>
>
> FileStatus allows constructor invocation with a null srcPath but many methods 
> like write, readFields, compareTo, equals, and hashCode depend on this 
> property.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to