In the current communication protocol between servers, nodes and clients, a message is made of one or more serialized objects preceded by their serialized size: size1 object1 | ... | sizeN objectN

Each size is expressed as a signed int, which effectively limits the object size to 2 GB. I have seen user situations where that limit was broken, which got us to handle this situation. For instance, when a node returns a task which takes more than 2 GB, the node detects it and returns a special type of task instead, with information on the error.

We propose to express the size as a long instead of an int, which would allow object sizes of up to 2^63 - 1 (around 9.223e18). This should give us some breathing space for the next few years.

Let's not kid ourselves: this will be a huge refactoring effort, which should only be done for a new major version.