diff --git a/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/DataHubImpl.java b/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/DataHubImpl.java index 7f30d72c32..660fde4adf 100644 --- a/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/DataHubImpl.java +++ b/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/DataHubImpl.java @@ -347,7 +347,7 @@ public List getCommandList() { } private void runInDatabase(String query, String databaseName) { - ServerEvaluationCall eval = hubConfig.newStagingClient().newServerEval(); + ServerEvaluationCall eval = hubConfig.newModulesDbClient().newServerEval(); String xqy = "xdmp:invoke-function(function() {" + query + @@ -506,7 +506,7 @@ private Map getServerPortsInUse() { } //DataHubUpgrader stuff - public static String MIN_UPGRADE_VERSION = "1.1.3"; + public static String MIN_UPGRADE_VERSION = "2.0.0"; @Override public boolean upgradeHub() throws CantUpgradeException { return upgradeHub(null); @@ -545,6 +545,8 @@ private Map getServerPortsInUse() { updatedFlows.addAll(flows); } + runInDatabase("cts:uris(\"\", (), cts:and-not-query(cts:collection-query(\"hub-core-module\"), cts:document-query((\"/com.marklogic.hub/config.sjs\", \"/com.marklogic.hub/config.xqy\")))) ! xdmp:document-delete(.)", hubConfig.getDbName(DatabaseKind.MODULES)); + if (isHubInstalled) { // install hub modules into MarkLogic this.install(); diff --git a/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/HubConfigImpl.java b/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/HubConfigImpl.java index ca06a9bfdf..a642a229c1 100644 --- a/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/HubConfigImpl.java +++ b/marklogic-data-hub/src/main/java/com/marklogic/hub/impl/HubConfigImpl.java @@ -1014,7 +1014,7 @@ public DatabaseClient newModulesDbClient() { // this lets debug builds work from an IDE if (version.equals("${project.version}")) { - version = "0.1.2"; + version = "3.0.0"; } return version; } diff --git a/marklogic-data-hub/src/main/java/com/marklogic/hub/scaffold/impl/ScaffoldingImpl.java b/marklogic-data-hub/src/main/java/com/marklogic/hub/scaffold/impl/ScaffoldingImpl.java index 72402a6f2d..3cb7369740 100644 --- a/marklogic-data-hub/src/main/java/com/marklogic/hub/scaffold/impl/ScaffoldingImpl.java +++ b/marklogic-data-hub/src/main/java/com/marklogic/hub/scaffold/impl/ScaffoldingImpl.java @@ -280,6 +280,7 @@ public boolean update2xFlow(String entityName, String flowName, FlowType flowTyp Path flowDir = getFlowDir(entityName, flowName, flowType); Path mainPath = flowDir.resolve("main.sjs"); + Path xqyMainPath = flowDir.resolve("main.xqy"); if (mainPath.toFile().exists()) { try { String mainFile = FileUtils.readFileToString(mainPath.toFile()); @@ -309,6 +310,22 @@ public boolean update2xFlow(String entityName, String flowName, FlowType flowTyp throw new RuntimeException(e); } } + + if (mainPath.toFile().exists() || xqyMainPath.toFile().exists()) { + if (xqyMainPath.toFile().exists()) { + mainPath = xqyMainPath; + } + try { + String mainFile = FileUtils.readFileToString(mainPath.toFile()); + mainFile = mainFile.replaceFirst("com\\.marklogic\\.hub", "MarkLogic/data-hub-framework"); + FileOutputStream fileOutputStream = new FileOutputStream(mainPath.toFile()); + IOUtils.write(mainFile, fileOutputStream); + fileOutputStream.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return updated; } diff --git a/ml-data-hub-plugin/src/test/groovy/com/marklogic/gradle/task/UpdateHubTaskTest.groovy b/ml-data-hub-plugin/src/test/groovy/com/marklogic/gradle/task/UpdateHubTaskTest.groovy index 8084cc8bfc..af9e9a1e9d 100644 --- a/ml-data-hub-plugin/src/test/groovy/com/marklogic/gradle/task/UpdateHubTaskTest.groovy +++ b/ml-data-hub-plugin/src/test/groovy/com/marklogic/gradle/task/UpdateHubTaskTest.groovy @@ -29,6 +29,7 @@ class UpdateHubTaskTest extends BaseTest { def setupSpec() { createGradleFiles() runTask('hubInit') + println(runTask('mlDeploy', '-i').getOutput()) } def "no updates needed"() { diff --git a/quick-start/src/main/java/com/marklogic/quickstart/web/CurrentProjectController.java b/quick-start/src/main/java/com/marklogic/quickstart/web/CurrentProjectController.java index 25aa6cf01d..1583632cdd 100644 --- a/quick-start/src/main/java/com/marklogic/quickstart/web/CurrentProjectController.java +++ b/quick-start/src/main/java/com/marklogic/quickstart/web/CurrentProjectController.java @@ -204,10 +204,14 @@ public ResponseEntity clearDatabase() { @RequestMapping(value = "/update-hub", method = RequestMethod.POST) public ResponseEntity updateHub() throws IOException, CantUpgradeException { - if (dataHubService.updateHub(envConfig().getMlSettings())) { - installUserModules(envConfig().getMlSettings(), true); - startProjectWatcher(); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); + try { + if (dataHubService.updateHub(envConfig().getMlSettings())) { + installUserModules(envConfig().getMlSettings(), true); + startProjectWatcher(); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + } catch (CantUpgradeException e) { + return new ResponseEntity<>(e, HttpStatus.BAD_REQUEST); } return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } diff --git a/quick-start/src/main/ui/app/login/login.component.html b/quick-start/src/main/ui/app/login/login.component.html index 2349c535ad..5b6b771645 100644 --- a/quick-start/src/main/ui/app/login/login.component.html +++ b/quick-start/src/main/ui/app/login/login.component.html @@ -243,6 +243,7 @@

Congratulations on updating to version
{{curre

Automatic Hub Update Failed!

Sorry. We failed to update you to version {{currentEnvironment.runningVersion}}. + {{hubUpdateError}}.

Go read the wiki page that describes the changes necessary and try them manually.

How to update a Hub Project diff --git a/quick-start/src/main/ui/app/login/login.component.ts b/quick-start/src/main/ui/app/login/login.component.ts index 493a8ac471..cc74cae7fc 100644 --- a/quick-start/src/main/ui/app/login/login.component.ts +++ b/quick-start/src/main/ui/app/login/login.component.ts @@ -26,6 +26,7 @@ export class LoginComponent implements OnInit { hubVersions: any; hubUpdating: boolean = false; hubUpdateFailed: boolean = false; + hubUpdateError: string = ''; currentTab: string = 'ProjectDir'; @@ -314,11 +315,13 @@ export class LoginComponent implements OnInit { this.hubUpdating = true; this.projectService.updateProject().subscribe(() => { this.hubUpdating = false; + this.hubUpdateError = ''; this.loginNext(); }, - () => { + error => { this.hubUpdating = false; this.hubUpdateFailed = true; + this.hubUpdateError = error.json().message; }); }