@@ -37,7 +37,6 @@ import org.apache.kafka.common.internals.{FatalExitError, Topic}
37
37
import org .apache .kafka .common .message .AddPartitionsToTxnResponseData .{AddPartitionsToTxnResult , AddPartitionsToTxnResultCollection }
38
38
import org .apache .kafka .common .message .AlterConfigsResponseData .AlterConfigsResourceResponse
39
39
import org .apache .kafka .common .message .DeleteRecordsResponseData .{DeleteRecordsPartitionResult , DeleteRecordsTopicResult }
40
- import org .apache .kafka .common .message .ElectLeadersResponseData .{PartitionResult , ReplicaElectionResult }
41
40
import org .apache .kafka .common .message .ListClientMetricsResourcesResponseData .ClientMetricsResource
42
41
import org .apache .kafka .common .message .ListOffsetsRequestData .ListOffsetsPartition
43
42
import org .apache .kafka .common .message .ListOffsetsResponseData .{ListOffsetsPartitionResponse , ListOffsetsTopicResponse }
@@ -217,7 +216,6 @@ class KafkaApis(val requestChannel: RequestChannel,
217
216
case ApiKeys .ALTER_CLIENT_QUOTAS => forwardToController(request)
218
217
case ApiKeys .DESCRIBE_USER_SCRAM_CREDENTIALS => handleDescribeUserScramCredentialsRequest(request)
219
218
case ApiKeys .ALTER_USER_SCRAM_CREDENTIALS => forwardToController(request)
220
- case ApiKeys .ALTER_PARTITION => handleAlterPartitionRequest(request)
221
219
case ApiKeys .UPDATE_FEATURES => forwardToController(request)
222
220
case ApiKeys .DESCRIBE_CLUSTER => handleDescribeCluster(request)
223
221
case ApiKeys .DESCRIBE_PRODUCERS => handleDescribeProducersRequest(request)
@@ -2399,77 +2397,6 @@ class KafkaApis(val requestChannel: RequestChannel,
2399
2397
true
2400
2398
}
2401
2399
2402
- def handleElectLeaders (request : RequestChannel .Request ): Unit = {
2403
- val zkSupport = metadataSupport.requireZkOrThrow(KafkaApis .shouldAlwaysForward(request))
2404
- val electionRequest = request.body[ElectLeadersRequest ]
2405
-
2406
- def sendResponseCallback (
2407
- error : ApiError
2408
- )(
2409
- results : Map [TopicPartition , ApiError ]
2410
- ): Unit = {
2411
- requestHelper.sendResponseMaybeThrottle(request, requestThrottleMs => {
2412
- val adjustedResults = if (electionRequest.data.topicPartitions == null ) {
2413
- /* When performing elections across all of the partitions we should only return
2414
- * partitions for which there was an election or resulted in an error. In other
2415
- * words, partitions that didn't need election because they ready have the correct
2416
- * leader are not returned to the client.
2417
- */
2418
- results.filter { case (_, error) =>
2419
- error.error != Errors .ELECTION_NOT_NEEDED
2420
- }
2421
- } else results
2422
-
2423
- val electionResults = new util.ArrayList [ReplicaElectionResult ]()
2424
- adjustedResults
2425
- .groupBy { case (tp, _) => tp.topic }
2426
- .foreachEntry { (topic, ps) =>
2427
- val electionResult = new ReplicaElectionResult ()
2428
-
2429
- electionResult.setTopic(topic)
2430
- ps.foreachEntry { (topicPartition, error) =>
2431
- val partitionResult = new PartitionResult ()
2432
- partitionResult.setPartitionId(topicPartition.partition)
2433
- partitionResult.setErrorCode(error.error.code)
2434
- partitionResult.setErrorMessage(error.message)
2435
- electionResult.partitionResult.add(partitionResult)
2436
- }
2437
-
2438
- electionResults.add(electionResult)
2439
- }
2440
-
2441
- new ElectLeadersResponse (
2442
- requestThrottleMs,
2443
- error.error.code,
2444
- electionResults,
2445
- electionRequest.version
2446
- )
2447
- })
2448
- }
2449
-
2450
- if (! authHelper.authorize(request.context, ALTER , CLUSTER , CLUSTER_NAME )) {
2451
- val error = new ApiError (Errors .CLUSTER_AUTHORIZATION_FAILED , null )
2452
- val partitionErrors : Map [TopicPartition , ApiError ] =
2453
- electionRequest.topicPartitions.asScala.iterator.map(partition => partition -> error).toMap
2454
-
2455
- sendResponseCallback(error)(partitionErrors)
2456
- } else {
2457
- val partitions = if (electionRequest.data.topicPartitions == null ) {
2458
- metadataCache.getAllTopics().flatMap(metadataCache.getTopicPartitions)
2459
- } else {
2460
- electionRequest.topicPartitions.asScala
2461
- }
2462
-
2463
- replicaManager.electLeaders(
2464
- zkSupport.controller,
2465
- partitions,
2466
- electionRequest.electionType,
2467
- sendResponseCallback(ApiError .NONE ),
2468
- electionRequest.data.timeoutMs
2469
- )
2470
- }
2471
- }
2472
-
2473
2400
def handleOffsetDeleteRequest (
2474
2401
request : RequestChannel .Request ,
2475
2402
requestLocal : RequestLocal
@@ -2628,51 +2555,6 @@ class KafkaApis(val requestChannel: RequestChannel,
2628
2555
}
2629
2556
}
2630
2557
2631
- def handleAlterPartitionRequest (request : RequestChannel .Request ): Unit = {
2632
- val zkSupport = metadataSupport.requireZkOrThrow(KafkaApis .shouldNeverReceive(request))
2633
- val alterPartitionRequest = request.body[AlterPartitionRequest ]
2634
- authHelper.authorizeClusterOperation(request, CLUSTER_ACTION )
2635
-
2636
- if (! zkSupport.controller.isActive)
2637
- requestHelper.sendResponseExemptThrottle(request, alterPartitionRequest.getErrorResponse(
2638
- AbstractResponse .DEFAULT_THROTTLE_TIME , Errors .NOT_CONTROLLER .exception))
2639
- else
2640
- zkSupport.controller.alterPartitions(alterPartitionRequest.data, request.context.apiVersion, alterPartitionResp =>
2641
- requestHelper.sendResponseExemptThrottle(request, new AlterPartitionResponse (alterPartitionResp)))
2642
- }
2643
-
2644
- def handleUpdateFeatures (request : RequestChannel .Request ): Unit = {
2645
- val zkSupport = metadataSupport.requireZkOrThrow(KafkaApis .shouldAlwaysForward(request))
2646
- val updateFeaturesRequest = request.body[UpdateFeaturesRequest ]
2647
-
2648
- def sendResponseCallback (errors : Either [ApiError , Map [String , ApiError ]]): Unit = {
2649
- def createResponse (throttleTimeMs : Int ): UpdateFeaturesResponse = {
2650
- errors match {
2651
- case Left (topLevelError) =>
2652
- UpdateFeaturesResponse .createWithErrors(
2653
- topLevelError,
2654
- Collections .emptySet(),
2655
- throttleTimeMs)
2656
- case Right (featureUpdateErrors) =>
2657
- // This response is not correct, but since this is ZK specific code it will be removed in 4.0
2658
- UpdateFeaturesResponse .createWithErrors(
2659
- ApiError .NONE ,
2660
- featureUpdateErrors.asJava.keySet(),
2661
- throttleTimeMs)
2662
- }
2663
- }
2664
- requestHelper.sendResponseMaybeThrottle(request, requestThrottleMs => createResponse(requestThrottleMs))
2665
- }
2666
-
2667
- if (! authHelper.authorize(request.context, ALTER , CLUSTER , CLUSTER_NAME )) {
2668
- sendResponseCallback(Left (new ApiError (Errors .CLUSTER_AUTHORIZATION_FAILED )))
2669
- } else if (! zkSupport.controller.isActive) {
2670
- sendResponseCallback(Left (new ApiError (Errors .NOT_CONTROLLER )))
2671
- } else {
2672
- zkSupport.controller.updateFeatures(updateFeaturesRequest, sendResponseCallback)
2673
- }
2674
- }
2675
-
2676
2558
def handleDescribeCluster (request : RequestChannel .Request ): Unit = {
2677
2559
val response = authHelper.computeDescribeClusterResponse(
2678
2560
request,
0 commit comments