Gonzalo Muñoz Fernández created KAFKA-10503: -----------------------------------------------
Summary: MockProducer doesn't throw ClassCastException when no partition for topic Key: KAFKA-10503 URL: https://issues.apache.org/jira/browse/KAFKA-10503 Project: Kafka Issue Type: Improvement Components: clients, producer Affects Versions: 2.6.0 Reporter: Gonzalo Muñoz Fernández Though {{MockProducer}} admits serializers in its constructors, it doesn't check during {{send}} method that those serializers are the proper ones to serialize key/value included into the {{ProducerRecord}}. [This check|https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/MockProducer.java#L499-L500] is only done if there is a partition assigned for that topic. It would be an enhancement if these serialize methods were also invoked in simple scenarios, where no partition is assigned to a topic. eg: {code:java} @Test public void shouldThrowClassCastException() { MockProducer<Integer, String> producer = new MockProducer<>(true, new IntegerSerializer(), new StringSerializer()); ProducerRecord record = new ProducerRecord(TOPIC, "key1", "value1"); try { producer.send(record); fail("Should have thrown ClassCastException because record cannot be casted with serializers"); } catch (ClassCastException e) {} } {code} Currently, for obtaining the ClassCastException is needed to define the topic into a partition: {code:java} PartitionInfo partitionInfo = new PartitionInfo(TOPIC, 0, null, null, null); Cluster cluster = new Cluster(null, emptyList(), asList(partitionInfo), emptySet(), emptySet()); producer = new MockProducer(cluster, true, new DefaultPartitioner(), new IntegerSerializer(), new StringSerializer()); {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)