org.apache.helix.task.WorkflowContext.getWorkflowState()方法的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(14.2k)|赞(0)|评价(0)|浏览(125)

本文整理了Java中org.apache.helix.task.WorkflowContext.getWorkflowState()方法的一些代码示例,展示了WorkflowContext.getWorkflowState()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WorkflowContext.getWorkflowState()方法的具体详情如下:
包路径:org.apache.helix.task.WorkflowContext
类名称:WorkflowContext
方法名:getWorkflowState

WorkflowContext.getWorkflowState介绍

暂无

代码示例

代码示例来源:origin: apache/incubator-pinot

/**
 * Get the task queue state for the given task type.
 *
 * @param taskType Task type
 * @return Task queue state
 */
public synchronized TaskState getTaskQueueState(@Nonnull String taskType) {
 return _taskDriver.getWorkflowContext(getHelixJobQueueName(taskType)).getWorkflowState();
}

代码示例来源:origin: apache/helix

Thread.sleep(timeToSleep);
 ctx = getWorkflowContext(workflowName);
} while ((ctx == null || ctx.getWorkflowState() == null || !allowedStates
  .contains(ctx.getWorkflowState())) && System.currentTimeMillis() < st + timeout);
if (ctx == null || !allowedStates.contains(ctx.getWorkflowState())) {
 throw new HelixException(String.format(
   "Workflow \"%s\" context is empty or not in states: \"%s\", current state: \"%s\"",
   workflowName, Arrays.asList(targetStates),
   ctx == null ? "null" : ctx.getWorkflowState().toString()));
return ctx.getWorkflowState();

代码示例来源:origin: org.apache.helix/helix-core

Thread.sleep(timeToSleep);
 ctx = getWorkflowContext(workflowName);
} while ((ctx == null || ctx.getWorkflowState() == null || !allowedStates
  .contains(ctx.getWorkflowState())) && System.currentTimeMillis() < st + timeout);
