kalayciburak opened a new pull request, #20026: URL: https://github.com/apache/hudi/pull/20026
### Describe the issue this Pull Request addresses Closes #20016. `DisruptorMessageQueue` catches exceptions from `HoodieConsumer.consume` and stores them with `markAsFailed`. `BaseHoodieQueueBasedExecutor.execute()` only inspected that stored failure inside its catch block. When production and `finish()` both complete normally, the caller received the finish result and the fatal consume error was dropped. ### Summary and Changelog After `finish()` returns, `execute()` now throws the stored queue failure if one is present. - Keep the existing close and `finish()` order so queue and consumer resources are still released. - Propagate the original consumer exception through the existing `HoodieException` path. - Add a Disruptor regression test where `consume()` throws and `finish()` returns normally. ### Impact Callers of `DisruptorExecutor` with `hoodie.write.executor.type=DISRUPTOR` now see a fatal consume failure instead of a successful finish result. No public API, config, or storage-format change. The success path is unchanged when no failure is stored. ### Risk Level low The check runs only after both futures complete and only when `queue.getThrowable()` is already set. Verification: `TestDisruptorExecutorConsumerFailure` failed before the change because `execute()` returned normally, then passed (1 test, 0 failures). `hudi-common` checkstyle reported 0 violations. ### Documentation Update none ### Contributor's checklist - [x] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute) - [x] Enough context is provided in the sections above - [x] Adequate tests were added if applicable -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
