[ 
http://issues.apache.org/jira/browse/HADOOP-264?page=comments#action_12414178 ] 

Owen O'Malley commented on HADOOP-264:
--------------------------------------

Ok, after considering it a few minutes, I propose that all objects passed 
through RPC should be public classes with public methods. That will help when 
we factor the different servers (jobtracker vs. tasktracker) into separate 
packages (org.apache.hadoop.mapred.job vs org.apache.hadoop.mapred.task ???) 
and fundamentally the RPC interfaces are _public_ with a capital P.

However, the WritableFactory factory is still very useful for serialization and 
such. I'd propose that classes that want to register do:

static void registerWritableFactory() {
  WritableFactories.setFactory(Foo.class, new WritableFactory () { ... });
}

static {
  registerWritableFactory();
}

Then when WritableFactory wants to create an instance of a class, if no factory 
is registered, it uses reflection to find a "registerWritableFactory" method 
and calls it, if such a method exists. (We can use setAccessable to make it 
callable, even if it is not public.)

> WritableFactory has no permissions to create DatanodeRegistration
> -----------------------------------------------------------------
>
>          Key: HADOOP-264
>          URL: http://issues.apache.org/jira/browse/HADOOP-264
>      Project: Hadoop
>         Type: Bug

>   Components: dfs
>     Versions: 0.3
>     Reporter: Owen O'Malley
>     Assignee: Owen O'Malley
>     Priority: Blocker
>      Fix For: 0.3
>  Attachments: fix-datanode-registration-perm.patch
>
> The datanode can not come up because the DatanodeRegistration is package 
> local and the factory registration doesn't happen.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to