If the command/answer serialized data is above some reasonable limit, say. 256Kb, it should be splitted into special blocks, and be sent one by one, calling yield between sends, to allow concurrency on the channel, e.g., prevent one long data block to lock the whole channel.
This can't be done on the transport level though as it will inflate blocks in a subopttimal way, also, it will still lock the channel as transport device will get the single request/response monopolizing the channel. We can add more block types instead, like partial block m of n, be rebuilt on receiver and then processed like normal incoming block.
If the command/answer serialized data is above some reasonable limit, say. 256Kb, it should be splitted into special blocks, and be sent one by one, calling yield between sends, to allow concurrency on the channel, e.g., prevent one long data block to lock the whole channel.
This can't be done on the transport level though as it will inflate blocks in a subopttimal way, also, it will still lock the channel as transport device will get the single request/response monopolizing the channel. We can add more block types instead, like partial block m of n, be rebuilt on receiver and then processed like normal incoming block.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
If the command/answer serialized data is above some reasonable limit, say. 256Kb, it should be splitted into special blocks, and be sent one by one, calling yield between sends, to allow concurrency on the channel, e.g., prevent one long data block to lock the whole channel.
This can't be done on the transport level though as it will inflate blocks in a subopttimal way, also, it will still lock the channel as transport device will get the single request/response monopolizing the channel. We can add more block types instead, like partial block m of n, be rebuilt on receiver and then processed like normal incoming block.