Skip to content

Commit 51575e7

Browse files
committed
removed kafka.test.version definition and added consistent implementation of enqueueNewPartitions method
1 parent ba3c021 commit 51575e7

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed

itests/qtest-druid/pom.xml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
<druid.derby.version>10.11.1.1</druid.derby.version>
3737
<druid.guava.version>16.0.1</druid.guava.version>
3838
<druid.guice.version>4.1.0</druid.guice.version>
39-
<kafka.test.version>3.9.1</kafka.test.version>
4039
<druid.guice.version>4.1.0</druid.guice.version>
4140
<slf4j.version>1.7.30</slf4j.version>
4241
</properties>
@@ -219,17 +218,17 @@
219218
<dependency>
220219
<groupId>org.apache.kafka</groupId>
221220
<artifactId>kafka_2.12</artifactId>
222-
<version>${kafka.test.version}</version>
221+
<version>${kafka.version}</version>
223222
</dependency>
224223
<dependency>
225224
<groupId>org.apache.kafka</groupId>
226225
<artifactId>kafka-clients</artifactId>
227-
<version>${kafka.test.version}</version>
226+
<version>${kafka.version}</version>
228227
</dependency>
229228
<dependency>
230229
<groupId>org.apache.kafka</groupId>
231230
<artifactId>kafka-server</artifactId>
232-
<version>${kafka.test.version}</version>
231+
<version>${kafka.version}</version>
233232
</dependency>
234233
<dependency>
235234
<groupId>org.slf4j</groupId>

kafka-handler/src/java/org/apache/hadoop/hive/kafka/HiveKafkaProducer.java

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import java.util.List;
4646
import java.util.Map;
4747
import java.util.Properties;
48-
import java.util.Set;
4948
import java.util.concurrent.Future;
5049

5150
/**
@@ -188,27 +187,43 @@ short getEpoch() {
188187
*/
189188
private void flushNewPartitions() {
190189
LOG.info("Flushing new partitions");
191-
Object transactionManager = getValue(kafkaProducer, "transactionManager");
192-
Set<TopicPartition> newPartitionsInTransaction =
193-
(Set<TopicPartition>) getValue(transactionManager, "newPartitionsInTransaction");
194-
if (!newPartitionsInTransaction.isEmpty()) {
195-
TransactionalRequestResult result = enqueueNewPartitions();
196-
Object sender = getValue(kafkaProducer, "sender");
197-
invoke(sender, "wakeup");
198-
result.await();
199-
}
190+
TransactionalRequestResult result = enqueueNewPartitions();
191+
Object sender = getValue(kafkaProducer, "sender");
192+
invoke(sender, "wakeup");
193+
result.await();
200194
}
201195

202196
private synchronized TransactionalRequestResult enqueueNewPartitions() {
203197
Object transactionManager = getValue(kafkaProducer, "transactionManager");
204-
Object txnRequestHandler = invoke(transactionManager, "addPartitionsToTransactionHandler");
205-
invoke(transactionManager,
206-
"enqueueRequest",
207-
new Class[] {txnRequestHandler.getClass().getSuperclass()},
208-
new Object[] {txnRequestHandler});
209-
return (TransactionalRequestResult) getValue(txnRequestHandler,
210-
txnRequestHandler.getClass().getSuperclass(),
211-
"result");
198+
synchronized (transactionManager) {
199+
Object newPartitionsInTransaction =
200+
getValue(transactionManager, "newPartitionsInTransaction");
201+
Object newPartitionsInTransactionIsEmpty =
202+
invoke(newPartitionsInTransaction, "isEmpty");
203+
TransactionalRequestResult result;
204+
if (newPartitionsInTransactionIsEmpty instanceof Boolean
205+
&& !((Boolean) newPartitionsInTransactionIsEmpty)) {
206+
Object txnRequestHandler =
207+
invoke(transactionManager, "addPartitionsToTransactionHandler");
208+
invoke(
209+
transactionManager,
210+
"enqueueRequest",
211+
new Class[]{txnRequestHandler.getClass().getSuperclass()},
212+
new Object[]{txnRequestHandler});
213+
214+
result = (TransactionalRequestResult)
215+
getValue(
216+
txnRequestHandler,
217+
txnRequestHandler.getClass().getSuperclass(),
218+
"result");
219+
} else {
220+
// we don't have an operation but this operation string is also used in
221+
// addPartitionsToTransactionHandler.
222+
result = new TransactionalRequestResult("AddPartitionsToTxn");
223+
result.done();
224+
}
225+
return result;
226+
}
212227
}
213228

214229
@SuppressWarnings("unchecked") private static Enum<?> getEnum(String enumFullName) {

0 commit comments

Comments
 (0)