6082 Commits

Author SHA1 Message Date
VilhoRaatikka
6d672cb967 Added status bit BREF_QUERY_ACTIVE to indicate if a query, other than session command, sent to backend for execution. The flag is cleared when the first packet belonging to the response arrives.
The flag is part of the active operation counting, which is utilized in load balancing. The active operation count per backend is used by default as criteria when router chooses to which backend a query should be routed.
2014-06-30 13:44:34 +03:00
VilhoRaatikka
3e3c1af211 Clean up 2014-06-30 13:43:25 +03:00
VilhoRaatikka
862d504a74 Enabled set and clear the flag BREF_WAITING_RESULT. It is actually a counter which is modified with atomic operations only. Setting and clearing BREF_WAITING_RESULT also includes atomic increment and decrement of corresponding backend server's current operations counter, backend_server->stats.n_current_ops. 2014-06-30 11:00:04 +03:00
MassimilianoPinto
aa828e8751 Added missing comment to get_root_master
Added missing comment to get_root_master
2014-06-30 09:00:43 +02:00
VilhoRaatikka
fcf67716fd Added mechanism for choosing slave for a query based on the current load in all connected slaves. Counting operations is not correctly done here. Reading values and choosing accordingly is done.
Fixed several things in session command reply processing.
2014-06-29 22:21:30 +03:00
MassimilianoPinto
32526d31b6 code cleanup
code cleanup
2014-06-27 18:14:46 +02:00
MassimilianoPinto
5cbc7b9f7d root server IN_MAINT returns NULL to caller
the replication tree returns NULL if the root server is maintenance mode
2014-06-27 17:55:46 +02:00
MassimilianoPinto
3a299a9ed8 get_replication_tree checks for SERVER_IS_DOWN
get_replication_tree checks for SERVER_IS_DOWN, this will produce a
replication tree even with servers in SERVER_IN_MAINT state
2014-06-27 17:16:38 +02:00
Mark Riddoch
a25b757134 Merge branch 'develop' into MAX-90
Conflicts:
	server/core/server.c
	server/include/server.h
	server/modules/routing/readconnroute.c
2014-06-27 16:04:39 +01:00
Mark Riddoch
ce2d20b70c Fixed printf format 2014-06-27 15:52:57 +01:00
MassimilianoPinto
3e83174cd8 Log messages updated for Replication heartbeat
Log messages updated for Replication heartbeat
2014-06-27 15:10:25 +02:00
MassimilianoPinto
111693775b master_id and node_id are long vars
master_id and node_id are long vars
2014-06-27 14:21:12 +02:00
MassimilianoPinto
96b6454e13 fix compile warnings
fix compile warnings
2014-06-27 14:11:57 +02:00
MassimilianoPinto
875b464c22 pending_status added to MONITOR_SERVERS
pending_status added to MONITOR_SERVERS
2014-06-27 14:04:02 +02:00
MassimilianoPinto
fdcdc064b1 Added server pending states in monitor
server pending states are now saved and copied to server status before
monitor thread sleep
2014-06-27 13:38:35 +02:00
Mark Riddoch
eee2ad7143 Merge branch 'develop' into MAX-90
Conflicts:
	server/core/service.c
2014-06-27 12:15:30 +01:00
Mark Riddoch
25d4f784bc Implementation of server routing generic functionality and for readconnrouter 2014-06-27 12:07:47 +01:00
MassimilianoPinto
237bacd131 Merge branch 'develop' into MAX-59 2014-06-27 11:07:55 +02:00
Mark Riddoch
c824e9fad6 Merge branch 'develop' into MAX-111 2014-06-27 09:52:00 +01:00
VilhoRaatikka
20637ee224 Removed unnecessary SERVER pointer from dcb.c:dcb_call_foreach(), changed declaration and call accordingly. 2014-06-27 10:54:11 +03:00
MassimilianoPinto
c13275c0e7 merge from develop
merge from develop
2014-06-26 21:27:22 +02:00
MassimilianoPinto
52646a9942 Fix compile warning
Fix compile warning
2014-06-26 21:22:33 +02:00
MassimilianoPinto
a351a5eb09 fix compile warning
fix compile warning
2014-06-26 21:17:49 +02:00
MassimilianoPinto
f246219beb Fix compile errors and warnings
Fix compile errors and warnings
2014-06-26 18:20:33 +02:00
Mark Riddoch
ace2550d93 Merge branch 'develop' into MAX-111 2014-06-26 16:52:57 +01:00
Mark Riddoch
f96b762478 User interface improvements
Addition of enable/disable heartbeat, enable/disable root, list monitors,
show monitors

