This is an automated email from the ASF dual-hosted git repository.
isapego pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 637fb4f1b1c IGNITE-26070 Improve migration tools configuration
converter error messages (#6340)
637fb4f1b1c is described below
commit 637fb4f1b1ca6bc033a1f9edb7314fee6d5556de
Author: Tiago Marques Godinho <[email protected]>
AuthorDate: Thu Jul 31 11:36:37 2025 +0100
IGNITE-26070 Improve migration tools configuration converter error messages
(#6340)
Co-authored-by: Igor Sapego <[email protected]>
---
.../commands/ConfigurationConverterCmd.java | 2 +
.../ErrorLoadingInputConfigurationHandlers.java | 68 ++++++++++++++++++++++
.../cli/persistence/commands/ListCachesCmd.java | 2 +
.../cli/persistence/commands/MigrateCacheCmd.java | 2 +
.../cli/sql/commands/SqlDdlGeneratorCmd.java | 2 +
5 files changed, 76 insertions(+)
diff --git
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
index d221a1c1b47..1f10ad83d65 100644
---
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
+++
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/configs/commands/ConfigurationConverterCmd.java
@@ -20,6 +20,7 @@ package org.apache.ignite.migrationtools.cli.configs.commands;
import java.nio.file.Path;
import java.util.concurrent.Callable;
import
org.apache.ignite.migrationtools.cli.configs.calls.ConfigurationConverterCall;
+import
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
import org.apache.ignite.migrationtools.cli.mixins.ClassloaderOption;
import org.apache.ignite3.internal.cli.commands.BaseCommand;
import org.apache.ignite3.internal.cli.core.call.CallExecutionPipeline;
@@ -52,6 +53,7 @@ public class ConfigurationConverterCmd extends BaseCommand
implements Callable<I
public Integer call() {
var call = new ConfigurationConverterCall();
return runPipeline(CallExecutionPipeline.builder(call)
+
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
.inputProvider(() -> new
ConfigurationConverterCall.Input(inputFile, locCfgFile, distCfgFile,
includeDefaults,
classloaderOption.clientClassLoader()))
);
diff --git
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
new file mode 100644
index 00000000000..91a918a105f
--- /dev/null
+++
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/exceptions/ErrorLoadingInputConfigurationHandlers.java
@@ -0,0 +1,68 @@
+/*
+ * 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.ignite.migrationtools.cli.exceptions;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionHandler;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionHandlers;
+import org.apache.ignite3.internal.cli.core.exception.ExceptionWriter;
+import org.apache.ignite3.internal.cli.core.style.component.ErrorUiComponent;
+import
org.apache.ignite3.internal.cli.core.style.component.ErrorUiComponent.ErrorComponentBuilder;
+import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.BeanInitializationException;
+
+/** ExceptionHandlers for Error loading input configurations. */
+public class ErrorLoadingInputConfigurationHandlers {
+ /**
+ * Create method.
+ *
+ * @return A new instance of these handlers.
+ */
+ public static ExceptionHandlers create() {
+ var handlers = new ExceptionHandlers();
+ handlers.addExceptionHandler(new
Base<>(BeanInitializationException.class));
+ handlers.addExceptionHandler(new
Base<>(BeanDefinitionStoreException.class));
+ return handlers;
+ }
+
+ private static class Base<T extends Throwable> implements
ExceptionHandler<T> {
+ private final Class<T> klass;
+
+ Base(Class<T> klass) {
+ this.klass = klass;
+ }
+
+ @Override
+ public int handle(ExceptionWriter writer, T e) {
+ Throwable rootCause = ExceptionUtils.getRootCause(e);
+
+ ErrorComponentBuilder errorUiBuilder = ErrorUiComponent.builder()
+ .header("Error loading input configurations")
+ .details(rootCause.getMessage());
+
+ writer.write(errorUiBuilder.build().render());
+
+ return 1;
+ }
+
+ @Override
+ public Class<T> applicableException() {
+ return klass;
+ }
+ }
+}
diff --git
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
index c529f46d811..db8c50a2c91 100644
---
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
+++
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/ListCachesCmd.java
@@ -18,6 +18,7 @@
package org.apache.ignite.migrationtools.cli.persistence.commands;
import java.util.concurrent.Callable;
+import
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
import org.apache.ignite.migrationtools.cli.persistence.calls.ListCachesCall;
import org.apache.ignite3.internal.cli.commands.BaseCommand;
import org.apache.ignite3.internal.cli.core.call.CallExecutionPipeline;
@@ -37,6 +38,7 @@ public class ListCachesCmd extends BaseCommand implements
Callable<Integer> {
public Integer call() {
var call = new ListCachesCall();
return runPipeline(CallExecutionPipeline.builder(call)
+
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
.inputProvider(() -> new ListCachesCall.Input(parent.params()))
.decorator(data -> () -> PlainTableRenderer.render(new
String[] {"id", "name"},
data.stream().map(o -> new String[]
{String.valueOf(o.cacheId()), o.cacheName()}).toArray(Object[][]::new)))
diff --git
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
index 9cd58060245..05bd96a013d 100644
---
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
+++
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/persistence/commands/MigrateCacheCmd.java
@@ -23,6 +23,7 @@ import java.util.concurrent.Callable;
import org.apache.commons.lang3.StringUtils;
import
org.apache.ignite.migrationtools.cli.exceptions.DataStreamerExceptionHandler;
import
org.apache.ignite.migrationtools.cli.exceptions.DefaultMigrateCacheExceptionHandler;
+import
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
import
org.apache.ignite.migrationtools.cli.exceptions.IgniteClientConnectionExceptionHandler;
import org.apache.ignite.migrationtools.cli.persistence.calls.MigrateCacheCall;
import
org.apache.ignite.migrationtools.cli.persistence.calls.RetriableMigrateCacheCall;
@@ -61,6 +62,7 @@ public class MigrateCacheCmd extends BaseCommand implements
Callable<Integer> {
.defaultExceptionHandler(new
DefaultExceptionHandlers(DefaultMigrateCacheExceptionHandler.INSTANCE))
.exceptionHandler(new
IgniteClientConnectionExceptionHandler())
.exceptionHandler(new DataStreamerExceptionHandler())
+
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
.inputProvider(() -> new
RetriableMigrateCacheCall.Input(
parent.params(),
migrateCacheParams,
diff --git
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
index 0908e927d30..135c60368c9 100644
---
a/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
+++
b/migration-tools/modules/migration-tools-cli/src/main/java/org/apache/ignite/migrationtools/cli/sql/commands/SqlDdlGeneratorCmd.java
@@ -19,6 +19,7 @@ package org.apache.ignite.migrationtools.cli.sql.commands;
import java.nio.file.Path;
import java.util.concurrent.Callable;
+import
org.apache.ignite.migrationtools.cli.exceptions.ErrorLoadingInputConfigurationHandlers;
import org.apache.ignite.migrationtools.cli.mixins.ClassloaderOption;
import org.apache.ignite.migrationtools.cli.sql.calls.SqlDdlGeneratorCall;
import org.apache.ignite3.internal.cli.commands.BaseCommand;
@@ -56,6 +57,7 @@ public class SqlDdlGeneratorCmd extends BaseCommand
implements Callable<Integer>
public Integer call() {
var call = new SqlDdlGeneratorCall();
return runPipeline(CallExecutionPipeline.builder(call)
+
.exceptionHandlers(ErrorLoadingInputConfigurationHandlers.create())
.inputProvider(() -> new SqlDdlGeneratorCall.Input(
inputFile,
targetFile,