You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by xi...@apache.org on 2022/04/16 04:05:52 UTC
[pinot] branch master updated: Make execute adhoc task call async to prevent timeout (#8555)
This is an automated email from the ASF dual-hosted git repository.
xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 2704d88732 Make execute adhoc task call async to prevent timeout (#8555)
2704d88732 is described below
commit 2704d887324014817097e609b1e7d794a898ea99
Author: Xiang Fu <xi...@gmail.com>
AuthorDate: Fri Apr 15 21:05:46 2022 -0700
Make execute adhoc task call async to prevent timeout (#8555)
---
.../api/resources/PinotTaskRestletResource.java | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
index 0e52c5bbc4..fe2ce1638f 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTaskRestletResource.java
@@ -37,7 +37,12 @@ import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.container.AsyncResponse;
+import javax.ws.rs.container.Suspended;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.helix.task.TaskPartitionState;
@@ -53,6 +58,8 @@ import org.apache.pinot.controller.helix.core.minion.PinotHelixTaskResourceManag
import org.apache.pinot.controller.helix.core.minion.PinotTaskManager;
import org.apache.pinot.core.minion.PinotTaskConfig;
import org.apache.pinot.spi.config.task.AdhocTaskConfig;
+import org.glassfish.grizzly.http.server.Request;
+import org.glassfish.jersey.server.ManagedAsync;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
@@ -380,13 +387,16 @@ public class PinotTaskRestletResource {
}
@POST
+ @ManagedAsync
+ @Produces(MediaType.APPLICATION_JSON)
@Path("/tasks/execute")
@Authenticate(AccessType.CREATE)
@ApiOperation("Execute a task on minion")
- public Map<String, String> executeAdhocTask(AdhocTaskConfig adhocTaskConfig) {
+ public void executeAdhocTask(AdhocTaskConfig adhocTaskConfig, @Suspended AsyncResponse asyncResponse,
+ @Context Request requestContext) {
try {
- return _pinotTaskManager.createTask(adhocTaskConfig.getTaskType(), adhocTaskConfig.getTableName(),
- adhocTaskConfig.getTaskName(), adhocTaskConfig.getTaskConfigs());
+ asyncResponse.resume(_pinotTaskManager.createTask(adhocTaskConfig.getTaskType(), adhocTaskConfig.getTableName(),
+ adhocTaskConfig.getTaskName(), adhocTaskConfig.getTaskConfigs()));
} catch (TableNotFoundException e) {
throw new ControllerApplicationException(LOGGER, "Failed to find table: " + adhocTaskConfig.getTableName(),
Response.Status.NOT_FOUND, e);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org