Jason Gustafson created KAFKA-12232:
---------------------------------------

             Summary: Distinguish API scope by broker/controller
                 Key: KAFKA-12232
                 URL: https://issues.apache.org/jira/browse/KAFKA-12232
             Project: Kafka
          Issue Type: Improvement
            Reporter: Jason Gustafson


After KIP-500, not all APIs will be available on all listeners. Specifically, 
there are controller-only APIs which are only accessible on the controller 
listener (e.g. the Raft APIs). In general, we have three API scopes:

client: must be exposed on client listener
broker: must be exposed on inter-broker listener
controller: must be exposed on controller listener

These categories are not mutually exclusive. The `Fetch` API is required on all 
listeners as an example, so we need a way to represent the scope as a set in 
`ApiKeys`.

We should also put some thought into how this scope is reflected through the 
ApiVersions API. I think it makes sense to only advertise APIs that can be 
handled. For example, if the controller does not have a handler for the 
`FindCoordinator` API, then it doesn't make sense to advertise it. 

Potentially we could be even more restrictive when it comes to the inter-broker 
APIs. For example, we might not need to advertise `WriteTxnMarkers` on 
client-only listeners since a client should never use this API. Alternatively, 
we can make it simple and just identify APIs by controller, broker, or both.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to