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