[ 
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)

Reply via email to