diff --git a/backend/app_sdk/app_base.py b/backend/app_sdk/app_base.py
index 753849be..a5467f76 100755
--- a/backend/app_sdk/app_base.py
+++ b/backend/app_sdk/app_base.py
@@ -522,6 +522,7 @@ class AppBase:
break
else:
self.logger.info(f"[ERROR] Bad resp {ret.status_code}: {ret.text}")
+ time.sleep(sleeptime)
except requests.exceptions.RequestException as e:
self.logger.info(f"[DEBUG] Request problem: {e}")
diff --git a/backend/go-app/go.mod b/backend/go-app/go.mod
index 6343a95d..c93d1f5f 100644
--- a/backend/go-app/go.mod
+++ b/backend/go-app/go.mod
@@ -18,7 +18,7 @@ require (
github.com/gorilla/mux v1.8.0
github.com/h2non/filetype v1.1.3
github.com/satori/go.uuid v1.2.0
- github.com/shuffle/shuffle-shared v0.5.11
+ github.com/shuffle/shuffle-shared v0.5.14
golang.org/x/crypto v0.14.0
google.golang.org/api v0.125.0
google.golang.org/grpc v1.55.0
diff --git a/backend/go-app/go.sum b/backend/go-app/go.sum
index f31286be..4812fee4 100644
--- a/backend/go-app/go.sum
+++ b/backend/go-app/go.sum
@@ -416,6 +416,10 @@ github.com/shuffle/shuffle-shared v0.4.97 h1:1c8LdNteMykKNEV97vwP63oSP2tV/Uso3O4
github.com/shuffle/shuffle-shared v0.4.97/go.mod h1:X613gbo0dT3fnYvXDRwjQZyLC+T49T2nSQOrCV5QMlI=
github.com/shuffle/shuffle-shared v0.4.98 h1:pgsLdWUpxZ/q+eHpAjOCH9icOsmuO5u2olmirOldy5A=
github.com/shuffle/shuffle-shared v0.4.98/go.mod h1:X613gbo0dT3fnYvXDRwjQZyLC+T49T2nSQOrCV5QMlI=
+github.com/shuffle/shuffle-shared v0.5.11 h1:Eqbs9o8E49QAL5/6aV6BfFtWSjLIvgET7AL3fa4OQTg=
+github.com/shuffle/shuffle-shared v0.5.11/go.mod h1:X613gbo0dT3fnYvXDRwjQZyLC+T49T2nSQOrCV5QMlI=
+github.com/shuffle/shuffle-shared v0.5.14 h1:d14u1e4k+qKgnf4Insq4x2S+0MMKlDqdyTTyVP3puRA=
+github.com/shuffle/shuffle-shared v0.5.14/go.mod h1:X613gbo0dT3fnYvXDRwjQZyLC+T49T2nSQOrCV5QMlI=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
diff --git a/frontend/src/components/RuntimeDebugger.jsx b/frontend/src/components/RuntimeDebugger.jsx
index d5df7d4e..1b4f431f 100644
--- a/frontend/src/components/RuntimeDebugger.jsx
+++ b/frontend/src/components/RuntimeDebugger.jsx
@@ -56,6 +56,7 @@ const RuntimeDebugger = (props) => {
const [startTime, setStartTime] = useState("")
const [workflow, setWorkflow] = useState({})
+ const [ignoreOrg, setIgnoreOrg] = useState(false)
const [searchLoading, setSearchLoading] = useState(false)
const [rowCursor, setCursor] = useState("")
const [rowsPerPage, setRowsPerPage] = useState(10)
@@ -85,6 +86,7 @@ const RuntimeDebugger = (props) => {
status: status.toUpperCase(),
start_time: startTime,
end_time: endTime,
+ ignore_org: ignoreOrg,
}
fetch(`${globalUrl}/api/v1/workflows/search`, {
@@ -185,6 +187,38 @@ const RuntimeDebugger = (props) => {
}
}, [])
+ const forceContinue = (execution) => {
+ console.log(`FORCE CONTINUE execution ${execution.execution_id} for workflow ${execution.workflow.id}`)
+
+ fetch(`${globalUrl}/api/v1/workflows/${execution.workflow.id}/executions/${execution.execution_id}/rerun`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ credentials: "include",
+ })
+ .then((response) => response.json())
+ .then((data) => {
+ if (data.success) {
+ if (data.reason !== undefined && data.reason !== null && data.reason !== "") {
+ toast("Successful response: " + data.reason)
+ } else {
+ toast("Successfully forced continue")
+ }
+ } else {
+ if (data.reason !== undefined && data.reason !== null && data.reason !== "") {
+ toast(`Failed to force continue: ${data.reason}`)
+ } else {
+ toast("Failed to force continue")
+ }
+ }
+ })
+ .catch((error) => {
+ console.error("Error:", error);
+ toast(`Failed to force continue: ${error}`)
+ })
+ }
+
const imageSize = 30
const timenowUnix = Math.floor(Date.now() / 1000)
const columns: GridColDef[] = [
@@ -371,7 +405,7 @@ const RuntimeDebugger = (props) => {
{
field: 'id',
headerName: 'Explore',
- width: 100,
+ width: 120,
renderCell: (params) => {
const parsedResult = params.row.result === null || params.row.result === undefined || params.row.result === "" ? "" : params.row.result
@@ -443,31 +477,47 @@ const RuntimeDebugger = (props) => {
}
return (
-
- {params.row.result !== null && params.row.result !== undefined && params.row.result !== "" ?
- params.row.result
- :
- null
- }
-
- }>
-
-
-