You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Over in Apache HBase we had a change (509c1b63) that added a method to a supertype of a class such that the original class' method became an override via covariant return type.
In summary, before the change:
class Query {}
class Scan extends Query {
public Scan setLoadColumnFamiliesOnDemand(boolean value);
}
and after the change:
class Query {
public Query setLoadColumnFamiliesOnDemand(boolean value);
}
class Scan extends Query {
public Scan setLoadColumnFamiliesOnDemand(boolean value);
}
Using japi-compliance-checker 2.4, this gets reported as a change in return type that will cause a High Severity binary compatibility problem for MethodNotFoundException and a Medium Severity source compatibility problem for downstream users.
Return value type has been changed from Scan to Query.
This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
Examining the class file for the updated Scan class shows that since the method now has a covariant return type two method signatures are included:
busbey$ javap -cp target/compat-check/dst/hbase-client/target/hbase-client-1.2.7.jar org.apache.hadoop.hbase.client.Scan | grep setLoadColumnFamiliesOnDemand
public org.apache.hadoop.hbase.client.Scan setLoadColumnFamiliesOnDemand(boolean);
public org.apache.hadoop.hbase.client.Query setLoadColumnFamiliesOnDemand(boolean);
japi-compliance-checker appears to mistakenly just pick up the second method signature and thus the compatibility issues.
The text was updated successfully, but these errors were encountered:
Over in Apache HBase we had a change (509c1b63) that added a method to a supertype of a class such that the original class' method became an override via covariant return type.
In summary, before the change:
and after the change:
Using japi-compliance-checker 2.4, this gets reported as a change in return type that will cause a High Severity binary compatibility problem for MethodNotFoundException and a Medium Severity source compatibility problem for downstream users.
e.g.
Examining the class file for the updated Scan class shows that since the method now has a covariant return type two method signatures are included:
japi-compliance-checker appears to mistakenly just pick up the second method signature and thus the compatibility issues.
The text was updated successfully, but these errors were encountered: