Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
2.5.14
-
None
Description
The connection_timeout feature does not check whether the connection is truly idle before it kills it. Sessions that are actively performing some operation and are waiting for a result should be left alone.
Original description:
If using read/write split service and connection_timeout is set in service, if one of the connections on replica servers times out, it kills the master connection too, even if it has a valid transaction running and therefore is not idle.
Connect to maxscale with connection_timeout set to 30 seconds and execute the following:
drop database if exists rick;
|
create database rick;
|
use rick;
|
create table rick (id int not null);
|
start transaction;
|
insert into rick values(1000);
|
select sleep(35);
|
insert into rick values(1001);
|
commit;
|
select * from rick where id=1000;
|
As you can see this transaction is killed by maxscale every time.
Thanks
Rick