Github user aljoscha commented on the issue:
https://github.com/apache/flink/pull/4616
The problem is that `RichSinkFunction` defines
```
public abstract void invoke(IN value) throws Exception;
```
even though it implements `SinkFunction`, which defines:
```
void invoke(IN value) throws Exception;
```
What this means is that code that is invoking these methods is different,
depending on the type of reference. For example, in
```
SinkFunction<String> interfaceSink = new SinkFunction<String>() {
@Override
public void invoke(String value) throws Exception {
}
};
SinkFunction<String> interfaceSinkToRichSink = new
RichSinkFunction<String>() {
@Override
public void invoke(String value) throws Exception {
}
};
RichSinkFunction<String> richSink = new RichSinkFunction<String>() {
@Override
public void invoke(String value) throws Exception {
}
};
interfaceSink.invoke("hello");
interfaceSinkToRichSink.invoke("hello");
richSink.invoke("hello");
```
the first two calls are `invokeinterface` while the last call is using
`invokevirtual`.
I don't think that people are using the sink interfaces for directly
calling methods on them but this is the reason the binary compatibility checker
is complaining.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---