Current state: Under Discussion
Discussion thread: https://lists.apache.org/thread/hqpg2sbmkxp8c8prhjt0cgt5n2xd4ocw
JIRA:
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Currently, it's only possible to add policies for Topic creation and configuration updates via CreateTopicPolicy
(introduced in KIP-108) and AlterConfigPolicy
(introduced in KIP-133), but not for Topic deletion.
Topic deletion policies would enable operators to control how to proceed when topic deletions are requested.
Implementations of this policy could be used:
__consumer_offsets
or application internal topics like Connect internal topics.There has been related KIPs that included this proposal:
This KIP is intended to reduce the scope of the proposal for topic deletion only, following approach from existing policies.
This KIP borrows parts of KIP-170. If KIP-201 is resurrected, this changes shouldn't increase complexity of the KIP as it follows TopicCreatePolicy approach and same migration should apply.
1. New interface on clients module:
package org.apache.kafka.server.policy; public interface DeleteTopicPolicy extends Configurable, AutoCloseable { class RequestMetadata { private final String topic; private final Uuid id; public RequestMetadata(String topic, Uuid id) { this.topic = topic; this.id = id; } public String topic() { return topic; } public Uuid id() { return id; } } void validate(RequestMetadata requestMetadata) throws PolicyViolationException; } |
2. New configuration for brokers:
delete.topic.policy.class.name
: The delete topic policy class that should be used for validation. The class should implement the org.apache.kafka.server.policy.DeleteTopicPolicy
interface.
3. New version of DeleteTopicsRequest protocol message:
DeleteTopics Request (Version: 7) => [topics] timeout validate_only topics => STRING timeout => INT32 validate_only => BOOLEAN |
Apart from the Interfaces proposed, the changes will follow the same approach as TopicCreatePolicy
.
Changes:
validateOnly
flag to DeleteTopicsRequest.json
DeleteTopicsResponse
DeleteTopicsOptions
KafkaAdminClient
Controller#deleteTopics
interface to include DeleteTopicsRequestData
and update implementationsKafkaConfig
Controllers
and ZKAdminManager
.ReplicationControlManager
No impact to existing users. All are new APIs, and should not have any compatibility issues apart from validating that validateOnly
flag on protocol is only requested for version 7 of DeleteTopicsRequest
message.
Fairly similar to TopicCreatePolicy
, checking that config is loaded properly, and policy validation returns proper exception.