+1 (binding)

On Thu, Jun 16, 2016 at 11:50 PM, Grant Henke <ghe...@cloudera.com> wrote:

> I would like to initiate the voting process for the "KIP-4 Create Topics
> Schema changes". This is not a vote for all of KIP-4, but specifically for
> the create topics changes. I have included the exact changes below for
> clarity:
> >
> > Create Topics Request (KAFKA-2945
> > <https://issues.apache.org/jira/browse/KAFKA-2945>)
> >
> > CreateTopics Request (Version: 0) => [create_topic_requests] timeout
> >   create_topic_requests => topic num_partitions replication_factor
> [replica_assignment] [configs]
> >     topic => STRING
> >     num_partitions => INT32
> >     replication_factor => INT16
> >     replica_assignment => partition_id [replicas]
> >       partition_id => INT32
> >       replicas => INT32
> >     configs => config_key config_value
> >       config_key => STRING
> >       config_value => STRING
> >   timeout => INT32
> >
> > CreateTopicsRequest is a batch request to initiate topic creation with
> > either predefined or automatic replica assignment and optionally topic
> > configuration.
> >
> > Request semantics:
> >
> >    1. Must be sent to the controller broker
> >    2. If there are multiple instructions for the same topic in one
> >    request an InvalidRequestException will be logged on the broker and
> the
> >    client will be disconnected.
> >       - This is because the list of topics is modeled server side as a
> >       map with TopicName as the key
> >    3. The principal must be authorized to the "Create" Operation on the
> >    "Cluster" resource to create topics.
> >       - Unauthorized requests will receive a
> ClusterAuthorizationException
> >    4.
> >
> >    Only one from ReplicaAssignment or (num_partitions +
> replication_factor
> >    ), can be defined in one instruction.
> >    - If both parameters are specified an InvalidRequestException will be
> >       logged on the broker and the client will be disconnected.
> >       - In the case ReplicaAssignment is defined number of partitions and
> >       replicas will be calculated from the supplied replica_assignment.
> >       - In the case of defined (num_partitions + replication_factor)
> >       replica assignment will be automatically generated by the server.
> >       - One or the other must be defined. The existing broker side auto
> >       create defaults will not be used
> >       (default.replication.factor, num.partitions). The client
> implementation can
> >       have defaults for these options when generating the messages.
> >       - The first replica in [replicas] is assumed to be the preferred
> >       leader. This matches current behavior elsewhere.
> >    5. Setting a timeout > 0 will allow the request to block until the
> >    topic metadata is "complete" on the controller node.
> >       - Complete means the local topic metadata cache been completely
> >       populated and all partitions have leaders
> >          - The topic metadata is updated when the controller sends out
> >          update metadata requests to the brokers
> >       - If a timeout error occurs, the topic could still be created
> >       successfully at a later time. Its up to the client to query for
> the state
> >       at that point.
> >    6. Setting a timeout <= 0 will validate arguments and trigger the
> >    create topics and return immediately.
> >       - This is essentially the fully asynchronous mode we have in the
> >       Zookeeper tools today.
> >       - The error code in the response will either contain an argument
> >       validation exception or a timeout exception. If you receive a
> timeout
> >       exception, because you asked for 0 timeout, you can assume the
> message was
> >       valid and the topic creation was triggered.
> >    7. The request is not transactional.
> >       1. If an error occurs on one topic, the others could still be
> >       created.
> >       2. Errors are reported independently.
> >
> > QA:
> >
> >    - Why is CreateTopicsRequest a batch request?
> >       - Scenarios where tools or admins want to create many topics should
> >       be able to with fewer requests
> >       - Example: MirrorMaker may want to create the topics downstream
> >    - What happens if some topics error immediately? Will it
> >    return immediately?
> >       - The request will block until all topics have either been created,
> >       errors, or the timeout has been hit
> >       - There is no "short circuiting" where 1 error stops the other
> >       topics from being created
> >    - Why implement "partial blocking" instead of fully async or fully
> >    consistent?
> >       - See Cluster Consistent Blocking
> >       <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-cluster-consistent-blocking
> >
> >        below
> >    - Why require the request to go to the controller?
> >       - The controller is responsible for the cluster metadata and its
> >       propagation
> >       - See Request Forwarding
> >       <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-request
> >
> >        below
> >
> > Create Topics Response
> >
> >
> >
> > CreateTopics Response (Version: 0) => [topic_error_codes]
> >   topic_error_codes => topic error_code
> >     topic => STRING
> >     error_code => INT16
> >
> > CreateTopicsResponse contains a map between topic and topic creation
> > result error code (see New Protocol Errors
> > <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-NewProtocolErrors
> >
> > ).
> >
>
> The KIP is available here for reference (linked to the Create Topics schema
> section):
> *
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-CreateTopicsRequest(KAFKA-2945)
> <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-CreateTopicsRequest(KAFKA-2945)
> >*
>
> A pull request is available implementing the proposed changes here:
> https://github.com/apache/kafka/pull/1489
>
> Here is a link to the past discussion on the mailing list:
> *
> http://search-hadoop.com/m/uyzND1rfG6v1oixmZ&subj=+DISCUSS+KIP+4+Create+Topic+Schema
> <
> http://search-hadoop.com/m/uyzND1rfG6v1oixmZ&subj=+DISCUSS+KIP+4+Create+Topic+Schema
> >*
>
> Thank you,
> Grant
> --
> Grant Henke
> Software Engineer | Cloudera
> gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke
>

Reply via email to