You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hop.apache.org by "vbhanuchander-lang (via GitHub)" <gi...@apache.org> on 2026/08/20 10:55:45 UTC
[PR] Issue #8000 : Route unreadable XML files to error handling (hop)
vbhanuchander-lang opened a new pull request, #8029:
URL: https://github.com/apache/hop/pull/8029
Addresses #8000.
The "Get data from XML" transform aborts the pipeline when a file cannot be parsed, instead of
routing the failure to the transform connected to its error hop. Reading the same document from a
field, or reading the file name from a field, behaves correctly — which is what makes the file path
look like an oversight rather than a design choice.
### Cause
`openNextFile()` catches the parse failure and then unconditionally does this:
```java
logError(...);
stopAll();
setErrors(1);
return false;
```
It never asks whether the transform has error handling configured, so `stopAll()` takes the whole
pipeline down. That produces the "Pipeline is killing the other transforms!" line in the report. The
in-fields path does ask — `processPutRow` checks `getTransformMeta().isDoingErrorHandling()` and
calls `putError` — which is exactly why the two paths behave differently.
### Change
When error handling is enabled, the file is sent to the error stream and reading continues with the
next file. When it is not, the previous behaviour is untouched.
One wrinkle worth flagging for review. `data.filenr` is normally incremented before the document is
parsed, so recursing into `openNextFile()` moves on to the next file. But a failure raised *earlier*
— resolving the file, reading its size, its attributes — leaves the pointer untouched, and recursing
would retry the same file forever. The change records the pointer on entry and steps over the file
explicitly if it has not advanced.
`openNextFile()` now declares `HopTransformException`, because `putError` throws it. Every caller
already propagates `HopException`, so this does not ripple.
### Tests
`testErrorHandlingContinuesOnBadXmlFile` is the file-based counterpart to the existing
`testErrorHandlingContinuesOnBadXml`: a temporary folder holding a good file, an unparseable one and
another good file, with an error hop attached.
- both readable files are still read — 2 rows from the first, 1 from the third
- the unreadable file yields exactly one error row
- the pipeline reports no errors
Reverting the production change fails that test with `transform should not report errors ==>
expected: <0> but was: <1>`, which is the behaviour described in the issue.
### Verification
- `mvn -pl plugins/transforms/xml -Pskip-uitest test` — 154 tests, 0 failures, 0 errors
- `mvn spotless:check` and `mvn apache-rat:check` pass on the module
------------------------
- [x] I hereby declare this contribution to be licensed under the [Apache License Version 2.0, January 2004](http://www.apache.org/licenses/LICENSE-2.0)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@hop.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Issue #8000 : Route unreadable XML files to error handling (hop)
Posted by "hansva (via GitHub)" <gi...@apache.org>.
hansva merged PR #8029:
URL: https://github.com/apache/hop/pull/8029
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@hop.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org