Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14904

Mark Base[En|De]coder LimitedPrivate and fix binary compat issue

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.2.0, 1.3.0, 1.0.3, 1.1.3, 0.98.17, 2.0.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      PHOENIX-2477 revealed that the changes from HBASE-14501 breaks binary compatibility in Phoenix compiled with earlier versions of HBase and run agains later versions.

      This is one of the areas that the boundary is not clear, but it won't hurt us to fix it.

      The exception trace is:

      Exception in thread "main" java.lang.NoSuchFieldError: in
      	at org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec$PhoenixBaseDecoder.<init>(IndexedWALEditCodec.java:106)
      	at org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec$IndexKeyValueDecoder.<init>(IndexedWALEditCodec.java:121)
      	at org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec.getDecoder(IndexedWALEditCodec.java:63)
      	at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initAfterCompression(ProtobufLogReader.java:292)
      	at org.apache.hadoop.hbase.regionserver.wal.ReaderBase.init(ReaderBase.java:82)
      	at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.init(ProtobufLogReader.java:148)
      	at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:316)
      	at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:281)
      	at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:269)
      	at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:418)
      	at org.apache.hadoop.hbase.wal.WALPrettyPrinter.processFile(WALPrettyPrinter.java:247)
      	at org.apache.hadoop.hbase.wal.WALPrettyPrinter.run(WALPrettyPrinter.java:422)
      	at org.apache.hadoop.hbase.wal.WALPrettyPrinter.main(WALPrettyPrinter.java:357)
      

      Although BaseDecoder.in is still there, it got changed to be a class rather than an interface. BaseDecoder is marked Private, thus the binary compat check is not run at all. Not sure whether it would have caught this.

        Attachments

        1. hbase-14904_v2.patch
          6 kB
          Enis Soztutar
        2. hbase-14904_v1.patch
          7 kB
          Enis Soztutar

          Issue Links

            Activity

              People

              • Assignee:
                enis Enis Soztutar
                Reporter:
                enis Enis Soztutar
              • Votes:
                0 Vote for this issue
                Watchers:
                7 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: