Commit Graph

585 Commits

Author SHA1 Message Date
cb3213af63 server/include/poll.h renamed to server/include/maxscale/poll.h
Due to an include conflict between /usr/include/poll.h and
maxscale/server/include/poll.h the latter was moved to
maxscale/server/include/maxscale/poll.h.

Once 1.4 is out, all maxscale header files will be moved to that
same sub-directory. That will prevent include conflicts and also
make it easy to see which include files belong to maxscale and
which do not.
2016-03-01 12:56:39 +02:00
ac007fa8f5 MXS-497: Multi-statement queries are always routed to the master
This will prevent the routing of queries that modify data to the slaves.

In the future a more intricate solution can done where all the statements
are parsed and the destination is resolved based on the actual contents.
2016-03-01 09:32:55 +02:00
bf24f18805 Merge branch 'develop' into MXS-544 2016-02-29 10:40:33 +02:00
18526c28f6 MXS-589: Separated persistent and temporary data directories
Both the passwords and temporary files of the embedded library were stored
in the same directory. Now the directories are separated and the embedded
library uses the temporary directory. The datadir cleanup also now only
cleans up the temporary data directory.
2016-02-25 11:24:20 +02:00
5122777829 Try to fix problem if balancing free client DCB and free session so that auth data is always available and client DCB is not freed until session is ready to be freed. Also fix problem in auth logic. 2016-02-24 10:00:45 +00:00
395cbdc103 Simplify handling of "client data" by having a pointer to it only in DCB and not in session structure. Change name of session->client to session->client_dcb for greater clarity. Temporary free of client data in DCB, to be moved to authenticator when it becomes a module. Fix incorrect name of listener_alloc. 2016-02-23 11:13:21 +00:00
ef8a20cceb Fix silly mistakes. 2016-02-22 11:16:51 +00:00
5077933e41 Fix bug in mysql_client.c (over optimisation of protocol setting); various clarifications and improvements re code review. 2016-02-22 11:05:02 +00:00
fec1ebe925 Removed restrictions on monitor timeouts
The monitor timeouts can now be larger than the monitor interval. This will
allow the combination of low monitoring intervals and large network timeouts.
If a network experiences some periodic lag, it is desirable to allow large
timeout values.
2016-02-19 09:57:15 +02:00
866e91c088 Changes to improve robustness of SSL processing, separate it so far as possible from protocols. Separate the detailed mechanism of authentication from the MySQL protocol with a view to making it into a module later. 2016-02-15 09:29:07 +00:00
a628fdcb17 Added configurable executable file directory
This allows MaxScale to launch processes from the directory where
the `maxscale` executable is located.
2016-02-15 11:12:54 +02:00
477197ff5b MXS-581: Moved to MD5 based encryption of passwords
The admin users are now encrypted with a more complex algorithm which reduces
the chance of two passwords generating the same hash by a significant amount.

Refer to the GNU libc manual for more details about the crypt function:
http://www.gnu.org/software/libc/manual/html_node/crypt.html
2016-02-12 23:31:43 +02:00
d1ba050bfd Make housekeeper const correct. 2016-02-12 16:16:32 +02:00
8a814fbec4 Make log_manager self-contained.
log_manager.h now includes all necessary header files.
2016-02-10 15:32:48 +02:00
38db155fef Make mlist a separate component.
Mlist is now made available as a separate component instead of
being a part of skygw_utils.
2016-02-09 17:31:15 +02:00
2692d1081c Add slist.
Slist removed from skygw_utils and added as a separate component.
Nobody seems to be using it, so it could also simply be removed.
Left in place for the time being.
2016-02-09 15:30:27 +02:00
adbc2074de Remove log_manager as a separate component.
Log_manager files are now in server/core and the log manager test
files in server/core/test. The directory log_manager is removed.
2016-02-09 11:17:31 +02:00
c506559452 MXS-400: Servers that are both master and slave now work with readwritesplit
The check for the server status explicitly denied servers that are both master
and slave from being chosed as candidates for queries. This is only a problem
when a user manually sets the server states to both master and slave.

The monitors resolve the replication topology based on the servers that
the monitors see and this always results in at least one slave server.
2016-02-08 19:44:33 +02:00
4a4f22c9a7 Make query_classifier part of core.
The query classifier interface is now built as an integral
part of MaxScale core.
2016-02-08 11:44:07 +02:00
971d1d5de2 Redesign logic of SSL connections to work with status in client DCB instead of in the protocol. This eases the way to moving SSL logic out of a specific protocol (currently MySQL) so as to be available across any protocol. Also, some simplification. 2016-02-03 08:54:55 +00:00
2bbe1b068a Allow the query classifier to be specified in maxscale.cnf 2016-02-01 20:44:36 +02:00
72f02164fc Reformat maxconfig.h 2016-02-01 19:22:07 +02:00
0d78b3f8cd Add extern "C" to gwdirs.h.
Fix line-length as well.
2016-02-01 15:25:08 +02:00
d054f5d7bd Cleanup of dbusers.[h|c]
- All functions used only in c-file declared as static.
- All module functions declared.
- A few camelClase names changed to underscore.
2016-01-29 10:54:41 +02:00
5ed58df9f6 Make hashtable const correct.
Hashtable need not modify the filename when loading or saving
the hashtable; consequently the filename can be passed as const.
2016-01-29 10:53:01 +02:00
743a1b1037 Removed unnecessary calls to atomic_add
The polling statistics collection used atomic_add to increment values. This
is not an optimal way to update statistical values. Moved to per thread
values which are summed up when they are read.

