[
https://issues.apache.org/jira/browse/CAMEL-8598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15380938#comment-15380938
]
Siddharth Sharma edited comment on CAMEL-8598 at 7/16/16 8:53 PM:
------------------------------------------------------------------
[~davsclaus] I encountered the same issue while using camel-swf (latest 2.17)
and even after the defaults by Camel client, it seems the scheduling options
are not used by AWS client as the StartWorkflowOptions parameters are injected
after a workflow is created
CamelSWFWorkflowClient#startWorkflowExecution
{code}
public String[] startWorkflowExecution(String workflowId, String runId,
String eventName, String version, Object arguments) {
DynamicWorkflowClientExternalImpl dynamicWorkflowClientExternal =
(DynamicWorkflowClientExternalImpl) getDynamicWorkflowClient(workflowId, runId);
WorkflowType workflowType = new WorkflowType();
workflowType.setName(eventName);
workflowType.setVersion(version);
dynamicWorkflowClientExternal.setWorkflowType(workflowType);
dynamicWorkflowClientExternal.startWorkflowExecution(toArray(arguments));
StartWorkflowOptions startWorkflowOptions = new StartWorkflowOptions();
startWorkflowOptions.setTaskStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getTaskStartToCloseTimeout()));
startWorkflowOptions.setExecutionStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getExecutionStartToCloseTimeout()));
dynamicWorkflowClientExternal.setSchedulingOptions(startWorkflowOptions);
String newWorkflowId =
dynamicWorkflowClientExternal.getWorkflowExecution().getWorkflowId();
String newRunId =
dynamicWorkflowClientExternal.getWorkflowExecution().getRunId();
return new String[] {newWorkflowId, newRunId};
}
{code}
Seems, it should be
{code}
public String[] startWorkflowExecution(String workflowId, String runId,
String eventName, String version, Object arguments) {
DynamicWorkflowClientExternalImpl dynamicWorkflowClientExternal =
(DynamicWorkflowClientExternalImpl) getDynamicWorkflowClient(workflowId, runId);
WorkflowType workflowType = new WorkflowType();
workflowType.setName(eventName);
workflowType.setVersion(version);
dynamicWorkflowClientExternal.setWorkflowType(workflowType);
StartWorkflowOptions startWorkflowOptions = new StartWorkflowOptions();
startWorkflowOptions.setTaskStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getTaskStartToCloseTimeout()));
startWorkflowOptions.setExecutionStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getExecutionStartToCloseTimeout()));
dynamicWorkflowClientExternal.setSchedulingOptions(startWorkflowOptions);
dynamicWorkflowClientExternal.startWorkflowExecution(toArray(arguments));
String newWorkflowId =
dynamicWorkflowClientExternal.getWorkflowExecution().getWorkflowId();
String newRunId =
dynamicWorkflowClientExternal.getWorkflowExecution().getRunId();
return new String[] {newWorkflowId, newRunId};
}
{code}
was (Author: sidshar):
[~davsclaus] I encountered the same issue while camel-swf and even after the
defaults by Camel, it seems the scheduling options are not used by AWS client
as the parameters are injected after a workflow is created
CamelSWFWorkflowClient#startWorkflowExecution
{code}
public String[] startWorkflowExecution(String workflowId, String runId,
String eventName, String version, Object arguments) {
DynamicWorkflowClientExternalImpl dynamicWorkflowClientExternal =
(DynamicWorkflowClientExternalImpl) getDynamicWorkflowClient(workflowId, runId);
WorkflowType workflowType = new WorkflowType();
workflowType.setName(eventName);
workflowType.setVersion(version);
dynamicWorkflowClientExternal.setWorkflowType(workflowType);
dynamicWorkflowClientExternal.startWorkflowExecution(toArray(arguments));
StartWorkflowOptions startWorkflowOptions = new StartWorkflowOptions();
startWorkflowOptions.setTaskStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getTaskStartToCloseTimeout()));
startWorkflowOptions.setExecutionStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getExecutionStartToCloseTimeout()));
dynamicWorkflowClientExternal.setSchedulingOptions(startWorkflowOptions);
String newWorkflowId =
dynamicWorkflowClientExternal.getWorkflowExecution().getWorkflowId();
String newRunId =
dynamicWorkflowClientExternal.getWorkflowExecution().getRunId();
return new String[] {newWorkflowId, newRunId};
}
{code}
Seems, it should be
{code}
public String[] startWorkflowExecution(String workflowId, String runId,
String eventName, String version, Object arguments) {
DynamicWorkflowClientExternalImpl dynamicWorkflowClientExternal =
(DynamicWorkflowClientExternalImpl) getDynamicWorkflowClient(workflowId, runId);
WorkflowType workflowType = new WorkflowType();
workflowType.setName(eventName);
workflowType.setVersion(version);
dynamicWorkflowClientExternal.setWorkflowType(workflowType);
StartWorkflowOptions startWorkflowOptions = new StartWorkflowOptions();
startWorkflowOptions.setTaskStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getTaskStartToCloseTimeout()));
startWorkflowOptions.setExecutionStartToCloseTimeoutSeconds(FlowHelpers.durationToSeconds(configuration.getExecutionStartToCloseTimeout()));
dynamicWorkflowClientExternal.setSchedulingOptions(startWorkflowOptions);
dynamicWorkflowClientExternal.startWorkflowExecution(toArray(arguments));
String newWorkflowId =
dynamicWorkflowClientExternal.getWorkflowExecution().getWorkflowId();
String newRunId =
dynamicWorkflowClientExternal.getWorkflowExecution().getRunId();
return new String[] {newWorkflowId, newRunId};
}
{code}
> Set default timeouts on workflows registered by the camel-aws / aws-swf
> component
> ---------------------------------------------------------------------------------
>
> Key: CAMEL-8598
> URL: https://issues.apache.org/jira/browse/CAMEL-8598
> Project: Camel
> Issue Type: Improvement
> Components: camel-aws
> Affects Versions: 2.14.2
> Reporter: Derek Abdine
> Assignee: Andrea Cosentino
> Priority: Minor
> Fix For: 2.15.3, 2.16.0
>
>
> The aws-swf component does not set a default "Execution Start To Close
> Timeout" or "Task Start To Close Timeout" when workflows are newly
> registered.
> This has the effect of scheduled workflows immediately moving to the TIMEOUT
> state (and being tracked as timed out in the AWS SWF UI).
> *workarounds*
> For newcomers to the aws-swf component this is particularly confusing. My
> work-around was to explicitly create the workflow type in the AWS SWF UI
> before camel had a chance to register it with proper timeouts (the UI
> requires you to set a timeout, which may mean there's also a bug in the AWS
> API). Another approach looks to be related to the
> workflowTypeRegistrationOptions uri option on the aws-swf endpoint, though I
> haven't validated that approach as a work-around for this issue, so explore
> at your own risk.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)