kunwp1 opened a new issue, #5197: URL: https://github.com/apache/texera/issues/5197
### What happened? A workflow has 1-out python udf and python udf operator. 1-out python udf operator produces 0 tuples. In this case, the downstream python udf operator doesn't complete the execution. ### How to reproduce? Run this workflow. [Untitled workflow (13).json](https://github.com/user-attachments/files/28201368/Untitled.workflow.13.json) <img width="1129" height="605" alt="Image" src="https://github.com/user-attachments/assets/f229540f-6a83-4a1c-974d-4861b687a67c" /> ### Branch main ### Commit Hash (Optional) _No response_ ### What browsers are you seeing the problem on? _No response_ ### Relevant log output ```shell 2026-05-24 16:40:36.928 | ERROR | threading:run:1012 - An error has been caught in function 'run', process 'MainProcess' (38104), thread 'main_loop_thread' (6156333056): Traceback (most recent call last): File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/threading.py", line 1032, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x109d77060> └ <Thread(main_loop_thread, started 6156333056)> File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/threading.py", line 1075, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x109d76d40> └ <Thread(main_loop_thread, started 6156333056)> > File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/threading.py", line 1012, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(main_loop_thread, started 6156333056)> │ │ │ └ () │ │ └ <Thread(main_loop_thread, started 6156333056)> │ └ <bound method StoppableQueueBlockingRunnable.run of <core.runnables.main_loop.MainLoop object at 0x115e50320>> └ <Thread(main_loop_thread, started 6156333056)> File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 65, in run self.receive(self.interruptible_get()) │ │ │ └ <function StoppableQueueBlockingRunnable.interruptible_get at 0x10fe774c0> │ │ └ <core.runnables.main_loop.MainLoop object at 0x115e50320> │ └ <function MainLoop.receive at 0x115dcb9c0> └ <core.runnables.main_loop.MainLoop object at 0x115e50320> File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 148, in receive match( └ <function match at 0x1100884a0> File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pampy/pampy.py", line 299, in match return run(action, lambda_args) │ │ └ [ECMElement(tag=ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF321-PythonUDFSourceV2-operator-bf7723af-dc... │ └ <bound method MainLoop._process_ecm of <core.runnables.main_loop.MainLoop object at 0x115e50320>> └ <function run at 0x1100734c0> File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pampy/pampy.py", line 48, in run return action(*var) │ └ [ECMElement(tag=ChannelIdentity(from_worker_id=ActorVirtualIdentity(name='Worker:WF321-PythonUDFSourceV2-operator-bf7723af-dc... └ <bound method MainLoop._process_ecm of <core.runnables.main_loop.MainLoop object at 0x115e50320>> File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 340, in _process_ecm { File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 291, in _process_end_channel self.complete() │ └ <function MainLoop.complete at 0x115dca480> └ <core.runnables.main_loop.MainLoop object at 0x115e50320> File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 100, in complete self.context.state_manager.transit_to(WorkerState.COMPLETED) │ │ │ │ │ └ WorkerState.COMPLETED │ │ │ │ └ <enum 'WorkerState'> │ │ │ └ <function StateManager.transit_to at 0x115da9260> │ │ └ <core.architecture.managers.state_manager.StateManager object at 0x115d37b90> │ └ <core.architecture.managers.context.Context object at 0x115e50380> └ <core.runnables.main_loop.MainLoop object at 0x115e50320> File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/architecture/managers/state_manager.py", line 73, in transit_to raise InvalidTransitionException( └ <class 'core.architecture.managers.state_manager.InvalidTransitionException'> core.architecture.managers.state_manager.InvalidTransitionException: Cannot transit from READY to COMPLETED Exception in thread main_loop_thread: Traceback (most recent call last): File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/threading.py", line 1075, in _bootstrap_inner self.run() File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/threading.py", line 1012, in run self._target(*self._args, **self._kwargs) File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/site-packages/loguru/_logger.py", line 1251, in catch_wrapper return function(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/util/stoppable/stoppable_queue_blocking_thread.py", line 65, in run self.receive(self.interruptible_get()) File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 148, in receive match( File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pampy/pampy.py", line 299, in match return run(action, lambda_args) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/kunwoopark/.pyenv/versions/3.12.9/lib/python3.12/site-packages/pampy/pampy.py", line 48, in run return action(*var) ^^^^^^^^^^^^ File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 340, in _process_ecm { File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 291, in _process_end_channel self.complete() File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/runnables/main_loop.py", line 100, in complete self.context.state_manager.transit_to(WorkerState.COMPLETED) File "/Users/kunwoopark/workspace/fork/texera/amber/src/main/python/core/architecture/managers/state_manager.py", line 73, in transit_to raise InvalidTransitionException( core.architecture.managers.state_manager.InvalidTransitionException: Cannot transit from READY to COMPLETED ``` -- 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]
