Commit Graph

7432 Commits

Author SHA1 Message Date
18ee9114db [Je|T]malloc libraries must be first
If alternative malloc implementations are to be used, their
library must appear first on the link line.
2017-02-28 20:28:25 +02:00
fd92d76f0a Avoid accessing tls data
The thread id is copied to a local variable to avoid having
__tls_get_addr from unnecessarily being called over and over
again. Together that used to amount to some 1% of the execution
time.
2017-02-28 20:28:25 +02:00
d617a0b7b9 Move testfilter, router etc to examples
Also changed Plugin devel manual to match. Modified roundrobinrouter
to use static_cast due to the change in router api definitions.
2017-02-28 17:51:48 +02:00
37f80a7dd8 Plugin development manual
Plenty of additions and restructuring compared to the first version.
Add it to Documentation.
2017-02-28 17:51:12 +02:00
b24ac12601 MXS-1075: spinlock_release was in the wrong place
MXS-1075: spinlock_release was in the wrong place
2017-02-28 15:36:12 +01:00
304b5ced29 MXS-1075: MariaDB 10 GTID stored and shown only for transaction safety on
MariaDB 10 GTID is detected and stored only if transaction_safety
option is on.

SELECT @@gtid_current_pos and “maxadmin show service $service_name” can
return it
2017-02-28 15:19:57 +01:00
054ddcb3dd MXS-1075: pending_transaction struct added
New pending_transaction added and master_transaction_t values are now
used in all files
2017-02-28 13:50:38 +01:00
b2cd90bb08 Only use get_bref_from_dcb with backend DCBs
Altered the function to assert that the DCB is a backend DCB in addition
to the existing assertions for non-NULL backend reference on function
return.

Move the fetching of the backend reference after the type of the DCB is
inspected in handleError. This removes the need to handle the case where
the returned bref is NULL and the DCB is a client DCB.
2017-02-28 11:28:22 +02:00
c926577a3c Fix wrong value in debug message
Fix wrong value in debug message
2017-02-27 16:35:11 +01:00
ef28808967 Update release notes for 2.1.1
Session specific logging levels removed.
2017-02-27 14:47:44 +02:00
65457f1724 Remove support for session specific log priorities
No need to maintain information in thread local storage,
which just added complexity and also incurred a slight
performance penalty.
2017-02-27 14:41:01 +02:00
cb380d09f8 Deprecate session specific log priorities
They are not particularly useful, they surely are not used
and impose a small cost for every event extracted from the
poll sets.

This commit only removes the maxadmin commands, subsequent
commits will remove the actual code.
2017-02-27 14:40:11 +02:00
d44e38b15b Remove deprecated logging functionality 2017-02-27 14:40:00 +02:00
bf4d00d6e3 Add temporary fixes to hashtable
These fixes prevent loops turning into eternal loops when
optimizations have been turned on.

The right remedy is to remove the internal locks from hashtable
and use external locks instead.
2017-02-27 13:36:51 +02:00
0a8eaa81df Add volatile to spinlock variables
Otherwise the loop inside spinlock_acquire will turn into an
eternal loop when optimizations have been turned on.
2017-02-27 13:32:28 +02:00
870a72ae71 Inherit maxscale::Filter from MXS_FILTER
All use of reinterpret_cast can be removed. No cast needed when
the C++ instances are returned, and static_cast is sufficient for
downcasting.
2017-02-27 11:11:04 +02:00
677e8aaabf Remove spinlocks from readwritesplit
Spinlocks are no longer necessary as the threading model only allows a
specific thread to access the router session.
2017-02-27 11:02:58 +02:00
d834c1bbdc Compile sqlite explicitly in single thread mode
As every thread has a separate (in-memory) database, i.e. not
just a separate _connection_, sqlite can be compiled in singe-thread
mode, which means that there will be *no* locking.
2017-02-27 10:39:20 +02:00
560bd1e507 Update MXS_ROUTER_OBJECT APIs
Now the type MXS_ROUTER_SESSION is used in MXS_ROUTER_OBJECT.
All routers updated accordingly.
2017-02-27 10:17:57 +02:00
d7f7c01f47 Replace void* with struct mxs_router
Using an empty struct instead of void* to represent the opaque
filter and filter session types, means that C++ filter types
simply can derive from them. That brings conceptual clarity and
also means that the C++ instances can be returned from the module
callbacks without casts. When provided as argument they can be
downcast using static_cast instead of reinterpret_cast.

In a subsequent change, the prototypes of MXS_ROUTER_OBJECT will
be updated and routers modified accordingly.
2017-02-27 09:45:09 +02:00
6406f6b4e1 Replace void* with struct mxs_filter
Using an empty struct instead of void* to represent the opaque
filter and filter session types, means that C++ filter types
simply can derive from them. That brings conceptual clarity and
also means that the C++ instances can be returned from the module
callbacks without casts. When provided as argument they can be
downcast using static_cast instead of reinterpret_cast.

