mjsax commented on code in PR #21683:
URL: https://github.com/apache/kafka/pull/21683#discussion_r2902979730


##########
streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingWindowBytesStoreTest.java:
##########
@@ -64,14 +64,9 @@ public void setUp() {
         store.init(context, store);
     }
 
-    @AfterEach
-    public void tearDown() {
-        verify(inner).init(context, store);

Review Comment:
   Same



##########
streams/src/test/java/org/apache/kafka/streams/state/internals/ChangeLoggingTimestampedWindowBytesStoreTest.java:
##########
@@ -65,14 +65,9 @@ public void setUp() {
         store.init(context, store);
     }
 
-    @AfterEach
-    public void tearDown() {
-        verify(inner).init(context, store);

Review Comment:
   Totally unrelated side cleanup -- but doesn't make any sense to have a 
`verify` in `@AfterEach` -- this should just be part of the test, which is 
empty atm and "misuses" the `teatDown()` method to actually test what it should 
test...



##########
streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java:
##########
@@ -106,8 +106,7 @@ public class MeteredKeyValueStore<K, V>
     protected NavigableSet<MeteredIterator> openIterators = new 
ConcurrentSkipListSet<>(Comparator.comparingLong(MeteredIterator::startTimestamp));
 
 
-    @SuppressWarnings("rawtypes")
-    private final Map<Class, QueryHandler> queryHandlers =
+    private final Map<Class<?>, QueryHandler<?>> queryHandlers =

Review Comment:
   If we cannot have safe types, make it explicit using `<?>` (similar 
elsewhere)



##########
streams/src/main/java/org/apache/kafka/streams/state/internals/MeteredKeyValueStore.java:
##########
@@ -209,22 +225,23 @@ record -> listener.apply(
 
     @SuppressWarnings("unchecked")
     @Override
-    public <R> QueryResult<R> query(final Query<R> query,
-                                    final PositionBound positionBound,
-                                    final QueryConfig config) {
-
+    public <R> QueryResult<R> query(
+        final Query<R> query,
+        final PositionBound positionBound,
+        final QueryConfig config
+    ) {
         final long start = time.nanoseconds();
         final QueryResult<R> result;
 
-        final QueryHandler handler = queryHandlers.get(query.getClass());
+        final QueryHandler<?> handler = queryHandlers.get(query.getClass());
         if (handler == null) {
             result = wrapped().query(query, positionBound, config);
             if (config.isCollectExecutionInfo()) {
                 result.addExecutionInfo(
                     "Handled in " + getClass() + " in " + (time.nanoseconds() 
- start) + "ns");
             }
         } else {
-            result = (QueryResult<R>) handler.apply(
+            result = ((QueryHandler<R>) handler).apply(

Review Comment:
   That we have improved type check on the the `QueryHandler`, we need to cast 
the handler, and get the correct result type automatically.
   
   This is still cleaner. The issue is with the `queryHandlers` Map that 
introduces the missing types, so the "problem" is not at the right place in the 
code.
   
   (similar elsewhere in this PR)



##########
streams/src/main/java/org/apache/kafka/streams/state/internals/StoreQueryUtils.java:
##########
@@ -69,17 +69,16 @@ public final class StoreQueryUtils {
      * in a map.
      */
     @FunctionalInterface
-    public interface QueryHandler {
-        QueryResult<?> apply(
-            final Query<?> query,
+    public interface QueryHandler<R> {
+        QueryResult<R> apply(
+            final Query<R> query,

Review Comment:
   This is the key change -- If we get a `Query` with gives us result `R`, and 
we `apply` it, we should get a `QueryResult<R>` back -- And we thy the result 
type `R` to the `QueryHandler` interface.
   
   Not using any types here, is unnecessarily loose I believe.



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