Commit Graph

1396 Commits

Author SHA1 Message Date
f20a224801 MySQL monitor detects broken replication and a new option 'detect_stale_master' has been added.
- Monitor automatically builds the replication topology tree if at least Slave_IO thread is running in slaves and the master server will be available.

- If the replication is stopped or configuration removed the previos master server may be still available with detect_stale_master=1
	The SERVER_STALE_STATUS bit is added to the server->status field

Monitor diagnostic routine print all new status descriptions
2014-09-04 09:29:31 +02:00
32cd901e5c New entry point added to all monitors
New entry point added to all monitors
2014-09-04 09:27:23 +02:00
63a7ccf520 Merge branch 'MAX-232' into 232-bis
Conflicts:
	server/core/server.c
	server/include/server.h
2014-09-04 09:23:29 +02:00
7fcf950f8f Merge branch 'Z3' of https://github.com/skysql/MaxScale into Z3
Conflicts:
	server/modules/routing/readwritesplit/readwritesplit.c
2014-09-03 22:54:32 +03:00
cda39a62fb Fixes to
Includes imprvements to hints processing. If hint can't be followed query is routed possibly to slave, and eventually to master if other attempts fail.
2014-09-03 22:09:50 +03:00
5e5c59d322 Merge branch 'MAX-237' into Z3 2014-09-03 17:50:56 +03:00
cc5922b218 Merge branch 'MAX-237' into Z3 2014-09-02 16:58:20 +03:00
52f3adbf20 fixed temporary tables looking for database drops instead of table drops 2014-09-01 19:50:25 +03:00
0fed5c2c5b Fix to bug #510, http://bugs.skysql.com/show_bug.cgi?id=510, made every MaxScale thread to call mysql_thread_init() before entering poll_waitevents. Also main thread does this before starting services. Removed all calls to mysql_thread_init() and to mysql_thread_end() from elsewhere than from poll.c:poll_waitevents and from gateway.c:main
skygw_utils.cc: replace_literal: fixed memory leak
2014-09-01 19:37:31 +03:00
3c1abf4b64 Cleanup 2014-09-01 13:57:31 +03:00
0e53633a37 Merge remote-tracking branch 'origin/Z3' into MAX-237 2014-09-01 13:44:24 +03:00
164d8b1e32 Fixed various memory leaks
dbuser.c: key.user value was never freed
skygw_utils.cc: replace_literal values were not always freed
2014-09-01 13:40:52 +03:00
20abbbdf57 query_classifier.cc:skygw_get_canonical: Fixed bug in how strings were passed to replace_literal function. Changed to use item->str_ptr which stores all strings in the same way unlike item->name in which some string values have double quotation.
skygw_utils.cc:Fixed regexp so that it detects literals at the end of line too.
2014-09-01 13:23:04 +03:00
63d267e5ef Fix for broken replication
Fix for broken replication has been added to mysql_monitor.
Both Slave_IO  and Slave_SQL threads must be running in order to assign
the SERVER_SLAVE status but If only Slave_IO is running let’s assign
the master_id to current server and continue building the replication
tree; if no slaves at all the master will be still available.
The “detect_stale_master” option has been added, its default is 0.
If set to 1 the monitor will keep the last detected master even if the
replication setup is completely not working, i.e. both Slave_IO  and
Slave_SQL threads are not running: this applies only to the server that
was master before.
After monitor or MaxScale are restarted and the replication is still
stopped or not configured there will be no master because it’s not
possible to compute the replication topology tree.
2014-09-01 11:18:57 +02:00
a17e584adb Merge remote-tracking branch 'origin/Z3' into MAX-237
Conflicts:
	query_classifier/query_classifier.cc
	query_classifier/query_classifier.h
	server/modules/routing/readwritesplit/readwritesplit.c
