Details
Description
If both the client application and the database server are located on the same server where MaxScale is installed, it's possible for the client to send data fast enough and the server to consume it fast enough that the network buffers on the client side never become empty and on the server side never become full. This results in a "busy loop" where a single client monopolizes the worker as long as it manages to send data.
An example of this can be seen with the MariaDB Connector/NodeJS test suite when configured to run large tests and with large packets. The test case 16M+ batch with 16M max_allowed_packet from the standard question mark without bulk suite is one example where this happens. The worst-case scenario on machines with limited CPU usage is that it triggers the SystemD watchdog which is how this was initially discovered when testing locally on small-ish VMs.
The solution to this is to make the scheduling of fake events fairer by forcing them to go through the event loop once a certain limit has been exceeded.