Very nice discussion! The deadlock issue due to back pressure mechanism is temporary, which is going to be fixed once Stephan change it to a credit based approach. So we probably should not base our proposal on that temporary limitation. Once we have that issue fixed, the operator can choose to not pull from some input and still not result in deadlock. This approach should in general be more performant than buffering the main inputs. If we expose such freedom to the operator (i.e. let operator choose when to pull from an input), it's also more flexible. For example, the operator can code the logic to decide when a side input is ready. Another upside of this blocking approach is that we may need to work on buffering.
Regards, Xiaowei