[ 
https://issues.apache.org/jira/browse/HBASE-3400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976376#action_12976376
 ] 

HBase Review Board commented on HBASE-3400:
-------------------------------------------

Message from: ekohl...@gmail.com

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/1405/
-----------------------------------------------------------

(Updated 2010-12-31 17:45:56.197941)


Review request for hbase.


Changes
-------

Added classes that were missing for tests.


Summary
-------

Coprocessors currently do not support generic interfaces because type erasure 
makes their generic parameters appear as Objects to Invocation.java.
This can be overcome by writing out the parameters using their own types 
(rather than the type parameters), and then separately writing the class names 
for the type parameters. While it would be ideal to implement this in 
Invocation.java, some other code seems to be relying on its write order and 
doing so breaks other RPC code. The modification can, however, be implemented 
in Exec.java instead.

The included patch modifies Invocation.java's fields to that they are protected 
scope, and fully implements the read and write methods for Exec rather than 
using the parent method for the parent fields. ExecResult is also modified to 
accommodate generic returns in the same way.


This addresses bug HBASE-3400.
    http://issues.apache.org/jira/browse/HBASE-3400


Diffs (updated)
-----

  src/main/java/org/apache/hadoop/hbase/client/coprocessor/Exec.java c127ea3 
  src/main/java/org/apache/hadoop/hbase/client/coprocessor/ExecResult.java 
be46cd2 
  src/main/java/org/apache/hadoop/hbase/ipc/Invocation.java 9609652 
  src/test/java/org/apache/hadoop/hbase/coprocessor/GenericEndpoint.java 
PRE-CREATION 
  src/test/java/org/apache/hadoop/hbase/coprocessor/GenericProtocol.java 
PRE-CREATION 
  
src/test/java/org/apache/hadoop/hbase/coprocessor/TestCoprocessorEndpoint.java 
75f76e8 

Diff: http://review.cloudera.org/r/1405/diff


Testing
-------

Integration test included in patch. Demonstrates generic interface using 
objects, arrays, and primitives, and checks that all primitive classes work as 
well.


Thanks,

ekohlwey




> Coprocessor Support for Generic Interfaces
> ------------------------------------------
>
>                 Key: HBASE-3400
>                 URL: https://issues.apache.org/jira/browse/HBASE-3400
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.92.0
>            Reporter: Ed Kohlwey
>            Assignee: Ed Kohlwey
>         Attachments: HBASE-3400-2.patch, HBASE-3400-3.patch, HBASE-3400.patch
>
>
> Coprocessors currently do not support generic interfaces because type erasure 
> makes their generic parameters appear as Objects to Invocation.java.
> This can be overcome by writing out the parameters using their own types 
> (rather than the type parameters), and then separately writing the class 
> names for the type parameters. While it would be ideal to implement this in 
> Invocation.java, some other code seems to be relying on its write order and 
> doing so breaks other RPC code. The modification can, however, be implemented 
> in Exec.java instead.
> The included patch modifies Invocation.java's fields to that they are 
> protected scope, and fully implements the read and write methods for Exec 
> rather than using the parent method for the parent fields. ExecResult is also 
> modified to accommodate generic returns in the same way.

-- 
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