Gary,

thanks for the question. We recently had a discussion about the exact
some topic:
http://mail-archives.apache.org/mod_mbox/kafka-dev/202003.mbox/%3CCAJKanumaUg7bcRr%3DoZqQq9aWuO%3DfA5U1uvxAciB6RbYsvsEbYQ%40mail.gmail.com%3E
Note that the "old" `sendOffsetsToTransaction(..., String groupId)` is
not deprecated. Hence, why do you want/need to switch to the newer
overload that only works for 2.5+ brokers? For many/most cases, the
"old" API that is compatible with older broker still does what you need
and there in not need to switch to the newer API.


-Matthias


On 4/2/20 1:54 PM, Gary Russell wrote:
> Thanks, Boyang,
> 
> I maintain a framework (Spring for Apache Kafka) that sits on top of the
> clients, and I would like to be able to support all broker versions. I
> don't have control over what brokers my users are using.
> 
> You guys have done a great job since 0.10.2.0 (I think) of supporting older
> brokers from newer clients but this one's a blocker for me.
> 
> My framework will enforce the proper semantics for EOS, depending on the
> broker version, but I need to know which model to use at runtime.
> 
> As I said, I can have a property that the user can set to tell the
> framework that the broker is >= 2.5 but it would be cleaner if I could stay
> away from that.
> 
> Something like KafkaAdminClient.brokerApi() (or add the lowest API/broker
> version to describeCluster()), would be helpful.
> 
> Worst case, I'll add a configuration option.
> 
> Thanks.
> 
> On Thu, Apr 2, 2020 at 4:45 PM Boyang Chen <reluctanthero...@gmail.com>
> wrote:
> 
>> Thanks for the question Gary. The reasoning for crash the new
>> sendTxnOffsets API is because we don't want users to unconsciously violate
>> the EOS guarantee. In your case, using this API with 2.4.1 is not supported
>> anyway, so the upgrade path has to start from broker first to 2.5, and then
>> client binaries. Is there any further concern that blocks you from getting
>> the broker side upgrade first before using the new API?
>>
>> Boyang
>>
>> On Thu, Apr 2, 2020 at 1:37 PM Gary Russell <gruss...@pivotal.io> wrote:
>>
>>> Is there any way to determine the broker version in the kafka-clients?
>>>
>>> I need to determine whether I can use the new  sendOffsetsToTransaction
>>> with ConsumerGroupMetadata or use the old one.
>>>
>>> If I use the new API with a 2.4.1 broker, I get
>>>
>>> UpsupportedVersionException: Attempted to write a non-default
>> generationId
>>> at version 2
>>>
>>> Alternatively, couldn't the client simply extract the groupId from the
>>> ConsumerGroupMetadata and use the old struct if the broker is too old?
>>>
>>> I'd rather not have a user property in my framework to tell us which API
>> to
>>> use.
>>>
>>> Thanks in advance.
>>>
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to