- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文整理了Java中org.apache.helix.task.WorkflowContext
类的一些代码示例,展示了WorkflowContext
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WorkflowContext
类的具体详情如下:
包路径:org.apache.helix.task.WorkflowContext
类名称:WorkflowContext
[英]Typed interface to the workflow context information stored by TaskRebalancer in the Helix property store
[中]TaskRebalance在Helix属性存储中存储的工作流上下文信息的类型化接口
代码示例来源:origin: apache/incubator-gobblin
WorkflowContext workflowContext = TaskDriver.getWorkflowContext(helixManager, workFlowName);
if (workflowContext != null) {
TaskState jobState = workflowContext.getJobState(TaskUtil.getNamespacedJobName(workFlowName, jobName));
switch (jobState) {
case STOPPED:
代码示例来源: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/incubator-pinot
/**
* Get all tasks for the given task type.
*
* @param taskType Task type
* @return Set of task names
*/
@Nonnull
public synchronized Set<String> getTasks(@Nonnull String taskType) {
Set<String> helixJobs = _taskDriver.getWorkflowContext(getHelixJobQueueName(taskType)).getJobStates().keySet();
Set<String> tasks = new HashSet<>(helixJobs.size());
for (String helixJobName : helixJobs) {
tasks.add(getPinotTaskName(helixJobName));
}
return tasks;
}
代码示例来源:origin: org.apache.helix/helix-core
boolean incomplete = false;
TaskState workflowState = ctx.getWorkflowState();
if (TaskState.TIMED_OUT.equals(workflowState)) {
TaskState jobState = ctx.getJobState(job);
if (jobState == TaskState.FAILED || jobState == TaskState.TIMED_OUT) {
failedJobs++;
if (!cfg.isJobQueue() && failedJobs > cfg.getFailureThreshold()) {
ctx.setWorkflowState(TaskState.FAILED);
LOG.info("Workflow {} reached the failure threshold, so setting its state to FAILED.", cfg.getWorkflowId());
for (String jobToFail : cfg.getJobDag().getAllNodes()) {
if (ctx.getJobState(jobToFail) == TaskState.IN_PROGRESS) {
ctx.setJobState(jobToFail, TaskState.ABORTED);
ctx.setWorkflowState(TaskState.COMPLETED);
return true;
代码示例来源:origin: apache/helix
if (!workflowCfg.isJobQueue() && !finalStates.contains(workflowCtx.getWorkflowState())) {
scheduleRebalanceForTimeout(workflow, workflowCtx.getStartTime(), workflowCfg.getTimeout());
if (!TaskState.TIMED_OUT.equals(workflowCtx.getWorkflowState()) && isTimeout(workflowCtx.getStartTime(), workflowCfg.getTimeout())) {
workflowCtx.setWorkflowState(TaskState.TIMED_OUT);
_taskDataCache.updateWorkflowContext(workflow, workflowCtx);
if (!finalStates.contains(workflowCtx.getWorkflowState()) && TargetState.STOP.equals(targetState)) {
LOG.info("Workflow " + workflow + "is marked as stopped.");
if (isWorkflowStopped(workflowCtx, workflowCfg)) {
workflowCtx.setWorkflowState(TaskState.STOPPED);
_taskDataCache.updateWorkflowContext(workflow, workflowCtx);
if (workflowCtx.getFinishTime() == WorkflowContext.UNFINISHED && isWorkflowFinished(workflowCtx,
workflowCfg, _taskDataCache.getJobConfigMap(), _taskDataCache)) {
workflowCtx.setFinishTime(currentTime);
updateWorkflowMonitor(workflowCtx, workflowCfg);
_taskDataCache.updateWorkflowContext(workflow, workflowCtx);
if (workflowCtx.getFinishTime() != WorkflowContext.UNFINISHED) {
LOG.info("Workflow " + workflow + " is finished.");
long expiryTime = workflowCfg.getExpiry();
if (workflowCtx.getFinishTime() + expiryTime <= currentTime) {
LOG.info("Workflow " + workflow + " passed expiry time, cleaning up the workflow context.");
cleanupWorkflow(workflow);
} else {
代码示例来源:origin: apache/helix
public static WorkflowContext buildWorkflowContext(String workflowResource,
TaskState workflowState, Long startTime, TaskState... jobStates) {
WorkflowContext workflowContext =
new WorkflowContext(new ZNRecord(TaskUtil.WORKFLOW_CONTEXT_KW));
workflowContext.setName(workflowResource);
workflowContext.setStartTime(startTime == null ? System.currentTimeMillis() : startTime);
int jobId = 0;
for (TaskState jobstate : jobStates) {
workflowContext
.setJobState(TaskUtil.getNamespacedJobName(workflowResource, JOB_KW) + jobId++, jobstate);
}
workflowContext.setWorkflowState(workflowState);
return workflowContext;
}
代码示例来源:origin: org.apache.helix/helix-core
if (!workflowCfg.isJobQueue() && !finalStates.contains(workflowCtx.getWorkflowState())) {
scheduleRebalanceForTimeout(workflow, workflowCtx.getStartTime(), workflowCfg.getTimeout());
if (!TaskState.TIMED_OUT.equals(workflowCtx.getWorkflowState())
&& isTimeout(workflowCtx.getStartTime(), workflowCfg.getTimeout())) {
workflowCtx.setWorkflowState(TaskState.TIMED_OUT);
clusterData.updateWorkflowContext(workflow, workflowCtx, _manager.getHelixDataAccessor());
if (!finalStates.contains(workflowCtx.getWorkflowState())
&& TargetState.STOP.equals(targetState)) {
LOG.info("Workflow " + workflow + "is marked as stopped.");
if (isWorkflowStopped(workflowCtx, workflowCfg)) {
workflowCtx.setWorkflowState(TaskState.STOPPED);
clusterData.updateWorkflowContext(workflow, workflowCtx, _manager.getHelixDataAccessor());
if (workflowCtx.getFinishTime() == WorkflowContext.UNFINISHED && isWorkflowFinished(workflowCtx,
workflowCfg, clusterData.getJobConfigMap(), clusterData)) {
workflowCtx.setFinishTime(currentTime);
updateWorkflowMonitor(workflowCtx, workflowCfg);
clusterData.updateWorkflowContext(workflow, workflowCtx, _manager.getHelixDataAccessor());
if (workflowCtx.getFinishTime() != WorkflowContext.UNFINISHED) {
LOG.info("Workflow " + workflow + " is finished.");
long expiryTime = workflowCfg.getExpiry();
if (workflowCtx.getFinishTime() + expiryTime <= currentTime) {
LOG.info("Workflow " + workflow + " passed expiry time, cleaning up the workflow context.");
cleanupWorkflow(workflow, workflowCfg);
代码示例来源:origin: org.apache.helix/helix-core
long timeToSchedule = Long.MAX_VALUE;
for (String job : workflowCfg.getJobDag().getAllNodes()) {
TaskState jobState = workflowCtx.getJobState(job);
if (jobState != null && !jobState.equals(TaskState.NOT_STARTED)) {
if (LOG.isDebugEnabled()) {
long calculatedStartTime = workflowCtx.getJobStartTime(job);
if (calculatedStartTime < 0) {
workflowCtx.setJobStartTime(job, calculatedStartTime);
} else {
scheduleSingleJob(job, jobConfig);
workflowCtx.setJobState(job, TaskState.NOT_STARTED);
scheduledJobs++;
代码示例来源: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
Assert.assertNull(context.getJobState(notStartedJobName));
Assert.assertTrue(context.getFinishTime() - context.getStartTime() >= timeout);
代码示例来源:origin: apache/helix
Thread.sleep(timeToSleep);
ctx = getWorkflowContext(workflowName);
} while ((ctx == null || ctx.getLastScheduledSingleWorkflow() == null));
workflowName = ctx.getLastScheduledSingleWorkflow();
Thread.sleep(timeToSleep);
ctx = getWorkflowContext(workflowName);
} while ((ctx == null || ctx.getJobState(jobName) == null || !allowedStates
.contains(ctx.getJobState(jobName))) && System.currentTimeMillis() < st + timeout);
if (ctx == null || !allowedStates.contains(ctx.getJobState(jobName))) {
throw new HelixException(
String.format("Workflow \"%s\" context is null or job \"%s\" is not in states: %s",
return ctx.getJobState(jobName);
代码示例来源:origin: apache/helix
@Override
public ZNRecord update(ZNRecord currentData) {
if (currentData != null) {
WorkflowContext workflowContext = new WorkflowContext(currentData);
workflowContext.removeJobStates(jobs);
workflowContext.removeJobStartTime(jobs);
currentData = workflowContext.getRecord();
}
return currentData;
}
};
代码示例来源: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: org.apache.helix/helix-core
workflowCtx.setJobState(jobResource, TaskState.STOPPED);
workflowCtx.setWorkflowState(TaskState.STOPPED);
workflowCtx.setJobState(jobResource, TaskState.IN_PROGRESS);
workflowCtx.setWorkflowState(TaskState.IN_PROGRESS);
workflowCtx.setJobState(jobResource, TaskState.FAILED);
if (workflowConfig.isTerminable()) {
workflowCtx.setWorkflowState(TaskState.FAILED);
workflowCtx.setFinishTime(finishTime);
workflowCtx.setJobState(jobResource, TaskState.COMPLETED);
jobCtx.setFinishTime(currentTime);
if (isWorkflowComplete(workflowCtx, workflowConfig)) {
workflowCtx.setWorkflowState(TaskState.COMPLETED);
workflowCtx.setFinishTime(currentTime);
代码示例来源:origin: com.linkedin.gobblin/gobblin-cluster
private void markJobComplete(String jobName, JobContext jobContext,
WorkflowConfig workflowConfig, WorkflowContext workflowContext) {
long currentTime = System.currentTimeMillis();
workflowContext.setJobState(jobName, TaskState.COMPLETED);
jobContext.setFinishTime(currentTime);
if (isWorkflowFinished(workflowContext, workflowConfig)) {
workflowContext.setFinishTime(currentTime);
}
}
代码示例来源:origin: apache/helix
/**
* Update context of the Workflow
*/
public void updateWorkflowContext(String resourceName, WorkflowContext workflowContext) {
updateContext(resourceName, workflowContext.getRecord());
}
代码示例来源:origin: org.apache.helix/helix-core
/**
* Helper function to change target state for a given workflow
*/
private void setWorkflowTargetState(String workflow, TargetState state) {
setSingleWorkflowTargetState(workflow, state);
// For recurring schedules, last scheduled incomplete workflow must also be handled
WorkflowContext wCtx = TaskUtil.getWorkflowContext(_propertyStore, workflow);
if (wCtx != null) {
String lastScheduledWorkflow = wCtx.getLastScheduledSingleWorkflow();
if (lastScheduledWorkflow != null) {
setSingleWorkflowTargetState(lastScheduledWorkflow, state);
}
}
}
代码示例来源:origin: apache/helix
@Test public void testTaskRetryWithoutDelay() throws Exception {
String jobResource = TestHelper.getTestMethodName();
JobConfig.Builder jobBuilder = JobConfig.Builder.fromMap(WorkflowGenerator.DEFAULT_JOB_CONFIG);
jobBuilder.setJobCommandConfigMap(WorkflowGenerator.DEFAULT_COMMAND_CONFIG)
.setMaxAttemptsPerTask(2).setCommand(MockTask.TASK_COMMAND)
.setFailureThreshold(Integer.MAX_VALUE)
.setJobCommandConfigMap(ImmutableMap.of(MockTask.FAILURE_COUNT_BEFORE_SUCCESS, "1"));
Workflow flow =
WorkflowGenerator.generateSingleJobWorkflowBuilder(jobResource, jobBuilder).build();
_driver.start(flow);
// Wait until the job completes.
_driver.pollForWorkflowState(jobResource, TaskState.COMPLETED);
long startTime = _driver.getWorkflowContext(jobResource).getStartTime();
long finishedTime = _driver.getWorkflowContext(jobResource).getFinishTime();
// It should finished at less than 2 sec
Assert.assertTrue(finishedTime - startTime <= 2000L);
}
}
代码示例来源:origin: apache/helix
public WorkflowContext getOrInitializeWorkflowContext(
String workflowName, TaskDataCache cache) {
WorkflowContext workflowCtx = cache.getWorkflowContext(workflowName);
if (workflowCtx == null) {
workflowCtx = new WorkflowContext(new ZNRecord(TaskUtil.WORKFLOW_CONTEXT_KW));
workflowCtx.setStartTime(System.currentTimeMillis());
workflowCtx.setName(workflowName);
LOG.debug("Workflow context is created for " + workflowName);
}
return workflowCtx;
}
代码示例来源:origin: apache/helix
/**
* This test method tests whether PropertyKey.Builder successfully creates a path for
* WorkflowContext instances.
* TODO: KeyBuilder must handle the case for future versions of Task Framework with a different
* path structure
*/
@Test
public void testGetWorkflowContext() {
// Manually create a WorkflowContext instance
ZNRecord znRecord = new ZNRecord(WORKFLOW_NAME);
WorkflowContext workflowContext = new WorkflowContext(znRecord);
_manager.getHelixPropertyStore().set(
Joiner.on("/").join(TaskConstants.REBALANCER_CONTEXT_ROOT, WORKFLOW_NAME, CONTEXT_NODE),
workflowContext.getRecord(), AccessOption.PERSISTENT);
// Test retrieving this WorkflowContext using PropertyKey.Builder.getPath()
String path = KEY_BUILDER.workflowContext(WORKFLOW_NAME).getPath();
WorkflowContext workflowCtx =
new WorkflowContext(_baseAccessor.get(path, null, AccessOption.PERSISTENT));
Assert.assertEquals(workflowContext, workflowCtx);
}
这个问题在这里已经有了答案: Why use async and return await, when you can return Task directly? (8 个答案) 关闭 6 年前。
这个问题在这里已经有了答案: Are the days of passing const std::string & as a parameter over? (13 个答案) 关闭 8 年前。 我
我有一组标记为执行的通用任务。当任务完成时(使用 Task.WaitAny ),我将其添加到 ObservableCollection 中. 但是,问题出在 Task.WaitAny(...)行,上面
经过几个小时的努力,我在我的应用程序中发现了一个错误。我认为下面的 2 个函数具有相同的行为,但事实证明它们没有。 谁能告诉我引擎盖下到底发生了什么,以及为什么它们的行为方式不同? public as
这也与 Python 的导入机制有关,特别是与在函数内使用 import 有关。使用 Python 2.7.9 和 Fabric 1.10.0,创建以下三个文件: fabfile.py: from a
我有一个 Web API Controller (ASP.NET Core 5)。我的一些 API 是异步的,而其中一些不是。我接下来的问题是:使用 public **Task** WebApiMet
我们有类似下面的内容 List uncheckItems = new List(); for (int i = 0; i new Task(async () => await Process
我的代码没问题,但我想知道哪种风格更好,你会怎么看,我正在玩异步方法。 让我建立上下文: Parallel.ForEach(xmlAnimalList, async xml => {
这两种使用 await 的形式在功能上有什么区别吗? string x = await Task.Factory.StartNew(() => GetAnimal("feline")); Task m
我刚刚看到 3 个关于 TPL 使用的例程,它们做同样的工作;这是代码: public static void Main() { Thread.CurrentThread.Name = "Ma
考虑以下代码: public void CacheData() { Task.Run((Action)CacheExternalData); Task.Run(() => CacheE
Task> GetTaskDict() { return Task.FromResult(new Dictionary () ); } 此代码无法编译,因为我们无法在 Task> 到 Tas
我正在使用 ASP.NET 5 RC1 _MyPartial @model MyViewModel @using (Html.BeginForm())
当我尝试在 VS Code 中构建 C 任务时,它显示以下消息: 输出仅显示:The task provider for "C/C++" tasks unexpectedly provided a t
一些背景: 基本上归结为我希望能够在当前线程中“执行”任务。为什么? -我有一个任务创建程序例程,有一次我希望任务在后台任务中立即执行,而其他时候我希望使用 IOmniThreadPool 安排任务。
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我试图将run-sequence添加到我的gulp工作流程中,但是每次尝试执行使用run-sequence的任务时,都会出现此错误: 任务未配置为gulp上的任务。 根据运行序列的来源,这是由以下te
此代码在VS2015中给出了编译时错误 Error CS0266 Cannot implicitly convert type 'System.Threading.Tasks.Task' to 'Sy
我正在尝试通过我的代码通过Google登出: suspend fun signOut(context: Context): Boolean = with(Dispatchers.IO) { t
谁能解释一下这两种说法的区别: Task bTask = backup.BackupCurrentDatabaseAsync() .ContinueWith(_ => CompressArch
我是一名优秀的程序员,十分优秀!