hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicholas Telford (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-4966) Put/Delete values cannot be tested with MRUnit
Date Wed, 01 Feb 2012 18:14:58 GMT

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

Nicholas Telford commented on HBASE-4966:

The changes I'm proposing are to KeyValue#equals(), I think hashCode makes sense as it stands.

I did look at changing it and it did break several tests. I began working on a patch to fix
the affected tests but quickly realized I had no way to be sure other parts of the codebase
don't rely on this behavior.
> Put/Delete values cannot be tested with MRUnit
> ----------------------------------------------
>                 Key: HBASE-4966
>                 URL: https://issues.apache.org/jira/browse/HBASE-4966
>             Project: HBase
>          Issue Type: Bug
>          Components: client, mapreduce
>    Affects Versions: 0.90.4
>            Reporter: Nicholas Telford
>            Assignee: Nicholas Telford
>            Priority: Minor
> When using the IdentityTableReducer, which expects input values of either a Put or Delete
object, testing with MRUnit the Mapper with MRUnit is not possible because neither Put nor
Delete implement equals().
> We should implement equals() on both such that equality means:
> * Both objects are of the same class (in this case, Put or Delete)
> * Both objects are for the same key.
> * Both objects contain an equal set of KeyValues (applicable only to Put)
> KeyValue.equals() appears to already be implemented, but only checks for equality of
row key, column family and column qualifier - two KeyValues can be considered "equal" if they
contain different values. This won't work for testing.
> Instead, the Put.equals() and Delete.equals() implementations should do a "deep" equality
check on their KeyValues, like this:
> {code:java}
> myKv.equals(theirKv) && Bytes.equals(myKv.getValue(), theirKv.getValue());
> {code}
> NOTE: This would impact any code that relies on the existing "identity" implementation
of Put.equals() and Delete.equals(), therefore cannot be guaranteed to be backwards-compatible.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message