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();

Reply via email to