2014-09-01 11:05:10 +03:00
067ce3c886 removed unneeded QUERY_TYPE_DROP_TABLE type from query_classifier.h 2014-09-01 10:35:48 +03:00
bc939501e9 minor bugfix to memory allocations 2014-09-01 10:11:04 +03:00
40f85f9cad Fix to bug http://bugs.skysql.com/show_bug.cgi?id=488. SHOW VARIABLES was treated as if it was session write command. Instead it is a read-only query. Changed to route that to master. 2014-08-31 22:56:30 +03:00
58e8c05c8a added detection of drop table targeting a temporary table 2014-08-31 20:19:47 +03:00
ecc89a823b added tests for temporary tables 2014-08-31 19:30:00 +03:00
45faa38877 added temporary table detection for reads 2014-08-31 07:39:26 +03:00
7629c455a6 partial implementation 2014-08-30 08:27:05 +03:00
40416d424e Merge branch 'Z3' of https://github.com/skysql/MaxScale into Z3
Conflicts:
	gcov.diff
	server/core/buffer.c
	server/include/buffer.h
	server/modules/routing/readwritesplit/readwritesplit.c
2014-08-29 18:50:32 +03:00
4a30626974 Merge branch 'Z2' of https://github.com/skysql/MaxScale into Z2
Conflicts:
	client/Makefile
	server/core/buffer.c
	server/core/test/makefile
	server/include/buffer.h
	server/modules/filter/Makefile
	server/modules/routing/webserver.c
2014-08-29 16:21:08 +03:00
9ce36d7242 Merge branch 'master' of https://github.com/skysql/MaxScale 2014-08-29 14:46:06 +03:00
ed94f08b4e Added rule version.h: $(ROOT_PATH)/VERSION 2014-08-29 11:37:41 +03:00
7ea53f0141 Merge remote-tracking branch 'origin/MAX-160' into MAX-237
Conflicts:
	query_classifier/query_classifier.cc
	query_classifier/query_classifier.h
2014-08-29 11:02:03 +03:00
531d8d7b47 query_classifier.cc: added detection for CREATE TEMPORARY TABLE and setting a new query type QUERY_TYPE_CREATE_TMP_TABLE for it.
query_classifier.h: added QUERY_TYPE_CREATE_TMP_TABLE and QUERY_TYPE_READ_TMP_TABLE for use of temporary table support.
hashtable.c:Added variant of hashtable which is 'flat', that is, stored to existing memory instead of allocating memory as a part of the call. Existing function declarations don't change but added hashtable_alloc_flat for the purpose. Both hashtable_alloc and hashtable_alloc_flat now call the real allocation function, hashtable_alloc_real. hashtable_free only frees memory which is allocated in hashtable_alloc_real.
hashtable.h: added a flag to HASHTABLE struct to indicate whether hashtable owns its memory or not.
readwritesplit.h: Added RSES_PROP_TYPE_TMPTABLES property type to be used for keeping the hashtable for tablenames.
readwritesplit.c: Added comments about temporary table support implementation.
2014-08-29 10:08:48 +03:00
cf5821d4ef Added expected results for missing queries. 2014-08-26 11:14:51 +03:00
69104d7dee skygw_utils.cc:replace_literal: Fixed regular expression which, for example, accepted "200" with needle "2"
query_classifier.cc: fixed invalid argument list in logging command.
input.sql: added a few previously failed cases for canonical query test
2014-08-26 11:08:05 +03:00
fd125f4a42 Merge branch 'MAX-160' of https://github.com/skysql/MaxScale into MAX-160
Conflicts:
	query_classifier/test/canonical_tests/input.sql
