You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dg...@apache.org on 2023/03/17 12:04:59 UTC

[unomi] branch check-ES-indices-before-migration created (now 5a672747f)

This is an automated email from the ASF dual-hosted git repository.

dgriffon pushed a change to branch check-ES-indices-before-migration
in repository https://gitbox.apache.org/repos/asf/unomi.git


      at 5a672747f UNOMI-752 : ensure target indices and alias does not exist before performing migration

This branch includes the following new commits:

     new 5a672747f UNOMI-752 : ensure target indices and alias does not exist before performing migration

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[unomi] 01/01: UNOMI-752 : ensure target indices and alias does not exist before performing migration

Posted by dg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dgriffon pushed a commit to branch check-ES-indices-before-migration
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 5a672747f645278ce5f9b1b43d79dd9176307e75
Author: David Griffon <dg...@jahia.com>
AuthorDate: Fri Mar 17 13:04:48 2023 +0100

    UNOMI-752 : ensure target indices and alias does not exist before performing migration
---
 .../unomi/shell/migration/MigrationException.java  | 26 ++++++++++++++++++++++
 .../shell/migration/service/MigrationContext.java  | 13 +++++++++++
 .../migration/service/MigrationServiceImpl.java    |  4 ++++
 .../migrate-2.2.0-05-indicesReduction.groovy       | 15 ++++++++++++-
 4 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationException.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationException.java
new file mode 100644
index 000000000..2fdf7c2a7
--- /dev/null
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/MigrationException.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.unomi.shell.migration;
+
+/**
+ * Simple exception to handle errors in migration
+ */
+public class MigrationException extends RuntimeException {
+    public MigrationException(String message) {
+        super(message);
+    }
+}
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationContext.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationContext.java
index 21835c31e..7f64b594b 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationContext.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationContext.java
@@ -198,6 +198,19 @@ public class MigrationContext {
         }
     }
 
+    /**
+     * Same as above without stacktrace
+     * @param msg the message to print out with a newline
+     */
+    public void printException(String msg) {
+        if (session == null) {
+            logger.error(msg);
+        } else {
+            PrintStream writer = session.getConsole();
+            writer.println(msg);
+        }
+    }
+
     /**
      * Get config for property name, in case the property doesn't exist on file system config file
      * Best effort will be made to prompt question in karaf shell to get the needed information
diff --git a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationServiceImpl.java b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationServiceImpl.java
index 9722bb3fd..f0159d947 100644
--- a/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationServiceImpl.java
+++ b/tools/shell-commands/src/main/java/org/apache/unomi/shell/migration/service/MigrationServiceImpl.java
@@ -26,6 +26,7 @@ import org.apache.http.client.CredentialsProvider;
 import org.apache.http.impl.client.BasicCredentialsProvider;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.karaf.shell.api.console.Session;
+import org.apache.unomi.shell.migration.MigrationException;
 import org.apache.unomi.shell.migration.MigrationService;
 import org.apache.unomi.shell.migration.utils.HttpUtils;
 import org.osgi.framework.Bundle;
@@ -128,6 +129,9 @@ public class MigrationServiceImpl implements MigrationService {
                 context.printMessage("Starting execution of: " + migrateScript);
                 try {
                     migrateScript.getCompiledScript().run();
+                } catch (MigrationException e) {
+                    context.printException("Error executing: " + migrateScript);
+                    throw e;
                 } catch (Exception e) {
                     context.printException("Error executing: " + migrateScript, e);
                     throw e;
diff --git a/tools/shell-commands/src/main/resources/META-INF/cxs/migration/migrate-2.2.0-05-indicesReduction.groovy b/tools/shell-commands/src/main/resources/META-INF/cxs/migration/migrate-2.2.0-05-indicesReduction.groovy
index 631f0bced..f410bf00d 100644
--- a/tools/shell-commands/src/main/resources/META-INF/cxs/migration/migrate-2.2.0-05-indicesReduction.groovy
+++ b/tools/shell-commands/src/main/resources/META-INF/cxs/migration/migrate-2.2.0-05-indicesReduction.groovy
@@ -1,3 +1,4 @@
+import org.apache.unomi.shell.migration.MigrationException
 import org.apache.unomi.shell.migration.service.MigrationContext
 import org.apache.unomi.shell.migration.utils.HttpUtils
 import org.apache.unomi.shell.migration.utils.MigrationUtils
@@ -42,10 +43,22 @@ def indicesToReduce = [
         exportconfig: [reduceTo: "systemitems", renameId: true],
         rulestats: [reduceTo: "systemitems", renameId: true],
         groovyaction: [reduceTo: "systemitems", renameId: true],
-
         persona: [reduceTo: "profile", renameId: false]
 ]
 
+def mewIndicesAndAliases = ["systemitems":"Index", "session-000001":"Index", "event-000001":"Index", "session":"Alias", "event":"Alias"]
+
+// Check env is ready for migration
+context.performMigrationStep("2.2.0-check-env-status", () -> {
+    def currentIndex = new MapEntry();
+    if (mewIndicesAndAliases.any{index -> {
+        currentIndex = index
+        return MigrationUtils.indexExists(context.getHttpClient(), esAddress, "${indexPrefix}-${currentIndex.key}")
+    }}) {
+        throw new MigrationException("${currentIndex.value} ${indexPrefix}-${currentIndex.key} must be removed before perfoming migration")
+    }
+})
+
 context.performMigrationStep("2.2.0-create-systemItems-index", () -> {
     if (!MigrationUtils.indexExists(context.getHttpClient(), esAddress, "${indexPrefix}-systemitems")) {
         String mapping = MigrationUtils.extractMappingFromBundles(bundleContext, "systemItems.json")