You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Enis Soztutar (JIRA)" <ji...@apache.org> on 2015/12/02 04:11:11 UTC

[jira] [Comment Edited] (PHOENIX-2477) ClassCastException in IndexedWALEditCodec after HBASE-14501 (possible dataloss)

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

Enis Soztutar edited comment on PHOENIX-2477 at 12/2/15 3:11 AM:
-----------------------------------------------------------------

v2 patch is the actual fix. I have tested this with verifying manually that we can read what we have written back from a live WAL file. 

When testing v2, I have noticed that this area touches a possible binary incompability though. When Phoenix is compiled with an HBase version not containing HBASE-14501 (1.1.1), the phoenix-server.jar cannot be run with an HBase version containing HBASE-14501 (1.1.3).

Does Phoenix have an explicit guarantee about binary compatibility of the underlying HBase versions? I guess it is implied.

Whether this is an HBase problem or a Phoenix problem is up for discussion though. BaseDecoder and BaseEncoder are marked Private, so HBase does not consider the changes in these interfaces as breaking. However, we do not want to unnecessarily break binary compat if we can avoid it from HBase. 


was (Author: enis):
v2 patch is the actual fix. I have tested this with verifying manually that we can read what we have written back from a live WAL file. 

When testing v2, I have noticed that this area touches a possible binary incompability though. When Phoenix is compiled with an HBase version not containing HBASE-14501 (1.1.1), the phoenix-server.jar cannot be run with an HBase version containing HBASE-14501 (1.1.3).

Does Phoenix have an explicit guarantee about binary compatibility of the underlying HBase versions? I guess it is implied.

Whether this is an HBase problem or a Phoenix problem is up for discussion though. BaseDecoder and BaseEncoder are marked Private, so HBase does not consider the changes in these interfaces as breaking.  


BaseDecoder is marked with Private. 

> ClassCastException in IndexedWALEditCodec after HBASE-14501 (possible dataloss)
> -------------------------------------------------------------------------------
>
>                 Key: PHOENIX-2477
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2477
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Enis Soztutar
>            Assignee: Enis Soztutar
>            Priority: Critical
>         Attachments: phoenix-2477_v1.patch, phoenix-2477_v2.patch
>
>
> HBASE-14501 fixed the semantics in using the InputStream.available() and the interface between the actual Decoder and BaseDecoder. 
> Running Phoenix with IndexedWALEditCodec on top of an HBase version containing HBASE-14501 now causes silent data loss since the Decoder throws 
> {code}
> java.lang.ClassCastException: org.apache.hadoop.hbase.codec.BaseDecoder$PBIS cannot be cast to java.io.DataInput
> {code}
> which gets silently ignored from ProtobufLogReader. 



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