mjsax commented on a change in pull request #10731:
URL: https://github.com/apache/kafka/pull/10731#discussion_r644507242



##########
File path: 
streams/src/main/java/org/apache/kafka/streams/kstream/internals/KTableTransformValues.java
##########
@@ -158,7 +158,11 @@ public void init(final ProcessorContext context) {
             internalProcessorContext.setRecordContext(new 
ProcessorRecordContext(
                 valueAndTimestamp == null ? UNKNOWN : 
valueAndTimestamp.timestamp(),
                 -1L, // we don't know the original offset
-                currentContext.partition(),
+                // technically, we know the partition, but in the new 
`api.Processor` class,
+                // we move to `RecordMetadata` than would be `null` for this 
case and thus
+                // we won't have the partition information, so it's better to 
now provide it
+                // here either, to not introduce a regression later on
+                -1,

Review comment:
       @vvcephei I think it's better to change this...

##########
File path: 
streams/src/main/java/org/apache/kafka/streams/kstream/ValueTransformerWithKey.java
##########
@@ -75,14 +75,21 @@
     void init(final ProcessorContext context);
 
     /**
-     * Transform the given [key and ]value to a new value.
+     * Transform the given [key and] value to a new value.
      * Additionally, any {@link StateStore} that is {@link 
KStream#transformValues(ValueTransformerWithKeySupplier, String...)
      * attached} to this operator can be accessed and modified arbitrarily (cf.
      * {@link ProcessorContext#getStateStore(String)}).
      * <p>
-     * Note, that using {@link ProcessorContext#forward(Object, Object)} or
+     * Note that using {@link ProcessorContext#forward(Object, Object)} or
      * {@link ProcessorContext#forward(Object, Object, To)} is not allowed 
within {@code transform} and
      * will result in an {@link StreamsException exception}.
+     * <p>
+     * Note that if a {@code ValueTransformerWithKey} is used in a {@link 
KTable#transformValues(ValueTransformerWithKeySupplier, String...)}
+     * (or any other overload of {@code KTable#transformValues(...)}) 
operation,
+     * then the provided {@link ProcessorContext} from {@link 
#init(ProcessorContext)}
+     * does not guarantee that all context information will be available when 
{@code transform()}
+     * is executed, as it might be executed "out-of-band" due to some internal 
optimizations
+     * applied by the Kafka Streams DSL.

Review comment:
       @vvcephei Updated the text a little bit.
   
   Don't think we should talk about punctuations because it does not apply for 
the "ValueGetter" optimization case that we fixed. Did a follow up PR instead: 
https://github.com/apache/kafka/pull/10810




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

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to