2014-08-25 22:22:44 +03:00
c5fbb1f295 query_classifier.cc:parsing_info_done: calling mysql_thread_end caused segfauls when same thread tried next time call free_embedded_thd because thread's sysvar was set to NULL in mysql_thread_end.
Added a few lines to canonical query test's input script which are not handled correctly.
2014-08-25 22:17:21 +03:00
4ab7112db7 more test cases for canonical queries and makefile typo fixes 2014-08-25 15:24:23 +03:00
2694c69186 Merge pull request #30 from skysql/canonical_query_tests
Canonical query tests
2014-08-25 09:48:16 +03:00
662b4b00ee the errmsg.sys file is now copied during test building 2014-08-22 20:50:54 +03:00
73707cc9da canonical query tests for query classifier 2014-08-22 20:44:26 +03:00
ee52ac64a9 query_classifier.cc:skygw_get_canonical: if the item to be replaced is an empty string "", it is processed differently from the other cases due to difficulties to get wanted result by adding special rule for that to regex.
query_classifier.h: added parsing information structure to query classifier away from buffer.h.
buffer.c:introduced a buffer object which includes object pointer and a clean-up call-back function. Buffer objects form a list which is cleaned up by the last referrer of the buffer, as a part of gwbuf_free. Buffer object list is protected by a spinlock gwbuf_lock.
	Also added identifier type, bufobj_id_t which is enumerated type and currently includes one value only, GWBUF_PARSING_INFO. Added also a bitfield for information about the buffer. It currently has one type only, GWBUF_INFO_PARSED indicating that buffer content is parsed and there is buffer object of type GWBUF_PARSING_INFO.
skygw_utils.cc:replace_literal:changed regexec matching to case insensitive because user-defined literals are sometimes converted to upper-case ones.
2014-08-22 19:01:56 +03:00
493feb49ba Fix for bug 410 - MaxScale.cnf server option is not parsed for spaces 2014-08-22 14:46:26 +01:00
c133c6ef4a Fix for bug 479 - Undefined filter reference in MaxScale.cnf causes a crash 2014-08-22 14:33:14 +01:00
3476558f52 Fixed soem errors from a cppcheck run
mbrampton@martin-office:~/Dropbox/development/skygit/MaxScale/server$ cppcheck -q core/*.c
[core/adminusers.c:302]: (error) Resource leak: fp_tmp
[core/filter.c:382]: (error) Uninitialized variable: me
[core/service.c:1071]: (error) Uninitialized variable: succp
2014-08-22 14:25:27 +01:00
40c2846887 Merge branch 'develop' into release-1.0beta 2014-08-22 13:34:00 +01:00
3bc88e4eb9 skygw_get_canonical didn't return NULL pointerin cases where parsing info didn't exist or something went wrong. 2014-08-21 23:31:23 +03:00
3a5b8ef64c query_classifier.cc: cleaned up and simplified skygw_get_canonical
skygw_util.cc:fixed memory allocation issue where terminating byte wasn't counted. Added some error checks.
2014-08-21 23:08:21 +03:00
8d1eae6fde Fixed comment. 2014-08-21 22:34:50 +03:00
fa2189373d query_classifier.cc: query_is_parsed is now global function and can be used to check whether parsing information already exists in the buffer.
skygw_utils.cc: removed replace_str and implemented replace_literal which replaces user-provided literals in query with predefined string "?". Replacing is done one by one, so it is suboptimal ipmlementation since all literals could be passed to replacement function in one call and processed all before returning.
2014-08-21 22:28:23 +03:00
4a2d81e066 Merge branch 'MAX-160' of https://github.com/skysql/MaxScale into MAX-160 2014-08-20 22:19:51 +03:00
c501d4d4e1 Changes related to canonical query format implementation.
query_classifier.cc: Now query can be parsed outside query_classifier_get_type by calling function parse_query. It creates parsing_info_t struct which is then added to the GWBUF which also includes the query. Parsing information follows the buffered query and it is freed at the same time with query buffer, in gwbuf_free.
buffer.c: additions of parsing information to gwbuf struct.
modutil.c: added function which returns query from GWBUF in plain text string.
readwritesplit.c:routeQuery now only calls query_classifier_get_type to get the query type instead of extracting plain text query from the GWBUF buffer.
2014-08-20 22:10:36 +03:00
a853b72baf Modify build_gateway.inc so that variables are used, thus avoiding a need for editing. Please review the file to see the variables that are used - they should be obvious. 2014-08-20 17:22:58 +01:00
65b25a825a Addition of adminusers unit test
Fix to filters unit test
2014-08-20 14:50:44 +01:00
c432d052e5 Merge pull request #29 from skysql/null_filter_fix
Fix to bug #479, http://bugs.skysql.com/show_bug.cgi?id=479
2014-08-20 15:37:05 +03:00