Moved the functions used to gather polling statistics to their own file and
created a specific data type for statistics.
2016-01-28 09:55:26 +02:00
05fa498dc0 Add an SSL header needed to support extra data in DCB. 2016-01-27 15:46:50 +00:00
8367d93746 Migrate SSL functionality out of service and into listener. Develop config handling accordingly, including making provision for SSL parameters in servers for future use in implementing SSL to backend servers. Some elements still to be tidied mainly in mysql_client.c - but that will be part of detaching the SSL authentication from the MySQL protocol. 2016-01-27 15:46:19 +00:00
0111df3767 Cleaned up the use of thread types
The THREAD type was not used everywhere and pthread_t was used instead.
The thread creation function also returned the address of a stack allocated
value which isn't guaranteed to be usable.
2016-01-27 09:07:55 +02:00
e58148356d Split off listener functionality and move SSL initiation from service to listener. Put GWPROTOCOL in its own header file. 2016-01-26 16:08:02 +00:00
da1a717dd8 Add extern "C" to modules.h. 2016-01-26 14:50:41 +02:00
9a8838474c Add query classifier plugin.
Basic infrastructure added for being able to load query classifier
plugins using the same mechanism other plugins are loaded with.
2016-01-26 10:40:43 +02:00
80cee351c4 Add platform.h
Platform.h is intended to contain definitions and workarounds
for concepts that depend upon the used compiler and/or platform.

Currently it ensures that /thread_local/ is available irrespective
of whether the source is compiled in pre- or post C11 or C++11 mode.

This file should be included first by all MaxScale headers.
2016-01-25 11:20:16 +02:00
872d02db3e Finalized configuration processing cleanup
All parts of the configuration processing are now in their own functions.
This allows new objects to be created after MaxScale has started.
2016-01-20 09:25:03 +02:00
c6dfcb66f5 Cleaned up service configuration processing
Moved the allocation and configuration of services into their own function.
Moved SSL parameter validation into a separate function.
2016-01-19 14:23:44 +02:00
c2310327fc Fixed idle session processing
The current implementation of idle connection timeouts is not safe. The sessions
are handled in a way which is not thread-safe and the checking is done from
a non-polling thread.

With this change, the checks for the session timeouts are done in one of the
polling threads in a thread-safe manner only if at least one service has enabled
the timing out of idle client connections.
2016-01-19 10:53:55 +02:00
5515c71988 Reapply MXS-504 changes subsequent to optimisation changes. Merge SSL processing into non-SSL processing so far as possible, correct usage of OpenSSL, simplify where possible. 2016-01-13 10:08:37 +00:00
fb5fdb17db Switch bitmask_clear to be locking and offer bitmask_clear_without_spinlock for non-locking version, in response to review comments. Revert poll.c to use bitmask_clear (with locking) and amend dcb.c to use the non-locking version and to take advantage of the return of an indication of whether the whole bitmask is then clearn. 2016-01-08 13:47:34 +00:00
aa79e61aac Various optimisations of bitmask processing. External change is that bitmask_clear() does not apply a spinlock, so must be called with exclusive access to the bitmask. This affects the call in shutdown processing in poll management. The call from DCB processing is safe because zombie processing has exclusive access to DCBs. 2016-01-08 13:47:34 +00:00
78b363aec7 Enhance buffer handling by changing gwbuf_free to free the whole list of buffers (although it could contain only one buffer). Add gwbuf_count to give number of buffers in a buffer list (for convenience in debugging). Add gwbuf_alloc_and_load to simplify putting data into a new buffer. 2016-01-08 13:47:34 +00:00
4ef89d213b MXS-463: Filepaths are now properly formatted for printing
The various global directory setter functions now process the input they receive
and remove redundant and trailing forward slashes from the directory paths.
2016-01-04 18:40:00 +02:00
8d969aadd1 Changed default number of threads and added auto value.
Changed default number of threads to 1 instead of autoconfigured value and
added a new `auto` variable which enables autoconfiguration of thread count.

The number of threads used when autoconfiguratio fails was changed from 4 to 1.

The default value of using N threads where N is the number of CPU cores was
not optimal as the possibility of rescheduling was higher the more utility
threads there were. Due to this, N-1 is deemed to be the better autoconfigured
value for thread count.
2015-12-15 15:08:43 +02:00
d054cb1595 Correct logic errors in bitmask_set and extend initial/increment size to reduce likelihood of any risk of realloc failure. 2015-12-01 15:16:12 +00:00
74bb291961 Reindent server/core/monitor.c 2015-12-01 09:40:07 +02:00
fbecf128dd Reindent server/core/users.c 2015-12-01 09:29:52 +02:00
8bbc3e8086 Reindent server/core/thread.c 2015-12-01 09:29:03 +02:00
a95be21266 Reindent of server/core/spinlock.c 2015-12-01 09:28:19 +02:00
15df33a93f Reindent server/core/session.c 2015-12-01 09:26:26 +02:00
8601068dc2 Reindent server/core/service.c 2015-11-30 21:25:10 +02:00
ed06d4f14c Reindent server/core/server.c 2015-11-30 19:47:29 +02:00