gaborgsomogyi commented on PR #28142:
URL: https://github.com/apache/flink/pull/28142#issuecomment-4766476577

   Per the [API compatibility 
guarantees](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/upgrading/#api-compatibility-guarantees):
 any API without a stability annotation is considered internal, with no 
guarantees. The filter-related additions need explicit annotations.
   
   **`SavepointKeyFilter`** should be `@Experimental` at the class level. This 
covers `test()` and all factory methods (`exact()`, `range()`, `empty()`) which 
are the user-facing construction API. `@Experimental` is the right choice over 
`@PublicEvolving` because the feature is new and the API may still need to 
evolve.
   
   **The new `readKeyedState` overload** in `SavepointReader` should be 
`@Experimental` at the method level. `SavepointReader` is already 
`@PublicEvolving`; a method-level annotation overrides the class-level one for 
that specific overload without affecting the rest of the class.
   
   **`BoundInfo` vs `getLowerBound()`/`getUpperBound()`** — `BoundInfo` is 
`@Internal` but is the return type of two methods on the `@Experimental` 
interface, which is contradictory. These two methods are only used within the 
package by `RangeKeyFilter.intersect()`, which is package-private and can 
access `RangeKeyFilter` fields directly without going through the interface. 
Removing `getLowerBound()` and `getUpperBound()` from the interface resolves 
the contradiction cleanly and `BoundInfo` correctly stays `@Internal`. If they 
must stay, `BoundInfo` needs `@Experimental` too for consistency.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to