From acccb1650f2263603364d652c08b75a980cc7662 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 03:35:42 +0530 Subject: [PATCH 01/18] initial changes --- .../api/endpoint/ListActiveTasksApi.java | 20 +++++++++++++++++++ .../client/api/model/ActiveTaskDetails.java | 5 +++++ .../api/model/ListActiveTaskResponse.java | 9 +++++++++ 3 files changed, 34 insertions(+) create mode 100644 solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java create mode 100644 solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java create mode 100644 solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java new file mode 100644 index 000000000000..1dc06f44d76a --- /dev/null +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -0,0 +1,20 @@ +package org.apache.solr.client.api.endpoint; + +import io.swagger.v3.oas.annotations.Operation; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.QueryParam; +import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.client.api.util.StoreApiParameters; + +import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; + +@Path(INDEX_PATH_PREFIX + "/tasks/list") +public interface ListActiveTasksApi { + @GET + @StoreApiParameters + @Operation( + summary = "Lists all the currently running tasks", + tags = {"tasks"}) + ListActiveTaskResponse listActiveTasks(@QueryParam("taskUUID") String taskUUID) throws Exception; +} diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java new file mode 100644 index 000000000000..28553667b33b --- /dev/null +++ b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java @@ -0,0 +1,5 @@ +package org.apache.solr.client.api.model; + +public class ActiveTaskDetails { + +} diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java new file mode 100644 index 000000000000..826039cd8060 --- /dev/null +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -0,0 +1,9 @@ +package org.apache.solr.client.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +public class ListActiveTaskResponse extends SolrJerseyResponse { + @JsonProperty + public List taskList; +} From e4260140cebb3d841de26378c2d9d530539c1c04 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 14:48:01 +0530 Subject: [PATCH 02/18] testing --- .../api/endpoint/ListActiveTasksApi.java | 7 +++- .../client/api/model/ActiveTaskDetails.java | 5 --- .../api/model/ListActiveTaskResponse.java | 3 +- .../handler/admin/api/ListActiveTasks.java | 40 +++++++++++++++++++ .../component/TaskManagementHandler.java | 9 +++++ 5 files changed, 56 insertions(+), 8 deletions(-) delete mode 100644 solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java create mode 100644 solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index 1dc06f44d76a..b76775456002 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -1,20 +1,23 @@ package org.apache.solr.client.api.endpoint; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; import jakarta.ws.rs.QueryParam; import org.apache.solr.client.api.model.ListActiveTaskResponse; import org.apache.solr.client.api.util.StoreApiParameters; import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; -@Path(INDEX_PATH_PREFIX + "/tasks/list") +@Path(INDEX_PATH_PREFIX + "/tasks/listjalaz") public interface ListActiveTasksApi { @GET @StoreApiParameters @Operation( summary = "Lists all the currently running tasks", tags = {"tasks"}) - ListActiveTaskResponse listActiveTasks(@QueryParam("taskUUID") String taskUUID) throws Exception; + ListActiveTaskResponse listActiveTasks( + @QueryParam("taskUUID") String taskUUID) throws Exception; } diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java deleted file mode 100644 index 28553667b33b..000000000000 --- a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.apache.solr.client.api.model; - -public class ActiveTaskDetails { - -} diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java index 826039cd8060..57e0af3b972a 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -2,8 +2,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; +import java.util.Map; public class ListActiveTaskResponse extends SolrJerseyResponse { @JsonProperty - public List taskList; + public Map taskList; } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java new file mode 100644 index 000000000000..8b6b1ffaf1de --- /dev/null +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -0,0 +1,40 @@ +package org.apache.solr.handler.admin.api; + +import jakarta.inject.Inject; +import org.apache.solr.api.JerseyResource; +import org.apache.solr.client.api.endpoint.ListActiveTasksApi; +import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.common.SolrException; +import org.apache.solr.core.CoreContainer; +import org.apache.solr.jersey.PermissionName; + +import java.util.Map; + +import static org.apache.solr.common.SolrException.ErrorCode.SERVER_ERROR; +import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; + +public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { + + private final CoreContainer coreContainer; + + @Inject + public ListActiveTasks(CoreContainer coreContainer) { + this.coreContainer = coreContainer; + } + + @Override + @PermissionName(READ_PERM) + public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { + if (coreContainer == null || coreContainer.isShutDown()) { + throw new SolrException( + SERVER_ERROR, "CoreContainer is either not initialized or shutting down"); + } + + final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); + + response.taskList = Map.of("xyz","jalaz"); + + return response; + + } +} diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java index afb7a05c5868..1785ba075fcd 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java @@ -21,14 +21,18 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; +import org.apache.solr.api.JerseyResource; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.RequestHandlerBase; +import org.apache.solr.handler.admin.api.ListActiveTasks; +import org.apache.solr.handler.admin.api.NodeHealth; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.PermissionNameProvider; @@ -132,4 +136,9 @@ public static ResponseBuilder buildResponseBuilder( return rb; } + + @Override + public Collection> getJerseyResources() { + return List.of(ListActiveTasks.class); + } } From 7b157910c42aa8ec30db4b69df85772dfefeea6c Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 16:27:35 +0530 Subject: [PATCH 03/18] working api --- .../solr/handler/admin/api/ListActiveTasks.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 8b6b1ffaf1de..7c6faa48b941 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -4,35 +4,26 @@ import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ListActiveTaskResponse; -import org.apache.solr.common.SolrException; -import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import java.util.Map; -import static org.apache.solr.common.SolrException.ErrorCode.SERVER_ERROR; import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { - private final CoreContainer coreContainer; - @Inject - public ListActiveTasks(CoreContainer coreContainer) { - this.coreContainer = coreContainer; + public ListActiveTasks() { + } @Override @PermissionName(READ_PERM) public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { - if (coreContainer == null || coreContainer.isShutDown()) { - throw new SolrException( - SERVER_ERROR, "CoreContainer is either not initialized or shutting down"); - } final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); - response.taskList = Map.of("xyz","jalaz"); + response.taskList = Map.of("xyz","jalaz", "mno", "pqr"); return response; From 02c14b969c2c86bc9f141f0e0182811187e9794b Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 18:59:25 +0530 Subject: [PATCH 04/18] working setup --- .../handler/admin/CollectionsHandler.java | 15 ++++++++++- .../handler/admin/api/ListActiveTasks.java | 27 ++++++++++++++++--- .../solr/common/params/CollectionParams.java | 1 + 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java index be9f394d26c5..41592f699533 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java @@ -97,6 +97,7 @@ import static org.apache.solr.common.params.CommonAdminParams.SPLIT_METHOD; import static org.apache.solr.common.params.CommonAdminParams.WAIT_FOR_FINAL_STATE; import static org.apache.solr.common.params.CommonParams.NAME; +import static org.apache.solr.common.params.CommonParams.TASK_CHECK_UUID; import static org.apache.solr.common.params.CommonParams.TIMING; import static org.apache.solr.common.params.CommonParams.VALUE_LONG; import static org.apache.solr.common.params.CoreAdminParams.BACKUP_LOCATION; @@ -124,6 +125,7 @@ import org.apache.solr.client.api.model.CreateCollectionSnapshotRequestBody; import org.apache.solr.client.api.model.CreateCollectionSnapshotResponse; import org.apache.solr.client.api.model.InstallShardDataRequestBody; +import org.apache.solr.client.api.model.ListActiveTaskResponse; import org.apache.solr.client.api.model.ListCollectionSnapshotsResponse; import org.apache.solr.client.api.model.ReplaceNodeRequestBody; import org.apache.solr.client.api.model.SetClusterPropertyRequestBody; @@ -194,6 +196,7 @@ import org.apache.solr.handler.admin.api.DeleteShard; import org.apache.solr.handler.admin.api.ForceLeader; import org.apache.solr.handler.admin.api.InstallShardData; +import org.apache.solr.handler.admin.api.ListActiveTasks; import org.apache.solr.handler.admin.api.ListAliases; import org.apache.solr.handler.admin.api.ListCollectionBackups; import org.apache.solr.handler.admin.api.ListCollectionSnapshots; @@ -958,6 +961,15 @@ public Map execute( V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, listCollectionsResponse); return null; }), + /** Handle list of active tasks request. Do list collection request to zk host */ + LIST_TASK_OP( + LIST, + (req, rsp, h) -> { + final ListActiveTasks listActiveTasks = new ListActiveTasks(req); + final ListActiveTaskResponse listActiveTaskResponse = listActiveTasks.listActiveTasks(req.getParams().get(TASK_CHECK_UUID)); + V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, listActiveTaskResponse); + return null; + }), /** * Handle cluster status request. Can return status per specific collection/shard or per all * collections. @@ -1377,7 +1389,8 @@ public Collection> getJerseyResources() { ListCollectionSnapshots.class, CreateCollectionSnapshot.class, DeleteCollectionSnapshot.class, - ClusterProperty.class); + ClusterProperty.class, + ListActiveTasks.class); } @Override diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 7c6faa48b941..03d187bebf49 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -4,26 +4,45 @@ import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.response.SolrQueryResponse; +import java.util.HashMap; +import java.util.Iterator; import java.util.Map; +import static org.apache.solr.security.PermissionNameProvider.Name.COLL_READ_PERM; import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { - @Inject - public ListActiveTasks() { + private final SolrQueryRequest solrQueryRequest; + @Inject + public ListActiveTasks( + SolrQueryRequest solrQueryRequest) { + this.solrQueryRequest = solrQueryRequest; } + + @Override - @PermissionName(READ_PERM) + @PermissionName(COLL_READ_PERM) public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); - response.taskList = Map.of("xyz","jalaz", "mno", "pqr"); + Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); + + Map taskList = new HashMap<>(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + taskList.put(entry.getKey(), entry.getValue()); + } + + response.taskList = taskList; return response; diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java index a066ff1e89b3..2b92f60df478 100644 --- a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java +++ b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java @@ -114,6 +114,7 @@ enum CollectionAction { // For testing. Could eventually be exposed publicly if needed DISTRIBUTEDAPIPROCESSING(false, LockLevel.NONE), LIST(false, LockLevel.NONE), + LIST_TASK(false, LockLevel.NONE), CLUSTERSTATUS(false, LockLevel.NONE), ADDREPLICAPROP(true, LockLevel.NONE), // atomic; no lock DELETEREPLICAPROP(true, LockLevel.NONE), // atomic; no lock From 177d2c646843c126e3121c2136e6c6dca094021b Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 19:34:11 +0530 Subject: [PATCH 05/18] cleanup --- .../solr/handler/admin/CollectionsHandler.java | 12 +----------- .../apache/solr/common/params/CollectionParams.java | 1 - 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java index 41592f699533..9f7b21a36efa 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java @@ -961,15 +961,6 @@ public Map execute( V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, listCollectionsResponse); return null; }), - /** Handle list of active tasks request. Do list collection request to zk host */ - LIST_TASK_OP( - LIST, - (req, rsp, h) -> { - final ListActiveTasks listActiveTasks = new ListActiveTasks(req); - final ListActiveTaskResponse listActiveTaskResponse = listActiveTasks.listActiveTasks(req.getParams().get(TASK_CHECK_UUID)); - V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, listActiveTaskResponse); - return null; - }), /** * Handle cluster status request. Can return status per specific collection/shard or per all * collections. @@ -1389,8 +1380,7 @@ public Collection> getJerseyResources() { ListCollectionSnapshots.class, CreateCollectionSnapshot.class, DeleteCollectionSnapshot.class, - ClusterProperty.class, - ListActiveTasks.class); + ClusterProperty.class); } @Override diff --git a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java index 2b92f60df478..a066ff1e89b3 100644 --- a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java +++ b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java @@ -114,7 +114,6 @@ enum CollectionAction { // For testing. Could eventually be exposed publicly if needed DISTRIBUTEDAPIPROCESSING(false, LockLevel.NONE), LIST(false, LockLevel.NONE), - LIST_TASK(false, LockLevel.NONE), CLUSTERSTATUS(false, LockLevel.NONE), ADDREPLICAPROP(true, LockLevel.NONE), // atomic; no lock DELETEREPLICAPROP(true, LockLevel.NONE), // atomic; no lock From 95ace8df723035eab7fcb0e86bfc79b3a78f1c52 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 19:49:25 +0530 Subject: [PATCH 06/18] cleanup --- .../apache/solr/client/api/endpoint/ListActiveTasksApi.java | 4 +--- .../apache/solr/client/api/model/ListActiveTaskResponse.java | 1 - .../org/apache/solr/handler/admin/CollectionsHandler.java | 3 --- .../org/apache/solr/handler/admin/api/ListActiveTasks.java | 5 +---- .../apache/solr/handler/component/TaskManagementHandler.java | 1 - 5 files changed, 2 insertions(+), 12 deletions(-) diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index b76775456002..9c31458af815 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -1,10 +1,8 @@ package org.apache.solr.client.api.endpoint; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; -import jakarta.ws.rs.PathParam; import jakarta.ws.rs.QueryParam; import org.apache.solr.client.api.model.ListActiveTaskResponse; import org.apache.solr.client.api.util.StoreApiParameters; @@ -16,7 +14,7 @@ public interface ListActiveTasksApi { @GET @StoreApiParameters @Operation( - summary = "Lists all the currently running tasks", + summary = "Lists all the currently running tasks or status of any taskUUID being passed as queryParam", tags = {"tasks"}) ListActiveTaskResponse listActiveTasks( @QueryParam("taskUUID") String taskUUID) throws Exception; diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java index 57e0af3b972a..9885e0f7204f 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -1,7 +1,6 @@ package org.apache.solr.client.api.model; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.List; import java.util.Map; public class ListActiveTaskResponse extends SolrJerseyResponse { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java index 9f7b21a36efa..be9f394d26c5 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java @@ -97,7 +97,6 @@ import static org.apache.solr.common.params.CommonAdminParams.SPLIT_METHOD; import static org.apache.solr.common.params.CommonAdminParams.WAIT_FOR_FINAL_STATE; import static org.apache.solr.common.params.CommonParams.NAME; -import static org.apache.solr.common.params.CommonParams.TASK_CHECK_UUID; import static org.apache.solr.common.params.CommonParams.TIMING; import static org.apache.solr.common.params.CommonParams.VALUE_LONG; import static org.apache.solr.common.params.CoreAdminParams.BACKUP_LOCATION; @@ -125,7 +124,6 @@ import org.apache.solr.client.api.model.CreateCollectionSnapshotRequestBody; import org.apache.solr.client.api.model.CreateCollectionSnapshotResponse; import org.apache.solr.client.api.model.InstallShardDataRequestBody; -import org.apache.solr.client.api.model.ListActiveTaskResponse; import org.apache.solr.client.api.model.ListCollectionSnapshotsResponse; import org.apache.solr.client.api.model.ReplaceNodeRequestBody; import org.apache.solr.client.api.model.SetClusterPropertyRequestBody; @@ -196,7 +194,6 @@ import org.apache.solr.handler.admin.api.DeleteShard; import org.apache.solr.handler.admin.api.ForceLeader; import org.apache.solr.handler.admin.api.InstallShardData; -import org.apache.solr.handler.admin.api.ListActiveTasks; import org.apache.solr.handler.admin.api.ListAliases; import org.apache.solr.handler.admin.api.ListCollectionBackups; import org.apache.solr.handler.admin.api.ListCollectionSnapshots; diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 03d187bebf49..bcd655df74f5 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -4,16 +4,13 @@ import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ListActiveTaskResponse; -import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.response.SolrQueryResponse; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import static org.apache.solr.security.PermissionNameProvider.Name.COLL_READ_PERM; import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { @@ -29,7 +26,7 @@ public ListActiveTasks( @Override - @PermissionName(COLL_READ_PERM) + @PermissionName(READ_PERM) public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java index 1785ba075fcd..817269b48c95 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java @@ -32,7 +32,6 @@ import org.apache.solr.core.SolrCore; import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.handler.admin.api.ListActiveTasks; -import org.apache.solr.handler.admin.api.NodeHealth; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.PermissionNameProvider; From 7dc167a7e082dcf9182c837ee7234fc446b6bd6e Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 20:01:10 +0530 Subject: [PATCH 07/18] logging --- .../solr/handler/admin/api/ListActiveTasks.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index bcd655df74f5..3c49a6fe1e09 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -4,9 +4,13 @@ import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.lang.invoke.MethodHandles; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -15,6 +19,8 @@ public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { + private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private final SolrQueryRequest solrQueryRequest; @Inject @@ -30,6 +36,13 @@ public ListActiveTasks( public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); + CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); + + if (coreContainer.isZooKeeperAware()) { + log.debug("solr cloud"); + } else { + log.debug("stand alone"); + } Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); From 1a32bb16439387e9f7c3ffe8cbbbc951ffee5418 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Sat, 16 May 2026 21:32:23 +0530 Subject: [PATCH 08/18] minor --- .../handler/admin/api/ListActiveTasks.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 3c49a6fe1e09..6b7e22db7b15 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -39,11 +39,24 @@ public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); if (coreContainer.isZooKeeperAware()) { - log.debug("solr cloud"); + if (log.isDebugEnabled()) { + log.debug("solr cloud"); + } + handleSolrCloudMode(response, taskUUID); } else { - log.debug("stand alone"); + if (log.isDebugEnabled()) { + log.debug("standalone solr"); + } + handleStandAloneMode(response, taskUUID); } + log.debug("something random"); + + return response; + + } + + private void handleStandAloneMode(ListActiveTaskResponse response, String taskUUID) { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); Map taskList = new HashMap<>(); @@ -53,8 +66,17 @@ public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception } response.taskList = taskList; + } - return response; + private void handleSolrCloudMode(ListActiveTaskResponse response, String taskUUID) { + Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); + Map taskList = new HashMap<>(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + taskList.put(entry.getKey(), entry.getValue()); + } + + response.taskList = taskList; } } From d746e210c8d3784b435c91e0a844765366d5cea8 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Wed, 20 May 2026 02:51:50 +0530 Subject: [PATCH 09/18] response model for 2nd API --- .../api/endpoint/ListActiveTasksApi.java | 20 +++++++++++----- .../client/api/model/TaskStatusResponse.java | 8 +++++++ .../handler/admin/api/ListActiveTasks.java | 23 ++++++++++++------- 3 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index 9c31458af815..3b6ed8bc854f 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -3,19 +3,27 @@ import io.swagger.v3.oas.annotations.Operation; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; -import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.PathParam; import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.client.api.model.TaskStatusResponse; import org.apache.solr.client.api.util.StoreApiParameters; import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; @Path(INDEX_PATH_PREFIX + "/tasks/listjalaz") public interface ListActiveTasksApi { + + // Handles: .../tasks/listjalaz (Lists all) + @GET + @StoreApiParameters + @Operation(summary = "Lists all the currently running tasks", tags = {"tasks"}) + ListActiveTaskResponse listAllActiveTasks() throws Exception; + + // Handles: .../tasks/listjalaz/xyz (Lists specific) @GET + @Path("/{taskUUID}") @StoreApiParameters - @Operation( - summary = "Lists all the currently running tasks or status of any taskUUID being passed as queryParam", - tags = {"tasks"}) - ListActiveTaskResponse listActiveTasks( - @QueryParam("taskUUID") String taskUUID) throws Exception; + @Operation(summary = "Status of a specific taskUUID passed as pathParam", tags = {"tasks"}) + TaskStatusResponse getTaskStatus( + @PathParam("taskUUID") String taskUUID) throws Exception; } diff --git a/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java new file mode 100644 index 000000000000..da691675468f --- /dev/null +++ b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java @@ -0,0 +1,8 @@ +package org.apache.solr.client.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class TaskStatusResponse extends SolrJerseyResponse { + @JsonProperty + public boolean taskStatus; +} diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 6b7e22db7b15..b902eb005b4c 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -4,6 +4,7 @@ import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ListActiveTaskResponse; +import org.apache.solr.client.api.model.TaskStatusResponse; import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; @@ -29,12 +30,9 @@ public ListActiveTasks( this.solrQueryRequest = solrQueryRequest; } - - @Override @PermissionName(READ_PERM) - public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception { - + public ListActiveTaskResponse listAllActiveTasks() throws Exception { final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); @@ -42,21 +40,28 @@ public ListActiveTaskResponse listActiveTasks(String taskUUID) throws Exception if (log.isDebugEnabled()) { log.debug("solr cloud"); } - handleSolrCloudMode(response, taskUUID); + handleSolrCloudMode(response); } else { if (log.isDebugEnabled()) { log.debug("standalone solr"); } - handleStandAloneMode(response, taskUUID); + handleStandAloneMode(response); } log.debug("something random"); return response; + } + @Override + @PermissionName(READ_PERM) + public TaskStatusResponse getTaskStatus(String taskUUID) throws Exception { + return null; } - private void handleStandAloneMode(ListActiveTaskResponse response, String taskUUID) { + + + private void handleStandAloneMode(ListActiveTaskResponse response) { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); Map taskList = new HashMap<>(); @@ -68,7 +73,7 @@ private void handleStandAloneMode(ListActiveTaskResponse response, String taskUU response.taskList = taskList; } - private void handleSolrCloudMode(ListActiveTaskResponse response, String taskUUID) { + private void handleSolrCloudMode(ListActiveTaskResponse response) { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); Map taskList = new HashMap<>(); @@ -79,4 +84,6 @@ private void handleSolrCloudMode(ListActiveTaskResponse response, String taskUUI response.taskList = taskList; } + + } From df5c42883edda7540cc0129c52b9f5551a63c633 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Wed, 20 May 2026 04:05:24 +0530 Subject: [PATCH 10/18] verifies for solr cloud --- .../handler/admin/api/ListActiveTasks.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index b902eb005b4c..978aaa8d6f4f 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -40,28 +40,41 @@ public ListActiveTaskResponse listAllActiveTasks() throws Exception { if (log.isDebugEnabled()) { log.debug("solr cloud"); } - handleSolrCloudMode(response); + response.taskList = handleSolrCloudMode(); } else { if (log.isDebugEnabled()) { log.debug("standalone solr"); } - handleStandAloneMode(response); + response.taskList = handleStandAloneMode(); } - log.debug("something random"); - return response; } @Override @PermissionName(READ_PERM) public TaskStatusResponse getTaskStatus(String taskUUID) throws Exception { - return null; + final TaskStatusResponse response = instantiateJerseyResponse(TaskStatusResponse.class); + CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); + + if (coreContainer.isZooKeeperAware()) { + if (log.isDebugEnabled()) { + log.debug("solr cloud"); + } + response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); + } else { + if (log.isDebugEnabled()) { + log.debug("standalone solr"); + } + response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); + } + + return response; } - private void handleStandAloneMode(ListActiveTaskResponse response) { + private Map handleStandAloneMode() { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); Map taskList = new HashMap<>(); @@ -70,10 +83,10 @@ private void handleStandAloneMode(ListActiveTaskResponse response) { taskList.put(entry.getKey(), entry.getValue()); } - response.taskList = taskList; + return taskList; } - private void handleSolrCloudMode(ListActiveTaskResponse response) { + private Map handleSolrCloudMode() { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); Map taskList = new HashMap<>(); @@ -82,7 +95,7 @@ private void handleSolrCloudMode(ListActiveTaskResponse response) { taskList.put(entry.getKey(), entry.getValue()); } - response.taskList = taskList; + return taskList; } From 354d0f5e733dde8a7a3838d06073f5a8a053db94 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Wed, 20 May 2026 23:51:26 +0530 Subject: [PATCH 11/18] changes related to pojo & duplicate code removal --- .../client/api/model/ActiveTaskDetails.java | 17 +++++ .../api/model/ListActiveTaskResponse.java | 4 +- .../handler/admin/api/ListActiveTasks.java | 63 ++++--------------- 3 files changed, 30 insertions(+), 54 deletions(-) create mode 100644 solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java new file mode 100644 index 000000000000..c7c58f073c43 --- /dev/null +++ b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java @@ -0,0 +1,17 @@ +package org.apache.solr.client.api.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ActiveTaskDetails { + + public ActiveTaskDetails() {} + + public ActiveTaskDetails(String taskUUID, String taskQuery) { + this.taskUUID = taskUUID; + this.taskQuery = taskQuery; + } + + @JsonProperty public String taskUUID; + @JsonProperty public String taskQuery; + +} diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java index 9885e0f7204f..826039cd8060 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -1,9 +1,9 @@ package org.apache.solr.client.api.model; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Map; +import java.util.List; public class ListActiveTaskResponse extends SolrJerseyResponse { @JsonProperty - public Map taskList; + public List taskList; } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 978aaa8d6f4f..da7aa2093346 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -3,25 +3,21 @@ import jakarta.inject.Inject; import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; +import org.apache.solr.client.api.model.ActiveTaskDetails; import org.apache.solr.client.api.model.ListActiveTaskResponse; import org.apache.solr.client.api.model.TaskStatusResponse; -import org.apache.solr.core.CoreContainer; import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.lang.invoke.MethodHandles; -import java.util.HashMap; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Map; import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { - private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private final SolrQueryRequest solrQueryRequest; @Inject @@ -34,19 +30,8 @@ public ListActiveTasks( @PermissionName(READ_PERM) public ListActiveTaskResponse listAllActiveTasks() throws Exception { final ListActiveTaskResponse response = instantiateJerseyResponse(ListActiveTaskResponse.class); - CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); - - if (coreContainer.isZooKeeperAware()) { - if (log.isDebugEnabled()) { - log.debug("solr cloud"); - } - response.taskList = handleSolrCloudMode(); - } else { - if (log.isDebugEnabled()) { - log.debug("standalone solr"); - } - response.taskList = handleStandAloneMode(); - } + + response.taskList = extractActiveTaskLists(); return response; } @@ -55,48 +40,22 @@ public ListActiveTaskResponse listAllActiveTasks() throws Exception { @PermissionName(READ_PERM) public TaskStatusResponse getTaskStatus(String taskUUID) throws Exception { final TaskStatusResponse response = instantiateJerseyResponse(TaskStatusResponse.class); - CoreContainer coreContainer = solrQueryRequest.getCoreContainer(); - - if (coreContainer.isZooKeeperAware()) { - if (log.isDebugEnabled()) { - log.debug("solr cloud"); - } - response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); - } else { - if (log.isDebugEnabled()) { - log.debug("standalone solr"); - } - response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); - } - - return response; - } - + response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); - private Map handleStandAloneMode() { - Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); - - Map taskList = new HashMap<>(); - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - taskList.put(entry.getKey(), entry.getValue()); - } - - return taskList; + return response; } - private Map handleSolrCloudMode() { + private List extractActiveTaskLists() { Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); - Map taskList = new HashMap<>(); + List activeTaskDetails = new ArrayList<>(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); - taskList.put(entry.getKey(), entry.getValue()); + activeTaskDetails.add(new ActiveTaskDetails(entry.getKey(), entry.getValue())); } - return taskList; + return activeTaskDetails; } - } From 1cad09dedffecf3a6fa8403ca5aeaa35532a365d Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 00:50:31 +0530 Subject: [PATCH 12/18] removed older interfaces --- .../component/ActiveTasksListComponent.java | 128 ------------------ .../component/ActiveTasksListHandler.java | 44 +++--- .../component/TaskManagementHandler.java | 7 - 3 files changed, 18 insertions(+), 161 deletions(-) delete mode 100644 solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListComponent.java diff --git a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListComponent.java b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListComponent.java deleted file mode 100644 index ce8a31335c2f..000000000000 --- a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListComponent.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * 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.solr.handler.component; - -import java.io.IOException; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import org.apache.solr.common.MapWriter; -import org.apache.solr.common.util.NamedList; - -/** List the active tasks that can be cancelled */ -public class ActiveTasksListComponent extends SearchComponent { - public static final String COMPONENT_NAME = "activetaskslist"; - - private boolean shouldProcess; - - @Override - public void prepare(ResponseBuilder rb) throws IOException { - if (rb.isTaskListRequest()) { - shouldProcess = true; - } - } - - @Override - public void process(ResponseBuilder rb) { - if (!shouldProcess) { - return; - } - - if (rb.getTaskStatusCheckUUID() != null) { - boolean isActiveOnThisShard = - rb.req - .getCore() - .getCancellableQueryTracker() - .isQueryIdActive(rb.getTaskStatusCheckUUID()); - - rb.rsp.add("taskStatus", isActiveOnThisShard); - return; - } - - rb.rsp.add( - "taskList", - (MapWriter) - ew -> { - Iterator> iterator = - rb.req.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); - - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - ew.put(entry.getKey(), entry.getValue()); - } - }); - } - - @Override - @SuppressWarnings("unchecked") - public void handleResponses(ResponseBuilder rb, ShardRequest sreq) { - if (!shouldProcess) { - return; - } - - NamedList resultList = new NamedList<>(); - - for (ShardResponse r : sreq.responses) { - - if (rb.getTaskStatusCheckUUID() != null) { - boolean isTaskActiveOnShard = r.getSolrResponse().getResponse().getBooleanArg("taskStatus"); - - if (isTaskActiveOnShard) { - rb.rsp - .getValues() - .add("taskStatus", "id:" + rb.getTaskStatusCheckUUID() + ", status: active"); - return; - } else { - continue; - } - } - - LinkedHashMap result = - (LinkedHashMap) r.getSolrResponse().getResponse().get("taskList"); - - Iterator> iterator = result.entrySet().iterator(); - - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - - resultList.add(entry.getKey(), entry.getValue()); - } - } - - if (rb.getTaskStatusCheckUUID() != null) { - // We got here with the specific taskID check being specified -- this means that the taskID - // was not found in active tasks on any shard - rb.rsp - .getValues() - .add("taskStatus", "id:" + rb.getTaskStatusCheckUUID() + ", status: inactive"); - return; - } - - rb.rsp.getValues().add("taskList", resultList); - } - - @Override - public String getDescription() { - return "Responsible for listing all active cancellable tasks and also supports checking the status of " - + "a particular task"; - } - - @Override - public Category getCategory() { - return Category.OTHER; - } -} diff --git a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java index f1ce12cd9378..82c9f1a26349 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java @@ -19,44 +19,38 @@ import static org.apache.solr.common.params.CommonParams.TASK_CHECK_UUID; import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import org.apache.solr.api.AnnotatedApi; import org.apache.solr.api.Api; -import org.apache.solr.handler.admin.api.ListActiveTasksAPI; +import org.apache.solr.api.JerseyResource; +import org.apache.solr.handler.admin.api.ListActiveTasks; +import org.apache.solr.handler.api.V2ApiUtils; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.request.SolrRequestHandler; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.AuthorizationContext; import org.apache.solr.security.PermissionNameProvider; -/** Handles request for listing all active cancellable tasks */ + +/** + * Handles request for listing all active cancellable tasks + * + * All active tasks logic lives in the v2 {@link ListActiveTasks}; this handler is a thin v1 bridge + * that extracts request parameters and delegates. + */ public class ActiveTasksListHandler extends TaskManagementHandler { // This can be a parent level member but we keep it here to allow future handlers to have // a custom list of components - private List components; @Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { - Map extraParams = null; - ResponseBuilder rb = buildResponseBuilder(req, rsp, getComponentsList()); - - rb.setIsTaskListRequest(true); - String taskStatusCheckUUID = req.getParams().get(TASK_CHECK_UUID, null); if (taskStatusCheckUUID != null) { - if (rb.isDistrib) { - extraParams = new HashMap<>(); - - extraParams.put(TASK_CHECK_UUID, taskStatusCheckUUID); - } - - rb.setTaskStatusCheckUUID(taskStatusCheckUUID); + V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, new ListActiveTasks(req).getTaskStatus(taskStatusCheckUUID)); + } else { + V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, new ListActiveTasks(req).listAllActiveTasks()); } - processRequest(req, rb, extraParams); } @Override @@ -90,14 +84,12 @@ public Boolean registerV2() { @Override public Collection getApis() { - return AnnotatedApi.getApis(new ListActiveTasksAPI(this)); + return List.of(); } - private List getComponentsList() { - if (components == null) { - components = buildComponentsList(); - } - - return components; + @Override + public Collection> getJerseyResources() { + return List.of(ListActiveTasks.class); } + } diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java index 817269b48c95..630c15de74d1 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java @@ -118,9 +118,6 @@ public static List buildComponentsList() { QueryCancellationComponent component = new QueryCancellationComponent(); components.add(component); - ActiveTasksListComponent activeTasksListComponent = new ActiveTasksListComponent(); - components.add(activeTasksListComponent); - return components; } @@ -136,8 +133,4 @@ public static ResponseBuilder buildResponseBuilder( return rb; } - @Override - public Collection> getJerseyResources() { - return List.of(ListActiveTasks.class); - } } From 579925d3fe6054fa59207d2cb6a73d91a0222677 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 00:56:22 +0530 Subject: [PATCH 13/18] removing debug --- .../apache/solr/client/api/endpoint/ListActiveTasksApi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index 3b6ed8bc854f..8a373d9bef32 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -10,16 +10,16 @@ import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; -@Path(INDEX_PATH_PREFIX + "/tasks/listjalaz") +@Path(INDEX_PATH_PREFIX + "/tasks/list") public interface ListActiveTasksApi { - // Handles: .../tasks/listjalaz (Lists all) + // Handles: .../tasks/list (Lists all) @GET @StoreApiParameters @Operation(summary = "Lists all the currently running tasks", tags = {"tasks"}) ListActiveTaskResponse listAllActiveTasks() throws Exception; - // Handles: .../tasks/listjalaz/xyz (Lists specific) + // Handles: .../tasks/list/xyz (Lists specific) @GET @Path("/{taskUUID}") @StoreApiParameters From eb1cd97d75c099ad20bf983f13a6dbefb849d003 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 03:26:16 +0530 Subject: [PATCH 14/18] done --- .../component/ActiveTasksListHandler.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java index 82c9f1a26349..0763cda74147 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java @@ -19,9 +19,12 @@ import static org.apache.solr.common.params.CommonParams.TASK_CHECK_UUID; import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.solr.api.Api; import org.apache.solr.api.JerseyResource; +import org.apache.solr.client.api.model.ActiveTaskDetails; import org.apache.solr.handler.admin.api.ListActiveTasks; import org.apache.solr.handler.api.V2ApiUtils; import org.apache.solr.request.SolrQueryRequest; @@ -48,14 +51,22 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw if (taskStatusCheckUUID != null) { V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, new ListActiveTasks(req).getTaskStatus(taskStatusCheckUUID)); } else { - V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, new ListActiveTasks(req).listAllActiveTasks()); + Map mapTasks = new HashMap<>(); + List taskList = new ListActiveTasks(req).listAllActiveTasks().taskList; + if (taskList != null) { + for (ActiveTaskDetails task : taskList) { + mapTasks.put(task.taskUUID, task.taskQuery); + } + } + rsp.add("taskList", mapTasks); } - } + // ////////////////////// SolrInfoMBeans methods ////////////////////// + @Override public String getDescription() { - return "activetaskslist"; + return "Active Tasks List"; } @Override @@ -73,7 +84,6 @@ public SolrRequestHandler getSubHandler(String path) { if (path.startsWith("/tasks/list")) { return this; } - return null; } From 4e10720ae432aa6321cc0446fdbc9caf8d7a2cd7 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 03:29:05 +0530 Subject: [PATCH 15/18] self review --- .../apache/solr/client/api/endpoint/ListActiveTasksApi.java | 2 +- .../apache/solr/handler/component/ActiveTasksListHandler.java | 1 - .../apache/solr/handler/component/TaskManagementHandler.java | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index 8a373d9bef32..e5de534a7f5c 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -19,7 +19,7 @@ public interface ListActiveTasksApi { @Operation(summary = "Lists all the currently running tasks", tags = {"tasks"}) ListActiveTaskResponse listAllActiveTasks() throws Exception; - // Handles: .../tasks/list/xyz (Lists specific) + // Handles: .../tasks/list/slow-task-id (Lists specific) @GET @Path("/{taskUUID}") @StoreApiParameters diff --git a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java index 0763cda74147..6991bc942865 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java @@ -36,7 +36,6 @@ /** * Handles request for listing all active cancellable tasks - * * All active tasks logic lives in the v2 {@link ListActiveTasks}; this handler is a thin v1 bridge * that extracts request parameters and delegates. */ diff --git a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java index 630c15de74d1..3e9c5ec21160 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TaskManagementHandler.java @@ -21,17 +21,14 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; -import org.apache.solr.api.JerseyResource; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; import org.apache.solr.handler.RequestHandlerBase; -import org.apache.solr.handler.admin.api.ListActiveTasks; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.security.PermissionNameProvider; @@ -132,5 +129,4 @@ public static ResponseBuilder buildResponseBuilder( return rb; } - } From eb9b51b265cf023d00ae8d2f8df50487ba4f1bb7 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 03:40:00 +0530 Subject: [PATCH 16/18] added cl --- changelog/unreleased/SOLR-18248-list-tasks.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/unreleased/SOLR-18248-list-tasks.yml diff --git a/changelog/unreleased/SOLR-18248-list-tasks.yml b/changelog/unreleased/SOLR-18248-list-tasks.yml new file mode 100644 index 000000000000..5e8df2c0b414 --- /dev/null +++ b/changelog/unreleased/SOLR-18248-list-tasks.yml @@ -0,0 +1,7 @@ +title: Migrated ListTasks API & TaskStatus API from homegrown @EndPoint to JAX-RS +type: added +authors: + - name: Jalaz Kumar +links: + - name: SOLR-18248 + url: https://issues.apache.org/jira/browse/SOLR-18248 From adc7006aa78c46592eea9f1cf385182384103b61 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 03:45:00 +0530 Subject: [PATCH 17/18] tidying done --- .../api/endpoint/ListActiveTasksApi.java | 15 +++++++----- .../client/api/model/ActiveTaskDetails.java | 1 - .../api/model/ListActiveTaskResponse.java | 3 +-- .../client/api/model/TaskStatusResponse.java | 3 +-- .../handler/admin/api/ListActiveTasks.java | 23 +++++++++---------- .../component/ActiveTasksListHandler.java | 11 ++++----- 6 files changed, 27 insertions(+), 29 deletions(-) diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index e5de534a7f5c..d857a7541637 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -1,5 +1,7 @@ package org.apache.solr.client.api.endpoint; +import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; + import io.swagger.v3.oas.annotations.Operation; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; @@ -8,22 +10,23 @@ import org.apache.solr.client.api.model.TaskStatusResponse; import org.apache.solr.client.api.util.StoreApiParameters; -import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; - @Path(INDEX_PATH_PREFIX + "/tasks/list") public interface ListActiveTasksApi { // Handles: .../tasks/list (Lists all) @GET @StoreApiParameters - @Operation(summary = "Lists all the currently running tasks", tags = {"tasks"}) + @Operation( + summary = "Lists all the currently running tasks", + tags = {"tasks"}) ListActiveTaskResponse listAllActiveTasks() throws Exception; // Handles: .../tasks/list/slow-task-id (Lists specific) @GET @Path("/{taskUUID}") @StoreApiParameters - @Operation(summary = "Status of a specific taskUUID passed as pathParam", tags = {"tasks"}) - TaskStatusResponse getTaskStatus( - @PathParam("taskUUID") String taskUUID) throws Exception; + @Operation( + summary = "Status of a specific taskUUID passed as pathParam", + tags = {"tasks"}) + TaskStatusResponse getTaskStatus(@PathParam("taskUUID") String taskUUID) throws Exception; } diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java index c7c58f073c43..750638acdb46 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java @@ -13,5 +13,4 @@ public ActiveTaskDetails(String taskUUID, String taskQuery) { @JsonProperty public String taskUUID; @JsonProperty public String taskQuery; - } diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java index 826039cd8060..f04771650c19 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -4,6 +4,5 @@ import java.util.List; public class ListActiveTaskResponse extends SolrJerseyResponse { - @JsonProperty - public List taskList; + @JsonProperty public List taskList; } diff --git a/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java index da691675468f..843df81bceed 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java @@ -3,6 +3,5 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class TaskStatusResponse extends SolrJerseyResponse { - @JsonProperty - public boolean taskStatus; + @JsonProperty public boolean taskStatus; } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index da7aa2093346..672fd7e0115a 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -1,6 +1,12 @@ package org.apache.solr.handler.admin.api; +import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; + import jakarta.inject.Inject; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; import org.apache.solr.api.JerseyResource; import org.apache.solr.client.api.endpoint.ListActiveTasksApi; import org.apache.solr.client.api.model.ActiveTaskDetails; @@ -9,20 +15,12 @@ import org.apache.solr.jersey.PermissionName; import org.apache.solr.request.SolrQueryRequest; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; - public class ListActiveTasks extends JerseyResource implements ListActiveTasksApi { private final SolrQueryRequest solrQueryRequest; @Inject - public ListActiveTasks( - SolrQueryRequest solrQueryRequest) { + public ListActiveTasks(SolrQueryRequest solrQueryRequest) { this.solrQueryRequest = solrQueryRequest; } @@ -41,13 +39,15 @@ public ListActiveTaskResponse listAllActiveTasks() throws Exception { public TaskStatusResponse getTaskStatus(String taskUUID) throws Exception { final TaskStatusResponse response = instantiateJerseyResponse(TaskStatusResponse.class); - response.taskStatus = solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); + response.taskStatus = + solrQueryRequest.getCore().getCancellableQueryTracker().isQueryIdActive(taskUUID); return response; } private List extractActiveTaskLists() { - Iterator> iterator = solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); + Iterator> iterator = + solrQueryRequest.getCore().getCancellableQueryTracker().getActiveQueriesGenerated(); List activeTaskDetails = new ArrayList<>(); while (iterator.hasNext()) { @@ -57,5 +57,4 @@ private List extractActiveTaskLists() { return activeTaskDetails; } - } diff --git a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java index 6991bc942865..30d6dd68b52b 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/ActiveTasksListHandler.java @@ -33,11 +33,10 @@ import org.apache.solr.security.AuthorizationContext; import org.apache.solr.security.PermissionNameProvider; - /** - * Handles request for listing all active cancellable tasks - * All active tasks logic lives in the v2 {@link ListActiveTasks}; this handler is a thin v1 bridge - * that extracts request parameters and delegates. + * Handles request for listing all active cancellable tasks All active tasks logic lives in the v2 + * {@link ListActiveTasks}; this handler is a thin v1 bridge that extracts request parameters and + * delegates. */ public class ActiveTasksListHandler extends TaskManagementHandler { // This can be a parent level member but we keep it here to allow future handlers to have @@ -48,7 +47,8 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw String taskStatusCheckUUID = req.getParams().get(TASK_CHECK_UUID, null); if (taskStatusCheckUUID != null) { - V2ApiUtils.squashIntoSolrResponseWithoutHeader(rsp, new ListActiveTasks(req).getTaskStatus(taskStatusCheckUUID)); + V2ApiUtils.squashIntoSolrResponseWithoutHeader( + rsp, new ListActiveTasks(req).getTaskStatus(taskStatusCheckUUID)); } else { Map mapTasks = new HashMap<>(); List taskList = new ListActiveTasks(req).listAllActiveTasks().taskList; @@ -100,5 +100,4 @@ public Collection getApis() { public Collection> getJerseyResources() { return List.of(ListActiveTasks.class); } - } From 996b45b2eb2d8be47884ad96c3c4ad87b37b9b61 Mon Sep 17 00:00:00 2001 From: jaykay12 Date: Thu, 21 May 2026 03:53:07 +0530 Subject: [PATCH 18/18] added apache license --- .../api/endpoint/ListActiveTasksApi.java | 17 +++++++ .../client/api/model/ActiveTaskDetails.java | 17 +++++++ .../api/model/ListActiveTaskResponse.java | 17 +++++++ .../client/api/model/TaskStatusResponse.java | 17 +++++++ .../handler/admin/api/ListActiveTasks.java | 17 +++++++ .../handler/admin/api/ListActiveTasksAPI.java | 48 ------------------- 6 files changed, 85 insertions(+), 48 deletions(-) delete mode 100644 solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasksAPI.java diff --git a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java index d857a7541637..b42a8cb38f1c 100644 --- a/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java +++ b/solr/api/src/java/org/apache/solr/client/api/endpoint/ListActiveTasksApi.java @@ -1,3 +1,20 @@ +/* + * 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.solr.client.api.endpoint; import static org.apache.solr.client.api.util.Constants.INDEX_PATH_PREFIX; diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java index 750638acdb46..874267024f58 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ActiveTaskDetails.java @@ -1,3 +1,20 @@ +/* + * 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.solr.client.api.model; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java index f04771650c19..f74ec9096077 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/ListActiveTaskResponse.java @@ -1,3 +1,20 @@ +/* + * 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.solr.client.api.model; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java index 843df81bceed..9a1c700873dd 100644 --- a/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java +++ b/solr/api/src/java/org/apache/solr/client/api/model/TaskStatusResponse.java @@ -1,3 +1,20 @@ +/* + * 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.solr.client.api.model; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java index 672fd7e0115a..6d71505e281b 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasks.java @@ -1,3 +1,20 @@ +/* + * 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.solr.handler.admin.api; import static org.apache.solr.security.PermissionNameProvider.Name.READ_PERM; diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasksAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasksAPI.java deleted file mode 100644 index fba3d9d26f3f..000000000000 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/ListActiveTasksAPI.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.solr.handler.admin.api; - -import static org.apache.solr.client.solrj.SolrRequest.METHOD.GET; - -import org.apache.solr.api.EndPoint; -import org.apache.solr.handler.component.ActiveTasksListHandler; -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.response.SolrQueryResponse; -import org.apache.solr.security.PermissionNameProvider; - -/** - * V2 API for listing any currently running "tasks". - * - *

This API (GET /v2/collections/collectionName/tasks/list) is analogous to the v1 - * /solr/collectionName/tasks/list API. - */ -public class ListActiveTasksAPI { - private final ActiveTasksListHandler listTaskHandler; - - public ListActiveTasksAPI(ActiveTasksListHandler listTaskHandler) { - this.listTaskHandler = listTaskHandler; - } - - @EndPoint( - path = {"/tasks/list"}, - method = GET, - permission = PermissionNameProvider.Name.READ_PERM) - public void listActiveTasks(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { - listTaskHandler.handleRequestBody(req, rsp); - } -}