dsmiley commented on code in PR #1053: URL: https://github.com/apache/solr/pull/1053#discussion_r1019522570
########## solr/core/src/java/org/apache/solr/handler/admin/api/DeleteReplicaPropertyAPI.java: ########## @@ -17,49 +17,113 @@ package org.apache.solr.handler.admin.api; -import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST; -import static org.apache.solr.common.params.CollectionAdminParams.COLLECTION; -import static org.apache.solr.common.params.CommonParams.ACTION; -import static org.apache.solr.handler.ClusterAPI.wrapParams; -import static org.apache.solr.security.PermissionNameProvider.Name.COLL_EDIT_PERM; +import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION; +import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP; +import static org.apache.solr.common.cloud.ZkStateReader.PROPERTY_PROP; +import static org.apache.solr.common.cloud.ZkStateReader.REPLICA_PROP; +import static org.apache.solr.common.cloud.ZkStateReader.SHARD_ID_PROP; +import static org.apache.solr.common.params.CollectionAdminParams.PROPERTY_PREFIX; +import static org.apache.solr.handler.admin.CollectionsHandler.DEFAULT_COLLECTION_OP_TIMEOUT; -import java.util.HashMap; +import io.swagger.v3.oas.annotations.Parameter; import java.util.Map; -import org.apache.solr.api.Command; -import org.apache.solr.api.EndPoint; -import org.apache.solr.api.PayloadObj; -import org.apache.solr.client.solrj.request.beans.DeleteReplicaPropertyPayload; +import javax.inject.Inject; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import org.apache.solr.client.solrj.SolrResponse; +import org.apache.solr.common.cloud.ZkNodeProps; import org.apache.solr.common.params.CollectionParams; +import org.apache.solr.common.params.RequiredSolrParams; +import org.apache.solr.common.params.SolrParams; +import org.apache.solr.core.CoreContainer; import org.apache.solr.handler.admin.CollectionsHandler; +import org.apache.solr.jersey.SolrJerseyResponse; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.response.SolrQueryResponse; /** * V2 API for removing a property from a collection replica * - * <p>This API (POST /v2/collections/collectionName {'delete-replica-property': {...}}) is analogous - * to the v1 /admin/collections?action=DELETEREPLICAPROP command. - * - * @see DeleteReplicaPropertyPayload + * <p>This API is analogous to the v1 /admin/collections?action=DELETEREPLICAPROP command. */ -@EndPoint( - path = {"/c/{collection}", "/collections/{collection}"}, - method = POST, - permission = COLL_EDIT_PERM) -public class DeleteReplicaPropertyAPI { - private static final String V2_DELETE_REPLICA_PROPERTY_CMD = "delete-replica-property"; +@Path("/collections/{collName}/shards/{shardName}/replicas/{replicaName}/properties/{propName}") +public class DeleteReplicaPropertyAPI extends AdminAPIBase { + + @Inject + public DeleteReplicaPropertyAPI( + CoreContainer coreContainer, + SolrQueryRequest solrQueryRequest, + SolrQueryResponse solrQueryResponse) { + super(coreContainer, solrQueryRequest, solrQueryResponse); + } - private final CollectionsHandler collectionsHandler; + public SolrJerseyResponse deleteReplicaProperty( + @Parameter( + description = "The name of the collection the replica belongs to.", + required = true) + @PathParam("collName") + String collName, + @Parameter(description = "The name of the shard the replica belongs to.", required = true) + @PathParam("shardName") + String shardName, + @Parameter(description = "The replica, e.g., `core_node1`.", required = true) + @PathParam("replicaName") + String replicaName, + @Parameter(description = "The name of the property to delete.", required = true) + @PathParam("propName") + String propertyName) + throws Exception { + final SolrJerseyResponse response = instantiateJerseyResponse(SolrJerseyResponse.class); + final CoreContainer coreContainer = fetchAndValidateZooKeeperAwareCoreContainer(); + recordCollectionForLogAndTracing(collName, solrQueryRequest); - public DeleteReplicaPropertyAPI(CollectionsHandler collectionsHandler) { - this.collectionsHandler = collectionsHandler; + final ZkNodeProps remoteMessage = + createRemoteMessage(collName, shardName, replicaName, propertyName); + final SolrResponse remoteResponse = + CollectionsHandler.submitCollectionApiCommand( + coreContainer, + coreContainer.getDistributedCollectionCommandRunner(), + remoteMessage, + CollectionParams.CollectionAction.DELETEREPLICAPROP, + DEFAULT_COLLECTION_OP_TIMEOUT); + if (remoteResponse.getException() != null) { + throw remoteResponse.getException(); + } + + disableResponseCaching(); Review Comment: Irrelevant unless GET which this isn't. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org