Thanks to all who voted. The KIP-4 Delete Topics changes passed with +4
(binding), and +3 (non-binding).

There is a branch based off the create topics PR available here:
https://github.com/granthenke/kafka/tree/delete-wire-new
I will open a PR once the create topics patch is in:
https://github.com/apache/kafka/pull/1489

On Fri, Jun 24, 2016 at 5:43 PM, Gwen Shapira <g...@confluent.io> wrote:

> +1
>
> On Thu, Jun 23, 2016 at 8:32 PM, Grant Henke <ghe...@cloudera.com> wrote:
> > I would like to initiate the voting process for the "KIP-4 Delete Topics
> > Schema changes". This is not a vote for all of KIP-4, but specifically
> for
> > the delete topics changes. I have included the exact changes below for
> > clarity:
> >>
> >> Delete Topics Request (KAFKA-2946
> >> <https://issues.apache.org/jira/browse/KAFKA-2946>)
> >>
> >> DeleteTopics Request (Version: 0) => [topics] timeout
> >>   topics => STRING
> >>   timeout => INT32
> >>
> >> DeleteTopicsRequest is a batch request to initiate topic deletion.
> >>
> >> Request semantics:
> >>
> >>    1. Must be sent to the controller broker
> >>    2. If there are multiple instructions for the same topic in one
> >>    request the extra request will be ingnored
> >>       - This is because the list of topics is modeled server side as a
> set
> >>       - Multiple deletes results in the same end goal, so handling this
> >>       error for the user should be okay
> >>    3. When requesting to delete a topic that does not exist, a an
> >>    InvalidTopic error will be returned for that topic.
> >>    4. When requesting to delete a topic that is already marked for
> >>    deletion, the request will wait up to the timeout until the delete is
> >>    "complete" and return as usual.
> >>       - This is to avoid errors due to concurrent delete requests. The
> >>       end result is the same, the topic is deleted.
> >>    5. The principal must be authorized to the "Delete" Operation on the
> >>    "Topic" resource to delete the topic.
> >>       - Unauthorized requests will receive a TopicAuthorizationException
> >>       if they are authorized to the "Describe" Operation on the "Topic"
> resource
> >>       - Otherwise they will receive an InvalidTopicException as if the
> >>       topic does not exist.
> >>       6. Setting a timeout > 0 will allow the request to block until the
> >>    delete is "complete" on the controller node.
> >>       - Complete means the local topic metadata cache no longer contains
> >>       the topic
> >>          - 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 deleted
> >>       successfully at a later time. Its up to the client to query for
> the state
> >>       at that point.
> >>    7. Setting a timeout <= 0 will validate arguments and trigger the
> >>    delete 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 deletion was triggered.
> >>    8. The request is not transactional.
> >>       1. If an error occurs on one topic, the others could still be
> >>       deleted.
> >>       2. Errors are reported independently.
> >>
> >> QA:
> >>
> >>    - Why is DeleteTopicsRequest a batch request?
> >>       - Scenarios where tools or admins want to delete many topics
> should
> >>       be able to with fewer requests
> >>       - Example: Removing all cluster topics
> >>    - What happens if some topics error immediately? Will it
> >>    return immediately?
> >>       - The request will block until all topics have either been
> deleted,
> >>       errors, or the timeout has been hit
> >>       - There is no "short circuiting" where 1 error stops the other
> >>       topics from being deleted
> >>    - Why have a timeout at all? Deletes could take a while?
> >>       - True some deletes may take a while or never finish, however some
> >>       admin tools may want extended blocking regardless.
> >>       - If you don't want any blocking setting a timeout of 0 works.
> >>       - Future changes may make deletes much faster. See the Follow Up
> >>       Changes
> >>       <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-follow-up-changes>
> section
> >>       above.
> >>    - 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
> >>
> >> Delete Topics Response
> >>
> >> DeleteTopics Response (Version: 0) => [topic_error_codes]
> >>   topic_error_codes => topic error_code
> >>     topic => STRING
> >>     error_code => INT16
> >>
> >> DeleteTopicsResponse 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
> >
> >> ).
> >>
> >> Response semantics:
> >>
> >>    1. When a request hits the timeout, the topics that are not
> "complete"
> >>    will have the TimeoutException error code.
> >>       - The topics that did complete successfully with have no error.
> >>
> >>
> > 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-DeleteTopicsRequest(KAFKA-2946)
> > <
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-DeleteTopicsRequest(KAFKA-2946)
> >*
> >
> > A sample patch is on github:
> > https://github.com/granthenke/kafka/tree/delete-wire-new
> > Note: This branch and patch is based on the CreateTopic request/response
> > PR. I will open a PR once that patch is complete.
> >
> > Here is a link to the past discussion on the mailing list:
> >
> > *
> http://search-hadoop.com/m/uyzND1fokOBn6uNd2&subj=+DISCUSS+KIP+4+Delete+Topic+Schema
> > <
> http://search-hadoop.com/m/uyzND1fokOBn6uNd2&subj=+DISCUSS+KIP+4+Delete+Topic+Schema
> >*
> >
> > Thank you,
> > Grant
> > --
> > Grant Henke
> > Software Engineer | Cloudera
> > gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke
>



-- 
Grant Henke
Software Engineer | Cloudera
gr...@cloudera.com | twitter.com/gchenke | linkedin.com/in/granthenke

Reply via email to