diff --git a/cli/src/main/scala/org/apache/celeborn/cli/master/MasterSubcommandImpl.scala b/cli/src/main/scala/org/apache/celeborn/cli/master/MasterSubcommandImpl.scala index 70bd32c63c5..7dbc67f3fe4 100644 --- a/cli/src/main/scala/org/apache/celeborn/cli/master/MasterSubcommandImpl.scala +++ b/cli/src/main/scala/org/apache/celeborn/cli/master/MasterSubcommandImpl.scala @@ -21,6 +21,7 @@ import java.util import scala.collection.JavaConverters._ +import org.apache.commons.lang3.StringUtils import picocli.CommandLine.{Command, ParameterException} import org.apache.celeborn.cli.config.CliConfigManager @@ -224,18 +225,34 @@ class MasterSubcommandImpl extends Runnable with MasterSubcommand { private[master] def runShowContainerInfo: ContainerInfo = defaultApi.getContainerInfo override private[master] def reviseLostShuffles: HandleResponse = { + if (StringUtils.isAnyBlank(commonOptions.apps, reviseLostShuffleOptions.shuffleIds)) { + throw new ParameterException( + spec.commandLine(), + "Application id and Shuffle ids must be provided for this command.") + } + val app = commonOptions.apps if (app.contains(",")) { throw new ParameterException( spec.commandLine(), "Only one application id can be provided for this command.") } - val shuffleIds = reviseLostShuffleOptions.shuffleIds - applicationApi.reviseLostShuffles(app, shuffleIds) + + val shuffleIds = util.Arrays.asList[Integer]( + reviseLostShuffleOptions.shuffleIds.split(",").map(Integer.valueOf): _*) + val request = + new ReviseLostShufflesRequest().appId(app).shuffleIds(shuffleIds) + applicationApi.reviseLostShuffles(request) } override private[master] def deleteApps: HandleResponse = { - val apps = commonOptions.apps - applicationApi.deleteApps(apps) + if (StringUtils.isBlank(commonOptions.apps)) { + throw new ParameterException( + spec.commandLine(), + "Applications must be provided for this command.") + } + val appIds = util.Arrays.asList[String](commonOptions.apps.split(","): _*) + val request = new DeleteAppsRequest().apps(appIds) + applicationApi.deleteApps(request) } } diff --git a/master/src/main/scala/org/apache/celeborn/service/deploy/master/Master.scala b/master/src/main/scala/org/apache/celeborn/service/deploy/master/Master.scala index 519d36019f8..11bc72aec41 100644 --- a/master/src/main/scala/org/apache/celeborn/service/deploy/master/Master.scala +++ b/master/src/main/scala/org/apache/celeborn/service/deploy/master/Master.scala @@ -1467,14 +1467,6 @@ private[celeborn] class Master( } } - override def reviseLostShuffles(appId: String, shuffles: java.util.List[Integer]): Unit = { - statusSystem.reviseLostShuffles(appId, shuffles) - } - - override def deleteApps(appIds: String): Unit = { - appIds.split(",").foreach(id => statusSystem.deleteApp(id)) - } - override def getWorkerEventInfo(): String = { val sb = new StringBuilder sb.append("======================= Workers Event in Master ========================\n") diff --git a/master/src/main/scala/org/apache/celeborn/service/deploy/master/http/api/v1/ApplicationResource.scala b/master/src/main/scala/org/apache/celeborn/service/deploy/master/http/api/v1/ApplicationResource.scala index 18cab93e8a6..c3ad1e7504a 100644 --- a/master/src/main/scala/org/apache/celeborn/service/deploy/master/http/api/v1/ApplicationResource.scala +++ b/master/src/main/scala/org/apache/celeborn/service/deploy/master/http/api/v1/ApplicationResource.scala @@ -17,8 +17,7 @@ package org.apache.celeborn.service.deploy.master.http.api.v1 -import java.util -import javax.ws.rs.{Consumes, GET, Path, Produces, QueryParam} +import javax.ws.rs.{Consumes, DELETE, GET, Path, POST, Produces} import javax.ws.rs.core.MediaType import scala.collection.JavaConverters._ @@ -28,7 +27,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.tags.Tag import org.apache.celeborn.common.util.Utils -import org.apache.celeborn.rest.v1.model.{AppDiskUsageData, AppDiskUsageSnapshotData, AppDiskUsageSnapshotsResponse, ApplicationHeartbeatData, ApplicationsHeartbeatResponse, HandleResponse, HostnamesResponse} +import org.apache.celeborn.rest.v1.model.{AppDiskUsageData, AppDiskUsageSnapshotData, AppDiskUsageSnapshotsResponse, ApplicationHeartbeatData, ApplicationsHeartbeatResponse, DeleteAppsRequest, HandleResponse, HostnamesResponse, ReviseLostShufflesRequest} import org.apache.celeborn.server.common.http.api.ApiRequestContext import org.apache.celeborn.service.deploy.master.Master @@ -55,6 +54,19 @@ class ApplicationResource extends ApiRequestContext { }.toSeq.asJava) } + @ApiResponse( + responseCode = "200", + content = Array(new Content( + mediaType = MediaType.APPLICATION_JSON, + schema = new Schema(implementation = classOf[HandleResponse]))), + description = "Delete resource of apps.") + @DELETE + def deleteApps(request: DeleteAppsRequest): HandleResponse = { + val apps = request.getApps.asScala + apps.foreach(app => statusSystem.deleteApp(app)) + new HandleResponse().success(true).message(s"deleted shuffles of app ${apps}") + } + @ApiResponse( responseCode = "200", content = Array(new Content( @@ -96,41 +108,18 @@ class ApplicationResource extends ApiRequestContext { new HostnamesResponse().hostnames(statusSystem.hostnameSet.asScala.toSeq.asJava) } - @Path("/reviseLostShuffles") + @Path("/revise_lost_shuffles") @ApiResponse( responseCode = "200", content = Array(new Content( mediaType = MediaType.APPLICATION_JSON, schema = new Schema(implementation = classOf[HandleResponse]))), - description = - "Revise lost shuffles") - @GET - def reviseLostShuffles( - @QueryParam("app") appId: String, - @QueryParam("shuffleIds") shufflesIds: String): HandleResponse = { - val shuffles = new util.ArrayList[Integer]() - shufflesIds.split(",").foreach { p => - shuffles.add(Integer.parseInt(p)) - } - if (!shuffles.isEmpty) { - httpService.reviseLostShuffles(appId, shuffles) - } - new HandleResponse().success(true).message("revise lost shuffle done") + description = "Revise lost shuffles or deleted shuffles of an application.") + @POST + def reviseLostShuffles(request: ReviseLostShufflesRequest): HandleResponse = { + val appId = request.getAppId + val shuffleIds = request.getShuffleIds + statusSystem.reviseLostShuffles(appId, shuffleIds) + new HandleResponse().success(true).message(s"revised app:$appId lost shuffles:$shuffleIds") } - - @Path("/deleteApps") - @ApiResponse( - responseCode = "200", - content = Array(new Content( - mediaType = MediaType.APPLICATION_JSON, - schema = new Schema(implementation = classOf[HandleResponse]))), - description = - "Delete resource of an app") - @GET - def deleteApp( - @QueryParam("apps") apps: String): HandleResponse = { - httpService.deleteApps(apps) - new HandleResponse().success(true).message(s"delete shuffles of app ${apps}") - } - } diff --git a/openapi/openapi-client/README.md b/openapi/openapi-client/README.md index cbf91a7b50b..4a9df6040aa 100644 --- a/openapi/openapi-client/README.md +++ b/openapi/openapi-client/README.md @@ -1,5 +1,7 @@ # Celeborn OpenAPI Client +**Note:** It is recommended to use `under_score` style naming for new RESTful APIs to maintain consistency. + To update the OpenAPI specification - just update the specification under `openapi/openapi-client/src/main/openapi3/` and keep the schema definitions consistent between master and worker. - Install JDK 11 or above by whatever mechanism is appropriate for your system, and set that version to be the default Java version (e.g., by setting env variable `JAVA_HOME`) diff --git a/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/master/ApplicationApi.java b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/master/ApplicationApi.java index 2afac4729ed..dc844dac236 100644 --- a/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/master/ApplicationApi.java +++ b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/master/ApplicationApi.java @@ -27,8 +27,10 @@ import org.apache.celeborn.rest.v1.model.AppDiskUsageSnapshotsResponse; import org.apache.celeborn.rest.v1.model.ApplicationsHeartbeatResponse; +import org.apache.celeborn.rest.v1.model.DeleteAppsRequest; import org.apache.celeborn.rest.v1.model.HandleResponse; import org.apache.celeborn.rest.v1.model.HostnamesResponse; +import org.apache.celeborn.rest.v1.model.ReviseLostShufflesRequest; import java.util.ArrayList; @@ -51,29 +53,29 @@ public ApplicationApi(ApiClient apiClient) { /** * - * Delete resource of apps - * @param apps (optional) + * Delete resource of apps. + * @param deleteAppsRequest (optional) * @return HandleResponse * @throws ApiException if fails to make API call */ - public HandleResponse deleteApps(String apps) throws ApiException { - return this.deleteApps(apps, Collections.emptyMap()); + public HandleResponse deleteApps(DeleteAppsRequest deleteAppsRequest) throws ApiException { + return this.deleteApps(deleteAppsRequest, Collections.emptyMap()); } /** * - * Delete resource of apps - * @param apps (optional) + * Delete resource of apps. + * @param deleteAppsRequest (optional) * @param additionalHeaders additionalHeaders for this call * @return HandleResponse * @throws ApiException if fails to make API call */ - public HandleResponse deleteApps(String apps, Map additionalHeaders) throws ApiException { - Object localVarPostBody = null; + public HandleResponse deleteApps(DeleteAppsRequest deleteAppsRequest, Map additionalHeaders) throws ApiException { + Object localVarPostBody = deleteAppsRequest; // create path and map variables - String localVarPath = "/api/v1/applications/deleteApps"; + String localVarPath = "/api/v1/applications"; StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); String localVarQueryParameterBaseName; @@ -83,7 +85,6 @@ public HandleResponse deleteApps(String apps, Map additionalHead Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - localVarQueryParams.addAll(apiClient.parameterToPair("apps", apps)); localVarHeaderParams.putAll(additionalHeaders); @@ -95,7 +96,7 @@ public HandleResponse deleteApps(String apps, Map additionalHead final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] localVarContentTypes = { - + "application/json" }; final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); @@ -104,7 +105,7 @@ public HandleResponse deleteApps(String apps, Map additionalHead TypeReference localVarReturnType = new TypeReference() {}; return apiClient.invokeAPI( localVarPath, - "GET", + "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarQueryStringJoiner.toString(), @@ -322,31 +323,29 @@ public AppDiskUsageSnapshotsResponse getApplicationsDiskUsageSnapshots(Map additionalHeaders) throws ApiException { - Object localVarPostBody = null; + public HandleResponse reviseLostShuffles(ReviseLostShufflesRequest reviseLostShufflesRequest, Map additionalHeaders) throws ApiException { + Object localVarPostBody = reviseLostShufflesRequest; // create path and map variables - String localVarPath = "/api/v1/applications/reviseLostShuffles"; + String localVarPath = "/api/v1/applications/revise_lost_shuffles"; StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); String localVarQueryParameterBaseName; @@ -356,8 +355,6 @@ public HandleResponse reviseLostShuffles(String app, String shuffleIds, Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); - localVarQueryParams.addAll(apiClient.parameterToPair("app", app)); - localVarQueryParams.addAll(apiClient.parameterToPair("shuffleIds", shuffleIds)); localVarHeaderParams.putAll(additionalHeaders); @@ -369,7 +366,7 @@ public HandleResponse reviseLostShuffles(String app, String shuffleIds, Map localVarReturnType = new TypeReference() {}; return apiClient.invokeAPI( localVarPath, - "GET", + "POST", localVarQueryParams, localVarCollectionQueryParams, localVarQueryStringJoiner.toString(), @@ -411,7 +408,7 @@ public T invokeAPI(String url, String method, Object request, TypeReference< final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts); final String[] localVarContentTypes = { - + "application/json" }; final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes); diff --git a/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/DeleteAppsRequest.java b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/DeleteAppsRequest.java new file mode 100644 index 00000000000..f15edca2a5d --- /dev/null +++ b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/DeleteAppsRequest.java @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.celeborn.rest.v1.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; + +/** + * DeleteAppsRequest + */ +@JsonPropertyOrder({ + DeleteAppsRequest.JSON_PROPERTY_APPS +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.8.0") +public class DeleteAppsRequest { + public static final String JSON_PROPERTY_APPS = "apps"; + private List apps = new ArrayList<>(); + + public DeleteAppsRequest() { + } + + public DeleteAppsRequest apps(List apps) { + + this.apps = apps; + return this; + } + + public DeleteAppsRequest addAppsItem(String appsItem) { + if (this.apps == null) { + this.apps = new ArrayList<>(); + } + this.apps.add(appsItem); + return this; + } + + /** + * The apps to be deleted. + * @return apps + */ + @javax.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_APPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public List getApps() { + return apps; + } + + + @JsonProperty(JSON_PROPERTY_APPS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setApps(List apps) { + this.apps = apps; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DeleteAppsRequest deleteAppsRequest = (DeleteAppsRequest) o; + return Objects.equals(this.apps, deleteAppsRequest.apps); + } + + @Override + public int hashCode() { + return Objects.hash(apps); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DeleteAppsRequest {\n"); + sb.append(" apps: ").append(toIndentedString(apps)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/ReviseLostShufflesRequest.java b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/ReviseLostShufflesRequest.java new file mode 100644 index 00000000000..ee6ba925e9e --- /dev/null +++ b/openapi/openapi-client/src/main/java/org/apache/celeborn/rest/v1/model/ReviseLostShufflesRequest.java @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.celeborn.rest.v1.model; + +import java.util.Objects; +import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonTypeName; + +/** + * ReviseLostShufflesRequest + */ +@JsonPropertyOrder({ + ReviseLostShufflesRequest.JSON_PROPERTY_APP_ID, + ReviseLostShufflesRequest.JSON_PROPERTY_SHUFFLE_IDS +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.8.0") +public class ReviseLostShufflesRequest { + public static final String JSON_PROPERTY_APP_ID = "appId"; + private String appId; + + public static final String JSON_PROPERTY_SHUFFLE_IDS = "shuffleIds"; + private List shuffleIds = new ArrayList<>(); + + public ReviseLostShufflesRequest() { + } + + public ReviseLostShufflesRequest appId(String appId) { + + this.appId = appId; + return this; + } + + /** + * The application id. + * @return appId + */ + @javax.annotation.Nullable + @JsonProperty(JSON_PROPERTY_APP_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getAppId() { + return appId; + } + + + @JsonProperty(JSON_PROPERTY_APP_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAppId(String appId) { + this.appId = appId; + } + + public ReviseLostShufflesRequest shuffleIds(List shuffleIds) { + + this.shuffleIds = shuffleIds; + return this; + } + + public ReviseLostShufflesRequest addShuffleIdsItem(Integer shuffleIdsItem) { + if (this.shuffleIds == null) { + this.shuffleIds = new ArrayList<>(); + } + this.shuffleIds.add(shuffleIdsItem); + return this; + } + + /** + * The shuffle ids to be revised. + * @return shuffleIds + */ + @javax.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SHUFFLE_IDS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getShuffleIds() { + return shuffleIds; + } + + + @JsonProperty(JSON_PROPERTY_SHUFFLE_IDS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setShuffleIds(List shuffleIds) { + this.shuffleIds = shuffleIds; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ReviseLostShufflesRequest reviseLostShufflesRequest = (ReviseLostShufflesRequest) o; + return Objects.equals(this.appId, reviseLostShufflesRequest.appId) && + Objects.equals(this.shuffleIds, reviseLostShufflesRequest.shuffleIds); + } + + @Override + public int hashCode() { + return Objects.hash(appId, shuffleIds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ReviseLostShufflesRequest {\n"); + sb.append(" appId: ").append(toIndentedString(appId)).append("\n"); + sb.append(" shuffleIds: ").append(toIndentedString(shuffleIds)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/openapi/openapi-client/src/main/openapi3/master_rest_v1.yaml b/openapi/openapi-client/src/main/openapi3/master_rest_v1.yaml index 108e185a3af..72ab9d31d11 100644 --- a/openapi/openapi-client/src/main/openapi3/master_rest_v1.yaml +++ b/openapi/openapi-client/src/main/openapi3/master_rest_v1.yaml @@ -239,6 +239,23 @@ paths: application/json: schema: $ref: '#/components/schemas/ApplicationsHeartbeatResponse' + delete: + tags: + - Application + operationId: deleteApps + description: Delete resource of apps. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAppsRequest' + responses: + "200": + description: The request was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/HandleResponse' /api/v1/applications/top_disk_usages: get: @@ -270,43 +287,17 @@ paths: schema: $ref: '#/components/schemas/HostnamesResponse' - /api/v1/applications/reviseLostShuffles: - get: + /api/v1/applications/revise_lost_shuffles: + post: tags: - Application operationId: reviseLostShuffles - description: Revise lost shuffles or delete shuffles of an application. - parameters: - - name: app - in: query - required: false - schema: - type: string - - name: shuffleIds - in: query - required: false - schema: - type: string - responses: - "200": - description: The request was successful. - content: - application/json: - schema: - $ref: '#/components/schemas/HandleResponse' - - /api/v1/applications/deleteApps: - get: - tags: - - Application - operationId: deleteApps - description: Delete resource of apps - parameters: - - name: apps - in: query - required: false - schema: - type: string + description: Revise lost shuffles or deleted shuffles of an application. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ReviseLostShufflesRequest' responses: "200": description: The request was successful. @@ -1093,6 +1084,30 @@ components: required: - peers + DeleteAppsRequest: + type: object + properties: + apps: + type: array + description: The apps to be deleted. + items: + type: string + required: + - apps + + ReviseLostShufflesRequest: + type: object + properties: + appId: + type: string + description: The application id. + shuffleIds: + type: array + description: The shuffle ids to be revised. + items: + type: integer + format: int32 + HandleResponse: type: object properties: diff --git a/service/src/main/scala/org/apache/celeborn/server/common/HttpService.scala b/service/src/main/scala/org/apache/celeborn/server/common/HttpService.scala index e8610dfdc13..bb98e88f66d 100644 --- a/service/src/main/scala/org/apache/celeborn/server/common/HttpService.scala +++ b/service/src/main/scala/org/apache/celeborn/server/common/HttpService.scala @@ -194,10 +194,6 @@ abstract class HttpService extends Service with Logging { def getWorkerEventInfo(): String = throw new UnsupportedOperationException() - def reviseLostShuffles(appId: String, shuffles: java.util.List[Integer]) - - def deleteApps(appIds: String) - def startHttpServer(): Unit = { httpServer = HttpServer( serviceName, diff --git a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/Worker.scala b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/Worker.scala index 62602cd06b9..b9bfff05b04 100644 --- a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/Worker.scala +++ b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/Worker.scala @@ -866,11 +866,6 @@ private[celeborn] class Worker( sb.toString() } - override def reviseLostShuffles(appId: String, shuffles: java.util.List[Integer]): Unit = - throw new UnsupportedOperationException() - - override def deleteApps(appIds: String): Unit = throw new UnsupportedOperationException() - override def exit(exitType: String): String = { exitType.toUpperCase(Locale.ROOT) match { case "DECOMMISSION" =>