-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add synchronous execution option to workflow provisioning #990
Add synchronous execution option to workflow provisioning #990
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally looks good.
- You need to handle -1 time value; my recommendation is you use that for the default "async" rather than null
- You need to do stream version checks for the new (optional) workflow state in the response, and the new timeout parameter in the workflow request (unless you want to just keep it in the params map).
src/main/java/org/opensearch/flowframework/rest/RestCreateWorkflowAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
src/test/java/org/opensearch/flowframework/rest/RestCreateWorkflowActionTests.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com> # Conflicts: # src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com> # Conflicts: # src/test/java/org/opensearch/flowframework/workflow/DeleteConnectorStepTests.java
Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
d6c0c53
to
18a1dbb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with a few suggestions.
src/main/java/org/opensearch/flowframework/rest/RestCreateWorkflowAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Show resolved
Hide resolved
…, update error message Signed-off-by: Junwei Dai <junweid@amazon.com>
Signed-off-by: Junwei Dai <junweid@amazon.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good to me, great work implementing this feature @junweid62 . A few comments
src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Junwei Dai <junweid@amazon.com>
The backport to
To backport manually, run these commands in your terminal: # Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/flow-framework/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/flow-framework/backport-2.x
# Create a new branch
git switch --create backport/backport-990-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 33579a35a9d7a72cc0a2d44561b98bd64a79dd04
# Push it to GitHub
git push --set-upstream origin backport/backport-990-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/flow-framework/backport-2.x Then, create a pull request where the |
@junweid62 can you please manually backport this? |
…-project#990) * Add synchronous execution option to workflow provisioning Signed-off-by: Junwei Dai <junweid@amazon.com> * code refactor Signed-off-by: Junwei Dai <junweid@amazon.com> * add change log Signed-off-by: Junwei Dai <junweid@amazon.com> * refactor code based on comment Signed-off-by: Junwei Dai <junweid@amazon.com> * fix spotless check Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to non-negative Signed-off-by: Junwei Dai <junweid@amazon.com> * Add synchronous execution to reprovision Signed-off-by: Junwei Dai <junweid@amazon.com> * remove unsued common value Signed-off-by: Junwei Dai <junweid@amazon.com> * add reprovision sync execution Signed-off-by: Junwei Dai <junweid@amazon.com> * fix test for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <junweid@amazon.com> * fix test name for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <junweid@amazon.com> * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message Signed-off-by: Junwei Dai <junweid@amazon.com> * fix spotless check Signed-off-by: Junwei Dai <junweid@amazon.com> * addressed some comments Signed-off-by: Junwei Dai <junweid@amazon.com> --------- Signed-off-by: Junwei Dai <junweid@amazon.com> Co-authored-by: Junwei Dai <junweid@amazon.com> (cherry picked from commit 33579a3)
…-project#990) * Add synchronous execution option to workflow provisioning Signed-off-by: Junwei Dai <junweid@amazon.com> * code refactor Signed-off-by: Junwei Dai <junweid@amazon.com> * add change log Signed-off-by: Junwei Dai <junweid@amazon.com> * refactor code based on comment Signed-off-by: Junwei Dai <junweid@amazon.com> * fix spotless check Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <junweid@amazon.com> * Limit workflow timeout to non-negative Signed-off-by: Junwei Dai <junweid@amazon.com> * Add synchronous execution to reprovision Signed-off-by: Junwei Dai <junweid@amazon.com> * remove unsued common value Signed-off-by: Junwei Dai <junweid@amazon.com> * add reprovision sync execution Signed-off-by: Junwei Dai <junweid@amazon.com> * fix test for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <junweid@amazon.com> * fix test name for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <junweid@amazon.com> * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message Signed-off-by: Junwei Dai <junweid@amazon.com> * fix spotless check Signed-off-by: Junwei Dai <junweid@amazon.com> * addressed some comments Signed-off-by: Junwei Dai <junweid@amazon.com> --------- Signed-off-by: Junwei Dai <junweid@amazon.com> Co-authored-by: Junwei Dai <junweid@amazon.com>
Jan 14 Revision
Added synchronous execution option to reprovision
Description
This PR introduces a new
wait_for_completion_timeout
feature to the Provision Workflow API in the OpenSearch Flow Framework. The feature allows users to control whether the API call waits for the entire workflow provisioning process to complete before returning a response.What’s Changed:
Success Response:
TimeOut Response:
Areas of Concern:
I have a few parts of the implementation that I believe can be further improved, particularly in ProvisionWorkflowTransportAction. Some of the logic feels a bit verbose and might not be the most efficient way to handle the timeout and synchronous execution. I’d appreciate the feedback from reviewers.
Related Issues
Resolves #967
Check List
--signoff
.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.