danny0405 opened a new issue, #20016: URL: https://github.com/apache/hudi/issues/20016
### Bug Description **What happened:** The Disruptor event handler catches consumer exceptions and stores them with `markAsFailed()`. `BaseHoodieQueueBasedExecutor.execute()` checks the stored exception only inside its catch block. If the producer finishes, queue shutdown succeeds, and `consumer.finish()` returns normally, execution can return success despite a failed consume operation. This is a follow-up to [the review discussion in PR #18776](https://github.com/apache/hudi/pull/18776#discussion_r4060361891). The resource-cleanup PR deliberately does not add persistent failure state or per-record checks to write handles. **What you expected:** A fatal consumer failure must propagate to the executor caller, even when production and finalization complete normally. The original consumer exception should be preserved and executor resources released. **Steps to reproduce:** 1. Create a `DisruptorExecutor` with a one-record iterator. 2. Use a consumer whose `consume()` throws an exception and whose `finish()` returns normally. 3. Execute it and verify that the stored consumer exception reaches the caller rather than returning the finish result. For write handles, use `hoodie.write.executor.type=DISRUPTOR` and `hoodie.write.ignore.failed=false`, then inject a record-write failure. This also matters for early-conflict exceptions that must remain fatal when individual write failures may be ignored. **Code pointers:** - [DisruptorMessageQueue](https://github.com/apache/hudi/blob/f8affff7793984a7a323988ac54598155842364f/hudi-common/src/main/java/org/apache/hudi/common/util/queue/DisruptorMessageQueue.java) catches and stores the consumer error. - [BaseHoodieQueueBasedExecutor](https://github.com/apache/hudi/blob/f8affff7793984a7a323988ac54598155842364f/hudi-common/src/main/java/org/apache/hudi/common/util/queue/BaseHoodieQueueBasedExecutor.java) runs finish without checking the stored error on its normal completion path. ### Environment **Hudi version:** 1.3.0-SNAPSHOT, PR #18776 at `f8affff77939`; the executor propagation gap is present in the upstream code used by this PR. **Query engine:** Any caller using `DisruptorExecutor`. **Relevant configs:** `hoodie.write.executor.type=DISRUPTOR`, `hoodie.write.ignore.failed=false`. ### Logs and Stack Trace Identified by source tracing during review. The steps above describe the required regression test; no new end-to-end reproducer log is attached. -- 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]
