chia7712 commented on code in PR #20370:
URL: https://github.com/apache/kafka/pull/20370#discussion_r2286096738
##########
core/src/test/scala/unit/kafka/coordinator/transaction/TransactionMarkerChannelManagerTest.scala:
##########
@@ -65,10 +65,8 @@ class TransactionMarkerChannelManagerTest {
private val coordinatorEpoch2 = 1
private val txnTimeoutMs = 0
private val txnResult = TransactionResult.COMMIT
- private val txnMetadata1 = new TransactionMetadata(transactionalId1,
producerId1, producerId1, RecordBatch.NO_PRODUCER_ID,
- producerEpoch, lastProducerEpoch, txnTimeoutMs,
TransactionState.PREPARE_COMMIT, util.Set.of(partition1, partition2), 0L, 0L,
TransactionVersion.TV_2)
- private val txnMetadata2 = new TransactionMetadata(transactionalId2,
producerId2, producerId2, RecordBatch.NO_PRODUCER_ID,
- producerEpoch, lastProducerEpoch, txnTimeoutMs,
TransactionState.PREPARE_COMMIT, util.Set.of(partition1), 0L, 0L,
TransactionVersion.TV_2)
+ private val txnMetadata1 = new TransactionMetadata(transactionalId1,
producerId1, producerId1, RecordBatch.NO_PRODUCER_ID, producerEpoch,
lastProducerEpoch, txnTimeoutMs, TransactionState.PREPARE_COMMIT, 0L, 0L,
TransactionVersion.TV_2)
Review Comment:
> we always call this add partitions method?
yes
https://github.com/apache/kafka/blob/f0c3d93104caa33a2566eff0656de37573a3922a/core/src/main/scala/kafka/coordinator/transaction/TransactionLog.scala#L134
we could remove the usage of `addPartitions` from production code. for
example:
```java
val state = TransactionState.fromId(value.transactionStatus)
val tps: util.Set[TopicPartition] = if
(!state.equals(TransactionState.EMPTY)) value.transactionPartitions
.stream().flatMap(partitionsSchema =>
partitionsSchema.partitionIds().stream().map(id => new
TopicPartition(partitionsSchema.topic(), id.intValue())))
.collect(Collectors.toSet)
else util.Set.of()
Some(new TransactionMetadata(
transactionalId,
value.producerId,
value.previousProducerId,
value.nextProducerId,
value.producerEpoch,
RecordBatch.NO_PRODUCER_EPOCH,
value.transactionTimeoutMs,
state,
tps,
value.transactionStartTimestampMs,
value.transactionLastUpdateTimestampMs,
TransactionVersion.fromFeatureLevel(value.clientTransactionVersion)))
```
If the method `removePartition` could adopt copy-on-write policy, the inner
member `topicPartitions` could be an immutable collection.
--
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]