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 <xiangfu.1...@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-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org