shanthoosh commented on a change in pull request #1251: SAMZA-2431: Fix the 
checkpoint and changelog topic auto-creation.
URL: https://github.com/apache/samza/pull/1251#discussion_r366608326
 
 

 ##########
 File path: 
samza-kafka/src/main/java/org/apache/samza/system/kafka/KafkaSystemAdmin.java
 ##########
 @@ -541,8 +541,11 @@ public KafkaStreamSpec toKafkaSpec(StreamSpec spec) {
           new KafkaStreamSpec(spec.getId(), spec.getPhysicalName(), 
systemName, 1, coordinatorStreamReplicationFactor,
               coordinatorStreamProperties);
     } else if (spec.isCheckpointStream()) {
-      kafkaSpec = 
KafkaStreamSpec.fromSpec(StreamSpec.createCheckpointStreamSpec(spec.getPhysicalName(),
 systemName))
-              .copyWithReplicationFactor(Integer.parseInt(new 
KafkaConfig(config).getCheckpointReplicationFactor().get()));
+      Properties checkpointTopicProperties = new Properties();
+      checkpointTopicProperties.putAll(spec.getConfig());
+      kafkaSpec = 
KafkaStreamSpec.fromSpec(StreamSpec.createCheckpointStreamSpec(spec.getPhysicalName(),
 spec.getSystemName()))
+              .copyWithReplicationFactor(Integer.parseInt(new 
KafkaConfig(config).getCheckpointReplicationFactor().get()))
+              .copyWithProperties(checkpointTopicProperties);
 
 Review comment:
   The control flow to create the checkpoint stream is the following:
   
   1. Build the checkpoint spec in `KafkaCheckpointManagerFactory`, which uses 
kafkaConfig.getCheckpointProperties to populate the config in `CheckpointSpec`.
   2. `KafkaCheckpointManager.createStream` uses the checkpoint spec that was 
built from 1 and `KafkaSystemAdmin.createStream` in-turn invokes 
`KafkaSystemAdmin.toKafkaSpec`.
   3. `KafkaSystemAdmin.toKafkaSpec(CheckpointSpec)` above is used to convert 
the incoming spec of type `StreamSpec` to `KafkaStreamSpec` .
    
   
   The config in incoming checkpoint `StreamSpec` is already built using   
`kafkaConfig.getCheckpointTopicProperties` in `KafkaCheckpointManagerFactory`. 
So using `kafkaConfig.getCheckpointProperties` here again would be redundant, 
unnecessary and might return incorrect config-bag.
   
   What do you think?

----------------------------------------------------------------
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:
[email protected]


With regards,
Apache Git Services

Reply via email to