This is an automated email from the ASF dual-hosted git repository.
cdmikechen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git
The following commit(s) were added to refs/heads/master by this push:
new 09a7e771 SUBMARINE-1379. Fix a bug where tasks from missing k8s
resources could not be deleted on the UI
09a7e771 is described below
commit 09a7e77158e60ea2980c4bea09292eafd74e35e0
Author: cdmikechen <[email protected]>
AuthorDate: Fri Jun 23 15:10:47 2023 +0800
SUBMARINE-1379. Fix a bug where tasks from missing k8s resources could not
be deleted on the UI
### What is this PR for?
If the backend CR is manually deleted, the submarine-server is not
currently checking if the specified resource still exists, resulting in a
situation where the experiment cannot be deleted in UI.
### What type of PR is it?
Bug Fix
### Todos
* [x] - Remove `throwsApiException` in Notebook, Experiment and Serve.
* [x] - Fixed a bug where deleting a record on the UI, the entire page data
clear
### What is the Jira issue?
https://issues.apache.org/jira/browse/SUBMARINE-1379
### How should this be tested?
CI tests can cover code, but they can only represent processes that handle
normal conditions.
I removed the method of throwing an 404 exception error
(`.throwsApiException()`) when the resource does not exist, which results in
the return of the status object.
In this way, we can return the result normally, even without this resource
### Screenshots (if appropriate)
NA
### Questions:
* Do the license files need updating? No
* Are there breaking changes for older versions? No
* Does this need new documentation? No
Author: cdmikechen <[email protected]>
Signed-off-by: cdmikechen <[email protected]>
Closes #1073 from cdmikechen/SUBMARINE-1379 and squashes the following
commits:
03a70110 [cdmikechen] fix list delete error
ec5c8b58 [cdmikechen] fix serve delete
3f829b41 [cdmikechen] fix notebook delete
b58271e4 [cdmikechen] fix experiment delete
---
.../server/submitter/k8s/model/notebook/NotebookCR.java | 15 +++++++++------
.../server/submitter/k8s/model/pytorchjob/PyTorchJob.java | 6 +++---
.../k8s/model/seldon/SeldonDeploymentPytorchServing.java | 7 +++----
.../k8s/model/seldon/SeldonDeploymentTFServing.java | 7 +++----
.../submarine/server/submitter/k8s/model/tfjob/TFJob.java | 8 ++++----
.../server/submitter/k8s/model/xgboostjob/XGBoostJob.java | 6 +++---
.../experiment-home/experiment-home.component.ts | 2 +-
.../notebook/notebook-home/notebook-home.component.ts | 2 +-
8 files changed, 27 insertions(+), 26 deletions(-)
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java
index fcfbbde7..48b817f1 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/notebook/NotebookCR.java
@@ -294,12 +294,15 @@ public class NotebookCR implements KubernetesObject,
K8sResource<Notebook> {
// The exception that obtaining CRD resources is not necessarily because
the CRD is deleted,
// but maybe due to timeout or API error caused by network and other
reasons.
// Therefore, the status of the notebook should be set to a new enum
NOTFOUND.
- LOG.warn("Get error when submitter is finding notebook: {}",
getMetadata().getName());
- if (notebook == null) {
- notebook = new Notebook();
- }
- notebook.setReason(e.getMessage());
- notebook.setStatus(Notebook.Status.STATUS_NOT_FOUND.getValue());
+ if (e.getCode() == 404) {
+ LOG.warn(String.format("Get error when submitter is finding notebook:
%s",
+ getMetadata().getName()), e);
+ if (notebook == null) {
+ notebook = new Notebook();
+ }
+ notebook.setReason(e.getMessage());
+ notebook.setStatus(Notebook.Status.STATUS_NOT_FOUND.getValue());
+ } else throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
}
return resetName(notebook);
}
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java
index c279e542..2939e6fa 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/pytorchjob/PyTorchJob.java
@@ -189,10 +189,10 @@ public class PyTorchJob extends MLJob {
V1Status status = api.getPyTorchJobClient()
.delete(getMetadata().getNamespace(), getMetadata().getName(),
MLJobConverter.toDeleteOptionsFromMLJob(this))
- .throwsApiException().getStatus();
+ .getStatus();
return parseExperimentResponseStatus(status);
- } catch (ApiException e) {
- throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+ } catch (Exception e) {
+ throw new SubmarineRuntimeException(500, e.getMessage());
}
}
}
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java
index 328f1c23..0fa712ca 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentPytorchServing.java
@@ -85,12 +85,11 @@ public class SeldonDeploymentPytorchServing extends
SeldonPytorchServing impleme
}
api.getSeldonDeploymentClient()
.delete(getMetadata().getNamespace(), getMetadata().getName(),
- getDeleteOptions(getApiVersion()))
- .throwsApiException();
+ getDeleteOptions(getApiVersion()));
return this;
- } catch (ApiException e) {
+ } catch (Exception e) {
LOG.error(e.getMessage(), e);
- throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+ throw new SubmarineRuntimeException(500, e.getMessage());
}
}
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java
index fe4c01e0..1890f7b7 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/seldon/SeldonDeploymentTFServing.java
@@ -84,12 +84,11 @@ public class SeldonDeploymentTFServing extends
SeldonTFServing implements Seldon
}
api.getSeldonDeploymentClient()
.delete(getMetadata().getNamespace(), getMetadata().getName(),
- getDeleteOptions(getApiVersion()))
- .throwsApiException();
+ getDeleteOptions(getApiVersion()));
return this;
- } catch (ApiException e) {
+ } catch (Exception e) {
LOG.error(e.getMessage(), e);
- throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+ throw new SubmarineRuntimeException(500, e.getMessage());
}
}
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java
index 1eb96669..457629ee 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/tfjob/TFJob.java
@@ -183,7 +183,7 @@ public class TFJob extends MLJob {
new V1Patch(JsonUtils.toJson(this)), patchOptions)
.throwsApiException().getObject();
return parseExperimentResponseObject(tfJob, TFJob.class);
- } catch (ApiException e) {
+ } catch (ApiException e) {
throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
}
}
@@ -198,10 +198,10 @@ public class TFJob extends MLJob {
V1Status status = api.getTfJobClient()
.delete(getMetadata().getNamespace(), getMetadata().getName(),
MLJobConverter.toDeleteOptionsFromMLJob(this))
- .throwsApiException().getStatus();
+ .getStatus();
return parseExperimentResponseStatus(status);
- } catch (ApiException e) {
- throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+ } catch (Exception e) {
+ throw new SubmarineRuntimeException(500, e.getMessage());
}
}
diff --git
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java
index f46060ad..cd83c4ed 100644
---
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java
+++
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/xgboostjob/XGBoostJob.java
@@ -186,10 +186,10 @@ public class XGBoostJob extends MLJob {
V1Status status = api.getXGBoostJobClient()
.delete(getMetadata().getNamespace(), getMetadata().getName(),
MLJobConverter.toDeleteOptionsFromMLJob(this))
- .throwsApiException().getStatus();
+ .getStatus();
return parseExperimentResponseStatus(status);
- } catch (ApiException e) {
- throw new SubmarineRuntimeException(e.getCode(), e.getMessage());
+ } catch (Exception e) {
+ throw new SubmarineRuntimeException(500, e.getMessage());
}
}
}
diff --git
a/submarine-workbench/workbench-web/src/app/pages/workbench/experiment/experiment-home/experiment-home.component.ts
b/submarine-workbench/workbench-web/src/app/pages/workbench/experiment/experiment-home/experiment-home.component.ts
index 44e07557..34cab021 100644
---
a/submarine-workbench/workbench-web/src/app/pages/workbench/experiment/experiment-home/experiment-home.component.ts
+++
b/submarine-workbench/workbench-web/src/app/pages/workbench/experiment/experiment-home/experiment-home.component.ts
@@ -129,7 +129,7 @@ export class ExperimentHomeComponent implements OnInit {
}
// Delete redundant rows
if (currentListSize > newListSize) {
- this.experimentList = this.experimentList.splice(0, newListSize -
currentListSize);
+ this.experimentList = this.experimentList.slice(0, newListSize);
}
if (!isAutoReload) {
diff --git
a/submarine-workbench/workbench-web/src/app/pages/workbench/notebook/notebook-home/notebook-home.component.ts
b/submarine-workbench/workbench-web/src/app/pages/workbench/notebook/notebook-home/notebook-home.component.ts
index f361657f..66679145 100644
---
a/submarine-workbench/workbench-web/src/app/pages/workbench/notebook/notebook-home/notebook-home.component.ts
+++
b/submarine-workbench/workbench-web/src/app/pages/workbench/notebook/notebook-home/notebook-home.component.ts
@@ -98,7 +98,7 @@ export class NotebookHomeComponent implements OnInit,
OnDestroy {
}
// Delete redundant rows
if (currentListSize > newListSize) {
- this.notebookList = this.notebookList.splice(0, newListSize -
currentListSize);
+ this.notebookList = this.notebookList.slice(0, newListSize);
}
}
});
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]