We start recording changes in ReorderBufferTXN even before we reach
SNAPBUILD_CONSISTENT state so that if the commit is encountered after
reaching that we should be able to send the changes of the entire
transaction. Now, while recording changes if the reorder buffer memory
has exceeded logical_decoding_work_mem then we can start streaming if
it is allowed and we haven't yet streamed that data. However, we must
not allow streaming to start unless the snapshot has reached
SNAPBUILD_CONSISTENT state.
I have also improved the comments atop ReorderBufferResetTXN to
mention the case when we need to continue streaming after getting an
error.
Attached patch for the above changes.
Thoughts?