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

Replace usage of our Base64 implementation with java.util.Base64

    XMLWordPrintableJSON

Details

    • Incompatible change, Reviewed
    • Hide
      Class org.apache.hadoop.hbase.util.Base64 has been removed in it's entirety from HBase 2+. In HBase 1, unused methods have been removed from the class and the audience was changed from Public to Private. This class was originally intended as an internal utility class that could be used externally but thinking since changed; these classes should not have been advertised as public to end-users.

      This represents an incompatible change for users who relied on this implementation. An alternative implementation for affected clients is available at java.util.Base64 when using Java 8 or newer; be aware, it may encode/decode differently. For clients seeking to restore this specific implementation, it is available in the public domain for download at http://iharder.sourceforge.net/current/java/base64/

      Show
      Class org.apache.hadoop.hbase.util.Base64 has been removed in it's entirety from HBase 2+. In HBase 1, unused methods have been removed from the class and the audience was changed from Public to Private. This class was originally intended as an internal utility class that could be used externally but thinking since changed; these classes should not have been advertised as public to end-users. This represents an incompatible change for users who relied on this implementation. An alternative implementation for affected clients is available at java.util.Base64 when using Java 8 or newer; be aware, it may encode/decode differently. For clients seeking to restore this specific implementation, it is available in the public domain for download at http://iharder.sourceforge.net/current/java/base64/

    Description

      We have a public domain implementation of Base64 that is copied into our code base and infrequently receives updates. We should replace usage of that with the new Java 8 java.util.Base64 where possible.

      For the migration, I propose a phased approach.

      • Deprecate on 1.x and 2.x to signal to users that this is going away.
      • Replace usages on branch-2 and master with j.u.Base64
      • Delete our implementation of Base64 on master.

      Does this seem in line with our API compatibility requirements?

      Attachments

        1. HBASE-20884.master.001.patch
          93 kB
          Mike Drob
        2. HBASE-20884.branch-1.001.patch
          30 kB
          Mike Drob
        3. HBASE-20884.branch-1.002.patch
          14 kB
          Mike Drob

        Issue Links

          Activity

            People

              mdrob Mike Drob
              mdrob Mike Drob
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: