1717#
1818
1919import pytest
20- from confluent_kafka import TopicPartition , OFFSET_END , KafkaError
20+ from confluent_kafka import TopicPartition , OFFSET_END , KafkaError , KafkaException
2121
2222from confluent_kafka .error import ConsumeError
2323from confluent_kafka .serialization import StringSerializer
@@ -44,3 +44,53 @@ def test_consume_error(kafka_cluster):
4444 consumer .poll ()
4545 assert exc_info .value .args [0 ].code () == KafkaError ._PARTITION_EOF , \
4646 "Expected _PARTITION_EOF, not {}" .format (exc_info )
47+
48+
49+ def test_consume_error_commit (kafka_cluster ):
50+ """
51+ Tests to ensure that we handle messages with errors when commiting.
52+ """
53+ topic = kafka_cluster .create_topic ("test_commit_transaction" )
54+ consumer_conf = {'group.id' : 'pytest' ,
55+ 'session.timeout.ms' : 100 }
56+
57+ producer = kafka_cluster .producer ()
58+ producer .produce (topic = topic , value = "a" )
59+ producer .flush ()
60+
61+ consumer = kafka_cluster .cimpl_consumer (consumer_conf )
62+ consumer .subscribe ([topic ])
63+ try :
64+ # Since the session timeout value is low, JoinGroupRequest will fail
65+ # and we get error in a message while polling.
66+ m = consumer .poll (1 )
67+ consumer .commit (m )
68+ except KafkaException as e :
69+ assert e .args [0 ].code () == KafkaError ._INVALID_ARG , \
70+ "Expected INVALID_ARG, not {}" .format (e )
71+
72+
73+ def test_consume_error_store_offsets (kafka_cluster ):
74+ """
75+ Tests to ensure that we handle messages with errors when storing offsets.
76+ """
77+ topic = kafka_cluster .create_topic ("test_commit_transaction" )
78+ consumer_conf = {'group.id' : 'pytest' ,
79+ 'session.timeout.ms' : 100 ,
80+ 'enable.auto.offset.store' : True ,
81+ 'enable.auto.commit' : False }
82+
83+ producer = kafka_cluster .producer ()
84+ producer .produce (topic = topic , value = "a" )
85+ producer .flush ()
86+
87+ consumer = kafka_cluster .cimpl_consumer (consumer_conf )
88+ consumer .subscribe ([topic ])
89+ try :
90+ # Since the session timeout value is low, JoinGroupRequest will fail
91+ # and we get error in a message while polling.
92+ m = consumer .poll (1 )
93+ consumer .store_offsets (m )
94+ except KafkaException as e :
95+ assert e .args [0 ].code () == KafkaError ._INVALID_ARG , \
96+ "Expected INVALID_ARG, not {}" .format (e )
0 commit comments