[ 
https://issues.apache.org/jira/browse/KAFKA-20744?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias J. Sax updated KAFKA-20744:
------------------------------------
    Description: 
KIP-1017 ([KIP-1071: Streams Rebalance 
Protocol|https://cwiki.apache.org/confluence/spaces/KAFKA/pages/311627992/KIP-1071+Streams+Rebalance+Protocol])
 proposed to deprecate and remove the Kafka Streams config 
`rack.aware.assignment.tags`. This is correct by itself, but incomplete, 
because we need this config broker side.

The KIP was updated and corrected now. This ticket is about closing this broker 
side gap, and add `rack.aware.assignment.tags` as broker and group-level config.

  was:
I was digging into client-tags a little bit more, and while these are sent to 
the broker, and passed into the TaskAssignor I think we have a problem... 
client-tags are only one part of the equation. We also need 
RACK_AWARE_ASSIGNMENT_TAGS_CONFIG which KIP-1071 lists as "future deprecation". 
Not sure why -- from my understanding of 
[KIP-708|https://cwiki.apache.org/confluence/display/KAFKA/KIP-708%3A+Rack+aware+StandbyTask+assignment+for+Kafka+Streams]
 we need this other config too (and we need it inside the TaskAssignor).

Or there is something in KIP-1071 I don't know about? In the end, I did not pay 
too close attention to the details of the KIP, and did not even VOTE it... So 
it can easily be that everything is correct, and I am off here.

The problem I see is, that in existing code, we verify if 
RACK_AWARE_ASSIGNMENT_TAGS_CONFIG matches to configured client.tag.<mytag> 
config keys, and if it does not match, we throw an exception. -- However, if 
RACK_AWARE_ASSIGNMENT_TAGS_CONFIG is a client config we need to make a RPC 
change to be able to send it to the broker. Making it a broker side 
group-config (what would actually be better, as we pull all these config into 
the broker) is also difficult, because we cannot do the verification between 
RACK_AWARE_ASSIGNMENT_TAGS_CONFIG and set client.tag.<mytag> any longer; at 
least not client side. We could still verify on the broker when we receive a 
heartbeat, but we would need a new error code if the verification fails? In any 
case, it seems to be a larger change, that we cannot get into AK 4.3.

While digging around, I also improved some verifications and added a few new 
tests about this: [https://github.com/apache/kafka/pull/21724] (I think we want 
to be a little bit more strict client side to begin with, to avoid broker side 
issue [of course, we might want to verify sent client-tags, broker side, too]-- 
If you look into the test as whole, you can see what verifications between both 
configs we do.

Long story short, I think we cannot do rack-aware standby task assignment any 
time soon. We need to figure out these question, and can only add rack-aware 
standby-task assignment a-la KIP-708 after we fixed the broker... Not sure what 
backward / cross-version compatibility questions will arise.

Maybe we could still do rack-aware standby-task assignment based on client.rack?

All this doesn't really affect what we need on the client, and we can still 
start to send offset/lag information (and get this into AK 4.3) and get started 
with warmup task support I believe (if I don't find anything else).

 


> Add back `rack.aware.assignment.tags` config
> --------------------------------------------
>
>                 Key: KAFKA-20744
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20744
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Ziyun Fu
>            Assignee: Ziyun Fu
>            Priority: Major
>              Labels: kip
>
> KIP-1017 ([KIP-1071: Streams Rebalance 
> Protocol|https://cwiki.apache.org/confluence/spaces/KAFKA/pages/311627992/KIP-1071+Streams+Rebalance+Protocol])
>  proposed to deprecate and remove the Kafka Streams config 
> `rack.aware.assignment.tags`. This is correct by itself, but incomplete, 
> because we need this config broker side.
> The KIP was updated and corrected now. This ticket is about closing this 
> broker side gap, and add `rack.aware.assignment.tags` as broker and 
> group-level config.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to