confluent-kafka-python icon indicating copy to clipboard operation
confluent-kafka-python copied to clipboard

String representation of a TopicPartition raises a SystemError on Windows with Python 3.12.1 and Confluent Kafka Python 2.3.0

Open geoffrey-davey-vattenfall opened this issue 1 year ago • 2 comments

Description

String representation of a TopicPartition raises a SystemError on Windows with Python 3.12.1 and Confluent Kafka Python 2.3.0.

How to reproduce

(test-2024-02-28) PS C:\gdavey\src\test> python
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import confluent_kafka
>>> tp = confluent_kafka.TopicPartition("my_topic")
>>> print(tp)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: invalid format string: %I32d,offset=%s,leader_epoch=%s,error=%s}
>>>

Checklist

Please provide the following information:

  • [x] confluent-kafka-python and librdkafka version (confluent_kafka.version() and confluent_kafka.libversion()): ('2.3.0', 33751040), ('2.3.0', 33751295)
  • [ ] Apache Kafka broker version:
  • [ ] Client configuration: {...}
  • [x] Operating system: Windows
  • [ ] Provide client logs (with 'debug': '..' as necessary)
  • [ ] Provide broker log excerpts
  • [ ] Critical issue

I have got the same issue with Python 3.12.11 on Windows 11. Quick research found the possible error source:

https://github.com/confluentinc/confluent-kafka-python/blob/c84a2176646564c733b95c9cb71b25f3c0c759d1/src/confluent_kafka/src/confluent_kafka.c#L1129-L1135

maybe should be modified to

	ret = cfl_PyUnistr(
		_FromFormat("TopicPartition{topic=%s,partition=%d,offset=%s,leader_epoch=%s,error=%s}",
			    self->topic, self->partition,
			    offset_str,
                            leader_epoch_str,
			    c_errstr ? c_errstr : "None"));

stlehmann avatar Jun 11 '25 07:06 stlehmann