This is an automated email from the ASF dual-hosted git repository.
bamaer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 38917b4127 Fix the child pipeline load error so the log names the file
(#9027)
38917b4127 is described below
commit 38917b4127a4cfb240ffb2fc8e58b51191486bbe
Author: Lance <[email protected]>
AuthorDate: Tue Oct 20 14:04:04 2026 +0800
Fix the child pipeline load error so the log names the file (#9027)
Signed-off-by: leehaut <[email protected]>
---
.../hop/pipeline/TransformWithMappingMeta.java | 3 +-
.../pipeline/messages/messages_de_DE.properties | 2 +-
.../pipeline/messages/messages_en_US.properties | 2 +-
.../pipeline/messages/messages_es_ES.properties | 2 +-
.../pipeline/messages/messages_it_IT.properties | 2 +-
.../pipeline/messages/messages_pt_BR.properties | 2 +-
.../pipeline/messages/messages_pt_PT.properties | 2 +-
.../pipeline/messages/messages_zh_CN.properties | 2 +-
.../hop/pipeline/TransformWithMappingMetaTest.java | 37 ++++++++++++++++++++++
9 files changed, 46 insertions(+), 8 deletions(-)
diff --git
a/engine/src/main/java/org/apache/hop/pipeline/TransformWithMappingMeta.java
b/engine/src/main/java/org/apache/hop/pipeline/TransformWithMappingMeta.java
index 99a756a9b1..67d9a459da 100644
--- a/engine/src/main/java/org/apache/hop/pipeline/TransformWithMappingMeta.java
+++ b/engine/src/main/java/org/apache/hop/pipeline/TransformWithMappingMeta.java
@@ -143,7 +143,8 @@ public abstract class TransformWithMappingMeta<Main extends
ITransform, Data ext
}
} catch (Exception e) {
throw new HopException(
- BaseMessages.getString(PKG,
"TransformWithMappingMeta.Exception.UnableToLoadPipeline"),
+ BaseMessages.getString(
+ PKG, "TransformWithMappingMeta.Exception.UnableToLoadPipeline",
realFilename),
e);
}
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_de_DE.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_de_DE.properties
index 26707ebfaf..503bceebe1 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_de_DE.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_de_DE.properties
@@ -136,4 +136,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=Feldnam
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=Feldname
[{0}] enth\u00E4lt eine oder mehrere ''{1}'' ( ungeeignet f\u00FCr Datenbanken)
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=Feldname ist
leer.
SingleThreadedPipeline.Log.SummaryInfo=Ausf\u00FChrung abgeschlossen (I={0},
O={1}, R={2}, W={3}, U={4}, E={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=Konnte Pipeline [{0}]
nicht laden, Verzeichnis nicht gefunden
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=Konnte Pipeline [{0}]
nicht laden
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_en_US.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_en_US.properties
index 8e0732f8ce..ec8129fb0d 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_en_US.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_en_US.properties
@@ -144,4 +144,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=Field n
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=Field
name [{0}] contains one or more special characters ''{1}'' (database
unfriendly).
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=Field name
is empty.
SingleThreadedPipeline.Log.SummaryInfo=Finished processing (I\={0}, O\={1},
R\={2}, W\={3}, U\={4}, E\={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=Unable to load
pipeline [{0}] \: can''t find directory
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=Unable to load
pipeline [{0}]
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_es_ES.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_es_ES.properties
index cf5e8607b4..412f7fe4ca 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_es_ES.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_es_ES.properties
@@ -134,4 +134,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=Nombre
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=Nombre
de campo [{0}] contiene uno o mas ''{1}'' (caracter conflictivo).
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=Nombre de
campo esta vaci\u00ADo.
SingleThreadedPipeline.Log.SummaryInfo=Procesamiento finalizado (I\={0},
O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=No se puede cargar la
canalizaci\u00F3n [{0}] \: no se puede encontrar el directorio
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=No se puede cargar la
canalizaci\u00F3n [{0}]
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_it_IT.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_it_IT.properties
index ab4c128115..60371e4d0d 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_it_IT.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_it_IT.properties
@@ -133,4 +133,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=Il nome
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=Il
nome del campo [{0}] contiene uno o pi\u00F9 ''{1}'' (database ostile).
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=Il nome del
campo \u00E8 vuoto.
SingleThreadedPipeline.Log.SummaryInfo=Finished processing (I\={0}, O\={1},
R\={2}, W\={3}, U\={4}, E\={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=Impossibile caricare
la pipeline specificata
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=Impossibile caricare
la pipeline [{0}]
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_BR.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_BR.properties
index e128717657..f5d779575a 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_BR.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_BR.properties
@@ -138,7 +138,7 @@ PipelineMeta.PipelineType.SingleThreaded=Single Threaded
(Projetado para Hadoop)
PipelineMeta.SearchMetadata.DatabaseHostName=Nome do servidor do banco de dados
PipelineMeta.SearchMetadata.TransformDescription=Descrição da transformação
SingleThreadedPipeline.Log.SummaryInfo=Processamento finalizado (I\={0},
O\={1}, R\={2}, W\={3}, U\={4}, E\={5}
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=Não foi possível
carregar o conduto.
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=Não foi possível
carregar o conduto [{0}].
Pipeline.Log.copiesInfo=Cópias prévias, próximas cópias
PipelineMeta.Exception.TransformIsNotAMappingInput=A transformação com o nome
'''' não é uma transformação de Entrada de Mapeamento.
PipelineMeta.Exception.TransformIsNotAMappingOutput=A transformação com o nome
''}' não é uma transformação de Saída de Mapeamento.
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_PT.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_PT.properties
index 888f863dd3..fea48c75ce 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_PT.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_pt_PT.properties
@@ -125,4 +125,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=Nome do
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=Nome
do campo [{0}] contem um ou mais ''{1}'' (banco de dados n\u00C3\u00A3o
amig\u00C3\u00A1vel).
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=Nome do
campo est\u00C3\u00A1 vazio.
SingleThreadedPipeline.Log.SummaryInfo=Processamento finalizado (I\={0},
O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=N\u00E3o foi
poss\u00EDvel carregar a pipeline [{0}] \: diretorio n\u00E3o encontrado
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=N\u00E3o foi
poss\u00EDvel carregar a pipeline [{0}]
diff --git
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
index 780359f3be..38a1cf8a8a 100644
---
a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
+++
b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
@@ -135,4 +135,4 @@
PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=\u5B57\
PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=\u5B57\u6BB5\u540D\u542B\u6709\u4E00\u4E2A\u6216\u66F4\u591A\u4E0D\u53CB\u597D\u7684\u4EE3\u7801
{0} (\u6570\u636E\u5E93\u4E0D\u591F\u53CB\u597D\!)
PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=\u5B57\u6BB5\u540D\u79F0\u4E3A\u7A7A.
SingleThreadedPipeline.Log.SummaryInfo=\u5904\u7406\u5B8C\u6210 (I\={0},
O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
-TransformWithMappingMeta.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u52A0\u8F7D
Pipeline [{0}]\: \u627E\u4E0D\u5230\u76EE\u5F55
+TransformWithMappingMeta.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u52A0\u8F7D
Pipeline [{0}]
diff --git
a/engine/src/test/java/org/apache/hop/pipeline/TransformWithMappingMetaTest.java
b/engine/src/test/java/org/apache/hop/pipeline/TransformWithMappingMetaTest.java
index e1fedc061d..65620e16d0 100644
---
a/engine/src/test/java/org/apache/hop/pipeline/TransformWithMappingMetaTest.java
+++
b/engine/src/test/java/org/apache/hop/pipeline/TransformWithMappingMetaTest.java
@@ -18,16 +18,24 @@ package org.apache.hop.pipeline;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.apache.hop.core.Const;
+import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.logging.LoggingObject;
import org.apache.hop.core.variables.IVariables;
import org.apache.hop.core.variables.Variables;
import org.apache.hop.junit.rules.RestoreHopEngineEnvironmentExtension;
+import org.apache.hop.metadata.serializer.memory.MemoryMetadataProvider;
import org.apache.hop.pipeline.engines.local.LocalPipelineEngine;
+import org.apache.hop.pipeline.transform.ITransform;
+import org.apache.hop.pipeline.transform.ITransformData;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -186,6 +194,35 @@ class TransformWithMappingMetaTest {
assertEquals("parentValue", childVariables.getVariable(variableOverwrite));
}
+ /**
+ * Issue #9019: a failed load used to log the raw {@code {0}} placeholder
and always claimed the
+ * directory was missing, even when the file itself did not exist.
+ */
+ @Test
+ void loadMappingMetaNamesPipelineWhenLoadFails() {
+ String missing = "${PROJECT_HOME}/does-not-exist.hpl";
+ String resolved = "/tmp/issue-9019/does-not-exist.hpl";
+
+ TransformWithMappingMeta<ITransform, ITransformData> meta = new
TransformWithMappingMeta<>() {};
+ meta.setFilename(missing);
+
+ IVariables variables = new Variables();
+ variables.setVariable("PROJECT_HOME", "/tmp/issue-9019");
+
+ HopException exception =
+ assertThrows(
+ HopException.class,
+ () ->
+ TransformWithMappingMeta.loadMappingMeta(
+ meta, null, new MemoryMetadataProvider(), variables));
+
+ assertTrue(exception.getMessage().contains(resolved),
exception.getMessage());
+ assertFalse(exception.getMessage().contains("{0}"),
exception.getMessage());
+ assertNotNull(exception.getCause());
+ assertTrue(
+ exception.getCause().getMessage().contains(resolved),
exception.getCause().getMessage());
+ }
+
@Test
void addMissingVariablesSkipsNullVariableNames() {
IVariables fromSpace = new Variables();