if (ctx == null || !allowedStates.contains(ctx.getWorkflowState())) {
 throw new HelixException(String.format(
   "Workflow \"%s\" context is empty or not in states: \"%s\", current state: \"%s\"",
   workflowName, targetStates.toString(),
   ctx == null ? "null" : ctx.getWorkflowState().toString()));
return ctx.getWorkflowState();

代码示例来源:origin: org.apache.helix/helix-core

public void refreshWorkflowsStatus(TaskDriver driver) {
 for (WorkflowMonitor workflowMonitor : _perTypeWorkflowMonitorMap.values()) {
  workflowMonitor.resetGauges();
 }
 Map<String, WorkflowConfig> workflowConfigMap = driver.getWorkflows();
 for (String workflow : workflowConfigMap.keySet()) {
  if (workflowConfigMap.get(workflow).isRecurring() || workflow.isEmpty()) {
   continue;
  }
  WorkflowContext workflowContext = driver.getWorkflowContext(workflow);
  TaskState currentState = workflowContext == null ? TaskState.NOT_STARTED : workflowContext.getWorkflowState();
  updateWorkflowGauges(workflowConfigMap.get(workflow), currentState);
 }
}
public void updateWorkflowCounters(WorkflowConfig workflowConfig, TaskState to) {

代码示例来源:origin: apache/helix

public void refreshWorkflowsStatus(TaskDriver driver) {
 for (Map.Entry<String, WorkflowMonitor> workflowMonitor : _perTypeWorkflowMonitorMap
   .entrySet()) {
  workflowMonitor.getValue().resetGauges();
 }
 Map<String, WorkflowConfig> workflowConfigMap = driver.getWorkflows();
 for (String workflow : workflowConfigMap.keySet()) {
  if (workflowConfigMap.get(workflow).isRecurring() || workflow.isEmpty()) {
   continue;
  }
  WorkflowContext workflowContext = driver.getWorkflowContext(workflow);
  TaskState currentState = workflowContext == null ? TaskState.NOT_STARTED : workflowContext.getWorkflowState();
  updateWorkflowGauges(workflowConfigMap.get(workflow), currentState);
 }
}
public void updateWorkflowCounters(WorkflowConfig workflowConfig, TaskState to) {

代码示例来源:origin: org.apache.helix/helix-core

/**
 * Public sync method to stop a workflow/queue with timeout
 *
 * Basically the workflow and all of its jobs has been stopped if this method return success.
 *
 * @param workflow  The workflow name
 * @param timeout   The timeout for stopping workflow/queue in milisecond
 */
public void waitToStop(String workflow, long timeout) throws InterruptedException {
 setWorkflowTargetState(workflow, TargetState.STOP);
 long endTime = System.currentTimeMillis() + timeout;
 while (System.currentTimeMillis() <= endTime) {
  WorkflowContext workflowContext = getWorkflowContext(workflow);
  if (workflowContext == null || TaskState.IN_PROGRESS.equals(workflowContext.getWorkflowState())) {
   Thread.sleep(1000);
  } else {
   // Successfully stopped
   return;
  }
 }
 // Failed to stop with timeout
 throw new HelixException(String
   .format("Fail to stop the workflow/queue %s with in %d milliseconds.", workflow, timeout));
}

代码示例来源:origin: apache/helix

/**
 * Public sync method to stop a workflow/queue with timeout
 *
 * Basically the workflow and all of its jobs has been stopped if this method return success.
 *
 * @param workflow  The workflow name
 * @param timeout   The timeout for stopping workflow/queue in milisecond
 */
public void waitToStop(String workflow, long timeout) throws InterruptedException {
 setWorkflowTargetState(workflow, TargetState.STOP);
 long endTime = System.currentTimeMillis() + timeout;
 while (System.currentTimeMillis() <= endTime) {
  WorkflowContext workflowContext = getWorkflowContext(workflow);
  if (workflowContext == null || TaskState.IN_PROGRESS.equals(workflowContext.getWorkflowState())) {
   Thread.sleep(1000);
  } else {
   // Successfully stopped
   return;
  }
 }
 // Failed to stop with timeout
 throw new HelixException(String
   .format("Fail to stop the workflow/queue %s with in %d milliseconds.", workflow, timeout));
}

代码示例来源:origin: apache/helix

protected void updateWorkflowMonitor(WorkflowContext context, WorkflowConfig config) {
 if (_clusterStatusMonitor != null) {
  _clusterStatusMonitor.updateWorkflowCounters(config, context.getWorkflowState(),
    context.getFinishTime() - context.getStartTime());
 }
}

代码示例来源:origin: org.apache.helix/helix-core

protected void updateWorkflowMonitor(WorkflowContext context, WorkflowConfig config) {
 if (_clusterStatusMonitor != null) {
  _clusterStatusMonitor.updateWorkflowCounters(config, context.getWorkflowState(),
    context.getFinishTime() - context.getStartTime());
 }
}

代码示例来源:origin: com.linkedin.gobblin/gobblin-cluster

if (wCtx != null && wCtx.getWorkflowState() == null) {
 throw new IllegalStateException("Queue " + queueName + " does not have a valid work state!");

代码示例来源:origin: org.apache.helix/helix-core

/**
 * delete a job from a scheduled (non-recurrent) queue.
 *
 * @param queue
 * @param job
 */
private void deleteJobFromQueue(final String queue, final String job) {
 WorkflowContext workflowCtx = TaskUtil.getWorkflowContext(_propertyStore, queue);
 String workflowState = (workflowCtx != null)
   ? workflowCtx.getWorkflowState().name()
   : TaskState.NOT_STARTED.name();
 if (workflowState.equals(TaskState.IN_PROGRESS.name())) {
  throw new IllegalStateException("Queue " + queue + " is still running!");
 }
 if (workflowState.equals(TaskState.COMPLETED.name()) || workflowState.equals(
   TaskState.FAILED.name()) || workflowState.equals(TaskState.ABORTED.name())) {
  LOG.warn("Queue " + queue + " has already reached its final state, skip deleting job from it.");
  return;
 }
 String namespacedJobName = TaskUtil.getNamespacedJobName(queue, job);
 Set<String> jobs = new HashSet<>(Arrays.asList(namespacedJobName));
 if (!TaskUtil.removeJobsFromWorkflow(_accessor, _propertyStore, queue, jobs, true)) {
  LOG.error("Failed to delete job " + job + " from queue " + queue);
  throw new HelixException("Failed to delete job " + job + " from queue " + queue);
 }
}

代码示例来源:origin: apache/helix

/**
 * Remove all jobs that are in final states (ABORTED, FAILED, COMPLETED) from the job queue. The
 * job config, job context will be removed from Zookeeper.
 *
 * @param queue The name of job queue
 */
public void cleanupQueue(String queue) {
 WorkflowConfig workflowConfig = TaskUtil.getWorkflowConfig(_accessor, queue);
 if (workflowConfig == null) {
  throw new IllegalArgumentException("Queue " + queue + " does not yet exist!");
 }
 boolean isTerminable = workflowConfig.isTerminable();
 if (isTerminable) {
  throw new IllegalArgumentException(queue + " is not a queue!");
 }
 WorkflowContext wCtx = TaskUtil.getWorkflowContext(_propertyStore, queue);
 if (wCtx == null || wCtx.getWorkflowState() == null) {
  throw new IllegalStateException("Queue " + queue + " does not have a valid work state!");
 }
 Set<String> jobs = new HashSet<String>();
 for (String jobNode : workflowConfig.getJobDag().getAllNodes()) {
  TaskState curState = wCtx.getJobState(jobNode);
  if (curState != null && (curState == TaskState.ABORTED || curState == TaskState.COMPLETED
    || curState == TaskState.FAILED)) {
   jobs.add(jobNode);
  }
 }
 TaskUtil.removeJobsFromWorkflow(_accessor, _propertyStore, queue, jobs, true);
}

代码示例来源:origin: apache/helix

/**
 * delete a job from a scheduled (non-recurrent) queue.
 *
 * @param queue
 * @param job
 */
private void deleteJobFromQueue(final String queue, final String job) {
 WorkflowContext workflowCtx = TaskUtil.getWorkflowContext(_propertyStore, queue);
 String workflowState = (workflowCtx != null)
   ? workflowCtx.getWorkflowState().name()
   : TaskState.NOT_STARTED.name();
 if (workflowState.equals(TaskState.IN_PROGRESS.name())) {
  throw new IllegalStateException("Queue " + queue + " is still running!");
 }
 if (workflowState.equals(TaskState.COMPLETED.name()) || workflowState.equals(
   TaskState.FAILED.name()) || workflowState.equals(TaskState.ABORTED.name())) {
  LOG.warn("Queue " + queue + " has already reached its final state, skip deleting job from it.");
  return;
 }
 String namespacedJobName = TaskUtil.getNamespacedJobName(queue, job);
 Set<String> jobs = new HashSet<>(Arrays.asList(namespacedJobName));
 if (!TaskUtil.removeJobsFromWorkflow(_accessor, _propertyStore, queue, jobs, true)) {
  LOG.error("Failed to delete job " + job + " from queue " + queue);
  throw new HelixException("Failed to delete job " + job + " from queue " + queue);
 }
}

代码示例来源:origin: org.apache.helix/helix-core

/**
 * Remove all jobs that are in final states (ABORTED, FAILED, COMPLETED) from the job queue. The
 * job config, job context will be removed from Zookeeper.
 *
 * @param queue The name of job queue
 */
public void cleanupQueue(String queue) {
 WorkflowConfig workflowConfig = TaskUtil.getWorkflowConfig(_accessor, queue);
 if (workflowConfig == null) {
  throw new IllegalArgumentException("Queue " + queue + " does not yet exist!");
 }
 boolean isTerminable = workflowConfig.isTerminable();
 if (isTerminable) {
  throw new IllegalArgumentException(queue + " is not a queue!");
 }
 WorkflowContext wCtx = TaskUtil.getWorkflowContext(_propertyStore, queue);
 if (wCtx == null || wCtx.getWorkflowState() == null) {
  throw new IllegalStateException("Queue " + queue + " does not have a valid work state!");
 }
 Set<String> jobs = new HashSet<String>();
 for (String jobNode : workflowConfig.getJobDag().getAllNodes()) {
  TaskState curState = wCtx.getJobState(jobNode);
  if (curState != null && (curState == TaskState.ABORTED || curState == TaskState.COMPLETED
    || curState == TaskState.FAILED)) {
   jobs.add(jobNode);
  }
 }
 TaskUtil.removeJobsFromWorkflow(_accessor, _propertyStore, queue, jobs, true);
}

代码示例来源:origin: org.apache.helix/helix-core

.getAllNodes());
String workflowState =
  (wCtx != null) ? wCtx.getWorkflowState().name() : TaskState.NOT_STARTED.name();
LOG.info("Current state of workflow is " + workflowState);
LOG.info("Job states are: ");

代码示例来源:origin: apache/helix

@Test
public void testWorkflowAndJobTaskUserContentStore() throws InterruptedException {
 String jobName = TestHelper.getTestMethodName();
 Workflow.Builder workflowBuilder = new Workflow.Builder(jobName);
 List<TaskConfig> taskConfigs = Lists.newArrayListWithCapacity(1);
 Map<String, String> taskConfigMap = Maps.newHashMap();
 TaskConfig taskConfig1 = new TaskConfig("ContentStoreTask", taskConfigMap);
 taskConfigs.add(taskConfig1);
 Map<String, String> jobCommandMap = Maps.newHashMap();
 jobCommandMap.put("Timeout", "1000");
 JobConfig.Builder jobBuilder = new JobConfig.Builder().setCommand("DummyCommand")
   .addTaskConfigs(taskConfigs).setWorkflow(jobName)
   .setJobCommandConfigMap(jobCommandMap);
 workflowBuilder.addJob(jobName, jobBuilder);
 _driver.start(workflowBuilder.build());
 _driver.pollForWorkflowState(jobName, TaskState.COMPLETED);
 Assert
   .assertEquals(_driver.getWorkflowContext(jobName).getWorkflowState(), TaskState.COMPLETED);
}

代码示例来源:origin: apache/helix

@Test
public void testStopWorkflow() throws InterruptedException {
 String jobQueueName = TestHelper.getTestMethodName();
 JobConfig.Builder jobBuilder = JobConfig.Builder.fromMap(WorkflowGenerator.DEFAULT_JOB_CONFIG)
   .setMaxAttemptsPerTask(1).setWorkflow(jobQueueName)
   .setJobCommandConfigMap(ImmutableMap.of(MockTask.SUCCESS_COUNT_BEFORE_FAIL, "1"));
 JobQueue.Builder jobQueue = TaskTestUtil.buildJobQueue(jobQueueName);
 jobQueue.enqueueJob("job1_will_succeed", jobBuilder);
 jobQueue.enqueueJob("job2_will_fail", jobBuilder);
 _driver.start(jobQueue.build());
 // job1 should succeed and job2 should fail, wait until that happens
 _driver.pollForJobState(jobQueueName,
   TaskUtil.getNamespacedJobName(jobQueueName, "job2_will_fail"), TaskState.FAILED);
 Assert.assertTrue(
   _driver.getWorkflowContext(jobQueueName).getWorkflowState().equals(TaskState.IN_PROGRESS));
 // Now stop the workflow, and it should be stopped because all jobs have completed or failed.
 _driver.waitToStop(jobQueueName, 4000);
 _driver.pollForWorkflowState(jobQueueName, TaskState.STOPPED);
 Assert.assertTrue(
   _driver.getWorkflowContext(jobQueueName).getWorkflowState().equals(TaskState.STOPPED));
}

代码示例来源:origin: apache/helix

/**
 * Tests that stopping a workflow does result in its task ending up in STOPPED state.
 * @throws InterruptedException
 */
@Test
public void testStopTask() throws InterruptedException {
 stopTestSetup(1);
 String workflowName = TestHelper.getTestMethodName();
 Workflow.Builder workflowBuilder = new Workflow.Builder(workflowName);
 WorkflowConfig.Builder configBuilder = new WorkflowConfig.Builder(workflowName);
 configBuilder.setAllowOverlapJobAssignment(true);
 workflowBuilder.setWorkflowConfig(configBuilder.build());
 for (int i = 0; i < 1; i++) {
  List<TaskConfig> taskConfigs = new ArrayList<>();
  taskConfigs.add(new TaskConfig("StopTask", new HashMap<String, String>()));
  JobConfig.Builder jobConfigBulider = new JobConfig.Builder().setCommand("Dummy")
    .addTaskConfigs(taskConfigs).setJobCommandConfigMap(new HashMap<String, String>());
  workflowBuilder.addJob("JOB" + i, jobConfigBulider);
 }
 _driver.start(workflowBuilder.build());
 _driver.pollForWorkflowState(workflowName, TaskState.IN_PROGRESS);
 // Stop the workflow
 _driver.stop(workflowName);
 _driver.pollForWorkflowState(workflowName, TaskState.STOPPED);
 Assert.assertEquals(_driver.getWorkflowContext(_manager, workflowName).getWorkflowState(),
   TaskState.STOPPED);
}

代码示例来源:origin: apache/helix

String workflowName = workflowNames.get(i);
TaskState state = (i % 3 == 1) ? TaskState.FAILED : TaskState.COMPLETED;
Assert.assertEquals(_driver.getWorkflowContext(_manager, workflowName).getWorkflowState(),
  state);

代码示例来源:origin: apache/helix

Assert.assertEquals(_driver.getWorkflowContext(_manager, workflowNameToStop).getWorkflowState(),
Assert.assertEquals(_driver.getWorkflowContext(_manager, workflowToComplete).getWorkflowState(),
  TaskState.COMPLETED);

相关文章