Better filter diagnostic output
2014-06-26 16:46:19 +01:00
MassimilianoPinto
8808fd7e47 Some debug messages removed
Some debug messages removed
2014-06-26 17:18:53 +02:00
MassimilianoPinto
1dbb4b1780 removed duplicated routine code
removed duplicated routine code
2014-06-26 17:12:08 +02:00
MassimilianoPinto
1a33277f72 Merge from develop
Merge from develop
2014-06-26 17:08:21 +02:00
MassimilianoPinto
4d2e43a2d9 code cleanup and documentation
code cleanup and documentation
2014-06-26 16:56:21 +02:00
MassimilianoPinto
d8ac0467de Added comments for SHOW SLAVE STATUS
Added comments for SHOW SLAVE STATUS
2014-06-26 14:14:37 +02:00
MassimilianoPinto
dbf12f6183 Added new rules for Master selection
Added new rules for Master selection using replication tree
2014-06-25 18:38:33 +02:00
MassimilianoPinto
5a65bc2aaa get_root_master routine available
get_root_master routine available
2014-06-25 17:19:14 +02:00
VilhoRaatikka
1d1da398d4 Merge branch 'develop' into MAX-99
Conflicts:
	server/modules/routing/readwritesplit/readwritesplit.c
2014-06-25 17:50:29 +03:00
VilhoRaatikka
7ff14e23a5 Support for prepared statement, namely support for following comands : COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_RESET, COM_STMT_CLOSE, SQLCOM_PREPARE, SQLCOM_EXECUTE, SQLCOM_DEALLOCATE_PREPARE (DEALLOCATE/DROP PREPARE stmt).
All prepare commands are executed in every backend server currently connected.

All executes are routed to master. If stmt type was recorded in prepare phase in rwsplit router, read-only stmts could be routed to slaves.

COM_STMT_PREPARE gets arbitrary number of response packets from backend database. Since statements are prepared in every backend server and only one multi-packet response can be replied to client, redundant multi-packet responses are discarded. This is done in router. Mechanisms from session command handling are utilized with little changes: router must identify when response consists of multiple packets so that it knows to calculate the number of packets in response and that it is able to discard correct number of packets.

Information to the reply-handling router is provided by backend protocol, which includes a ordered list of commands of commands sent to protocol-owning backend server. A command is stored to protocol struct in mysql_backend.c:gw_MySQLWrite_backend if the statement buffer's type has GWBUF_TYPE_SINGLE_STMT set in mysql_client.c:route_by_statement. GWBUF_TYPE_SINGLE_STATEMENT indicates that there is single statement in the buffer, as opposite to Read Connection router, which accepts streaming input from client.
2014-06-25 17:15:46 +03:00
MassimilianoPinto
2eafe15bca Added master_host update in the loop
Added master_host update in the loop, returns the right server in case
of multiple servers with same replication depth
2014-06-25 15:51:29 +02:00
VilhoRaatikka
2d128de85f Replaced MySQL command macros with enumerated type. Each command has prefix 'MYSQL_' otherwise they match with those listed in mariadb-5.5 mysql_com.h.
Added server command list structure which is included in MySQLProtocol. It holds command and number of response packets the command causes backend server to send as a response. Added set of functions related to protocol command and response packets counting etc.
2014-06-25 15:48:55 +03:00
Mark Riddoch
fa08a141e4 Fix to reload dbusers
Tidyup show service output
2014-06-25 13:01:32 +01:00
Mark Riddoch
792ae454f4 Add support for #!../maxadmin scripts
Add the --help option

Add quoting for executing command with arguments that contain whitespace
2014-06-25 10:00:59 +01:00
MassimilianoPinto
c14700fcff Added documentation to new routines
Added documentation to new routines
2014-06-25 10:21:30 +02:00
Mark Riddoch
a652e875b5 Support for multipacket statements
Remove double free in cloned DCB's
2014-06-24 17:59:29 +01:00
MassimilianoPinto
e1e172fe03 Fixed compile errors
Fixed compile errors
2014-06-24 18:37:17 +02:00
MassimilianoPinto
dfe3092dc5 Merge branch 'develop' into MAX-59 2014-06-24 18:21:09 +02:00
MassimilianoPinto
f09368924b Added depth level 0 for each cluster node
Added depth level 0 for each cluster node, this way the algorithm for
root master selection will the same as in mysql replication:

the root master is server at lowest replication depth  with MASTER bit
set

Here for Galera we assume all the servers are at the same level, that’s
0
2014-06-24 17:58:29 +02:00
MassimilianoPinto
52ef3b6718 New rules for selecting Master/Slaves
New rules for selecting Master/Slaves are based on MySQL depth in the
replication tree.
The only Master is the root server with SERVER_MASTER bit set
All other servers even with both SLAVE and MASTER bit will be selected
as slaves
2014-06-24 15:44:14 +02:00
MassimilianoPinto
584d8867bc Replication tree is now a routine
Replication tree is now a routine
2014-06-24 11:18:59 +02:00
MassimilianoPinto
d36100a99f Replication consistency with replication tree
Added replication consistency after replication tree computation
2014-06-23 13:12:26 +02:00
MassimilianoPinto
51d47accf7 Added replication consistency routines
Added replication consistency routines
2014-06-23 12:56:01 +02:00
MassimilianoPinto
d42469c6cc Merge branch 'develop' into MAX-59 2014-06-23 12:42:32 +02:00
Mark Riddoch
e650930487 Cleanup up branch session on close. 2014-06-23 10:10:04 +01:00