Similar types to be provided for routers.
2017-02-27 09:31:24 +02:00
482977dc5e Update 2.2 release notes
Added avrorouter deflate support to release notes.
2017-02-27 09:28:50 +02:00
4e223adeff Simplify DCB writing code
Due to the changes in the threading model, the DCB write code can be
simplified by a great amount.

Since only one thread can write to a DCB, it's safe to assume that no new
data is added to the write queue of a DCB while it is being drained. This
removes the need for the code that tracks whether a concurrent DCB write
attempt was made.

Because the high and low water callbacks weren't used by any module, it is
safe to remove them. They offer no real benefits over the drain callback.
2017-02-27 09:25:15 +02:00
68f99ae305 Remove unused DCB callback code
The highwater and lowwater callbacks were never registered for the client
DCBs in the binlogrouter.

The DCB hangup callbacks were never called by the core and were replaced
with fake hangup events in an earlier version.
2017-02-27 09:25:15 +02:00
c3cc46ae04 Add deflate compression to avrorouter
The avrorouter can now compress the Avro files using the deflate algorithm
provided by zlib.
2017-02-21 16:19:09 +02:00
c47ef968f7 Add initial support for deflate compression in maxavro
Maxavro now supports reading records with the zlib deflate
algorithm.

With this change, each data block is read into memory in one IO
operation. This allows the library to decompress the data block if
necessary.

The avrorouter does not yet use compression when writing the records.
2017-02-21 16:14:47 +02:00
9aa22c6eb4 Fix server version detection of 10.2 flags
The code used the wrong version string. Instead of using the server
version string, it used the service version string.
2017-02-21 11:27:04 +02:00
644b139b00 Add support for 10.2 server capabilities
Added support for 10.2 server capabilities and cleaned up the server
capability flags.
2017-02-21 11:27:03 +02:00
1d8d526a01 Merge branch '2.1' into develop 2017-02-20 18:39:41 +02:00
a201379aad Add files to devel package
The devel package was missing the protocol/mysql.h-file. Also,
added copyright and licence files and a devel-specific description.
The package target is now checked to be one of the recognized ones.
2017-02-20 17:44:22 +02:00
6fd025376c Missing NULL check
Missing NULL check added
2017-02-20 16:21:37 +01:00
44661036d8 Add 2.1.1 release notes
Added MaxScale 2.1.1 release notes.
2017-02-20 12:42:11 +02:00
aa412b4fe3 Fix merge conflict
2.0 used old define names.
2017-02-20 12:42:11 +02:00
e7c7caebad Add option for failover recovery in mysqlmon
The `failover_recovery` option allows failed servers to rejoin the
cluster. This should make using MaxScale with two node clusters easier.

One use case for this is when the replication-manager promotes the last
node in the cluster as the master. When this is done, the slave
configuration is cleared and the read-only mode is disabled. Since the
failover requires that the server is not configured as a slave and that it
is not in read-only mode, it is safe to use `failover_recovery` with
replication-manager.
2017-02-20 11:20:53 +02:00
61f2d96a58 Merge branch '2.0' into 2.1 2017-02-20 11:17:49 +02:00
f54c0a5b81 Initialize RNG in maxkeys/maxpasswd
The initialization needs to be done in each of the executables before the
random number generator is used.
2017-02-20 11:07:44 +02:00
446f65a9cf MXS-1142: maxbinlogcheck to remove transaction from binlog
maxbinlogcheck with new -T $pos option can find the BEGIN of
transaction where $pos belongs to and then replace all events in
between with IGNORABLE events
2017-02-16 17:33:27 +01:00
755a3601ec MXS-1141: maxbinlogcheck to replace an event with ignorable event
maxbinlogcheck utility can replace an event at pos with an ignorable
event

New option is -R, —replace

-R $pos

The -R needs -f as file will be modified
2017-02-16 12:23:26 +01:00
7a6c38bd13 Merge branch '2.1' into develop 2017-02-16 11:10:11 +02:00
99edaf6b56 Merge branch '2.1.0' into 2.1 2017-02-16 11:09:38 +02:00
413654ab3a Update links in default template 2017-02-16 11:09:28 +02:00
a023e6ed05 Update date in 2.1.0 release notes. 2017-02-16 10:55:57 +02:00
272896b50e Fix luafilter build failure
The filter used the old getCapabilities signature.
2017-02-16 10:16:10 +02:00
431cf885c3 Fix devel package
The devel package didn't install generated headers and the template
`header.h.in` files were installed instead.
2017-02-15 09:31:14 +02:00
a0b599730c Detect and store MariaDB GTID
If Binlog Server is running with MariaDB 10 compatibility then the
found GTID is stored in router->mariadb_gtid
2017-02-15 08:29:38 +01:00
71707c8505 Merge branch '2.1' into develop 2017-02-15 08:48:36 +02:00
49cc2b52e3 Merge branch '2.1.0' into 2.1 2017-02-15 08:44:55 +02:00
5648f708af Update license to BSL 1.1 2017-02-14 21:42:28 +02:00
e8f88a5762 Add script for updating license URL 2017-02-14 21:02:16 +02:00
0838401b32 Merge branch '2.1' into develop 2017-02-14 17:54:27 +02:00