[
https://issues.apache.org/jira/browse/HBASE-27081?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17544678#comment-17544678
]
Duo Zhang commented on HBASE-27081:
-----------------------------------
{quote}
The API tool marked the constructor change as a break. It was trivial to make
it public again, so I changed it.
{quote}
Please see this commit
https://github.com/apache/hbase/commit/b5b286d793f00ec8b9ed02f51fd9324e46f29c86
The constructor is marked as IA.Private and the comment says to introduce a
Builder. So we introduce a builder and change the constructor to private. It
will be strange that we have a Builder but still have a public constructor.
{quote}
We don't allow the Set to SortedSet change for a minor release, not without
deprecation.
{quote}
If you do not extend a class, changing the return value from Set to SortedSet
does not break anything if you recompile your code. And I do not think it is
good idea to remove a UT, as the feature is already there so at least let's
keep the UT there and mark it as disabled. For the sorted set problem, just new
a TreeSet is enough to fix the problem if we still want to keep the return
value as Set.
But I still need to point out that, this is what we have in our ref guide, it
says that drop-in replacement is not a must have.
{quote}
A minor upgrade requires no application/client code modification. Ideally it
would be a drop-in replacement but client code, coprocessors, filters, etc
might have to be recompiled if new jars are used.
{quote}
{quote}
I also put back the DEFAULT_NORMALIZER_ENABLED fields; this is trivial.
{quote}
For this I think we need to know what we want to do in HBASE-25986. I'm afraid
adding these fields back may introduce strange behavior if we also have
something in hbase-default.xml. Let's wait for [~vjasani]'s input.
Thanks.
> Fix disallowed compatibility breaks on branch-2.5 and branch-2
> --------------------------------------------------------------
>
> Key: HBASE-27081
> URL: https://issues.apache.org/jira/browse/HBASE-27081
> Project: HBase
> Issue Type: Bug
> Affects Versions: 2.5.0
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Blocker
> Fix For: 2.5.0
>
>
> Change to Public interfaces without deprecation:
> HTableDescriptor
> Field DEFAULT_NORMALIZATION_ENABLED of type boolean has been removed from
> this class.
> TableDescriptorBuilder
> Field DEFAULT_NORMALIZATION_ENABLED of type boolean has been removed from
> this class.
> RandomRowFilter
> Field random of type java.util.Random has been removed from this class.
> A client program may be interrupted by NoSuchFieldError exception.
> ReplicationLoadSink.ReplicationLoadSink ( long age, long timestamp, long
> timestampStarted, long totalOpsProcessed )
> Access level has been changed from public to private. A client
> program may be interrupted by IllegalAccessError exception.
> RSGroupInfo.getServers:()Ljava/util/Set;
> Return value type has been changed from
> java.util.Set<org.apache.hadoop.hbase.net.Address> to
> java.util.SortedSet<org.apache.hadoop.hbase.net.Address>.
> This method has been removed because the return type is part of the method
> signature. A client program may be interrupted by NoSuchMethodError exception.
> These changes are not allowed by policy for a minor release so I have
> committed fixes on my own authority as RM to branch-2.5 and branch-2. Further
> changes can be pursued on branch-2.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)