Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Duplicate
-
10.2.8
-
MariaDb 10.2.8 with Galera Cluster (3 nodes)
Centos 7.3 for database server
Client running on docker 17.06.1-ce
Client written in c# .net core 2 with communicating with db using MySqlConnector
(https://github.com/mysql-net/MySqlConnector)
Description
We use Mariadb to store a work queue which is accessed by application servers using a stored procedure. The stored procedure updates a number of rows and then returns them to the calling server.
When load testing the system, we are receiving occasional "Protocol Violation" exceptions. This appears to occur when
The stored procedure is called on one node of the galera cluster.
This node starts returning the resultset to the client application
Galera detects an inconsistency caused by an update on a second node and rolls the transaction back. Its sends an "EOF, more results" to the client application, followed by a new resultset from the rerun stored procedure call. The new resultset isn't preceded by column information and so causes the protocol exception.
1. This behaviour doesn't appear to conform to the MySql client/server protocol. Is this correct? If it does, can you point me in the direction of documentation that describes the behaviour - In particular, how do you know the first rowset is incomplete and should be thrown away?
2. Should you be returning data to the client application that can be still rolled back.
We have captured a network trace of this issue and can share it with you, but not on a public forum. If you want it, can you let me know where to send it.
Attachments
Issue Links
- duplicates
-
MDEV-4237 Galera: Malformed packet, ER_SP_DOES_NOT_EXIST or ER_VIEW_INVALID on concurrent view creation and procedure call
- Open