From f3d7ceb51891ba22aa6de29f9d5bdea27f04d88e Mon Sep 17 00:00:00 2001 From: Jason Han Date: Tue, 5 Jan 2021 15:27:35 -0800 Subject: [PATCH 1/2] Fix project deletion --- .../main/java/org/openmbee/mms/elastic/ProjectElasticImpl.java | 2 ++ .../org/openmbee/mms/rdb/config/DatabaseDefinitionService.java | 1 + 2 files changed, 3 insertions(+) diff --git a/elastic/src/main/java/org/openmbee/mms/elastic/ProjectElasticImpl.java b/elastic/src/main/java/org/openmbee/mms/elastic/ProjectElasticImpl.java index fd45d3c74..402d2e1df 100644 --- a/elastic/src/main/java/org/openmbee/mms/elastic/ProjectElasticImpl.java +++ b/elastic/src/main/java/org/openmbee/mms/elastic/ProjectElasticImpl.java @@ -78,8 +78,10 @@ public void delete(String projectId) { try { DeleteIndexRequest request = new DeleteIndexRequest(projectId.toLowerCase() + "_node"); DeleteIndexRequest request2 = new DeleteIndexRequest(projectId.toLowerCase() + "_commit"); + DeleteIndexRequest request3 = new DeleteIndexRequest(projectId.toLowerCase() + "_metadata"); client.indices().delete(request, RequestOptions.DEFAULT).isAcknowledged(); client.indices().delete(request2, RequestOptions.DEFAULT).isAcknowledged(); + client.indices().delete(request3, RequestOptions.DEFAULT).isAcknowledged(); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java b/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java index eaa318894..372b9a98d 100644 --- a/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java +++ b/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java @@ -82,6 +82,7 @@ public boolean createProjectDatabase(Project project) throws SQLException { public void deleteProjectDatabase(Project project) throws SQLException { try (Connection connection = crudDataSources.getDataSource(ContextObject.DEFAULT_PROJECT).getConnection(); Statement statement = connection.createStatement()) { + statement.execute(connection.nativeSQL("SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '" + databaseProjectString(project) + "';")); statement.executeUpdate(connection.nativeSQL("DROP DATABASE " + databaseProjectString(project))); } } From c6c4670f39bb4c3ac208745f8aae4586df9cc70d Mon Sep 17 00:00:00 2001 From: "Lam, Doris T (319E)" Date: Wed, 6 Jan 2021 10:24:26 -0800 Subject: [PATCH 2/2] add test, add check for postgres --- example/crud.postman_collection.json | 43 ++++++++++++++++++- .../rdb/config/DatabaseDefinitionService.java | 6 ++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/example/crud.postman_collection.json b/example/crud.postman_collection.json index 5782b5322..826e78ede 100644 --- a/example/crud.postman_collection.json +++ b/example/crud.postman_collection.json @@ -2467,13 +2467,54 @@ }, "response": [] }, + { + "name": "recreate project cc under org a", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"response has project cc\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.projects[0].id).to.eql('cc');", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"projects\": [\n\t\t{\n\t\t\t\"id\": \"cc\", \n\t\t\t\"name\": \"cc\",\n\t\t\t\"orgId\": \"a\",\n\t\t\t\"schema\": \"default\"\n\t\t}\n\t]\n}" + }, + "url": { + "raw": "{{host}}/projects", + "host": [ + "{{host}}" + ], + "path": [ + "projects" + ] + } + }, + "response": [] + }, { "name": "create webhook on project aa", "event": [ { "listen": "test", "script": { - "id": "2ba7a873-1bdf-4e86-8329-7069064232a9", + "id": "2ba7a873-1bdf-4e86-8329-7069064232a9", "exec": [ "pm.test(\"webhook created with returned id\", function () {", " var jsonData = pm.response.json();", diff --git a/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java b/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java index 372b9a98d..5d1470af1 100644 --- a/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java +++ b/rdb/src/main/java/org/openmbee/mms/rdb/config/DatabaseDefinitionService.java @@ -82,7 +82,11 @@ public boolean createProjectDatabase(Project project) throws SQLException { public void deleteProjectDatabase(Project project) throws SQLException { try (Connection connection = crudDataSources.getDataSource(ContextObject.DEFAULT_PROJECT).getConnection(); Statement statement = connection.createStatement()) { - statement.execute(connection.nativeSQL("SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '" + databaseProjectString(project) + "';")); + if ("org.postgresql.Driver".equals(env.getProperty("spring.datasource.driver-class-name"))) { + statement.execute(connection.nativeSQL( + "SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '" + + databaseProjectString(project) + "';")); + } statement.executeUpdate(connection.nativeSQL("DROP DATABASE " + databaseProjectString(project))); } }