diff --git a/Documentation/About/Limitations.md b/Documentation/About/Limitations.md index 0adeb6460..10059574d 100644 --- a/Documentation/About/Limitations.md +++ b/Documentation/About/Limitations.md @@ -10,6 +10,10 @@ In versions 2.1.2 and earlier, the configuration files are limited to 1024 characters per line. This limitation was increased to 16384 characters in MaxScale 2.1.3. +In versions 2.2.12 and earlier, the section names in the configuration files +were limited to 49 characters. This limitation was increased to 1023 characters +in MaxScale 2.2.13. + ## Security limitiations ### MariaDB 10.2 diff --git a/Documentation/Changelog.md b/Documentation/Changelog.md index 43a3d92fe..6539b6b89 100644 --- a/Documentation/Changelog.md +++ b/Documentation/Changelog.md @@ -38,6 +38,7 @@ For more details, please refer to: the master. There is also limited capability for rejoining nodes. For more details, please refer to: +* [MariaDB MaxScale 2.2.13 Release Notes](Release-Notes/MaxScale-2.2.13-Release-Notes.md) * [MariaDB MaxScale 2.2.12 Release Notes](Release-Notes/MaxScale-2.2.12-Release-Notes.md) * [MariaDB MaxScale 2.2.11 Release Notes](Release-Notes/MaxScale-2.2.11-Release-Notes.md) * [MariaDB MaxScale 2.2.10 Release Notes](Release-Notes/MaxScale-2.2.10-Release-Notes.md) diff --git a/Documentation/Release-Notes/MaxScale-2.2.13-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.2.13-Release-Notes.md new file mode 100644 index 000000000..687a669ce --- /dev/null +++ b/Documentation/Release-Notes/MaxScale-2.2.13-Release-Notes.md @@ -0,0 +1,35 @@ +# MariaDB MaxScale 2.2.13 Release Notes -- 2018-08 + +Release 2.2.13 is a GA release. + +This document describes the changes in release 2.2.13, when compared to +release 2.2.12. + +For any problems you encounter, please consider submitting a bug +report on [our Jira](https://jira.mariadb.org/projects/MXS). + +## Bug fixes + +* [MXS-1997](https://jira.mariadb.org/browse/MXS-1997) Object names are limited to 49 characters +* [MXS-1983](https://jira.mariadb.org/browse/MXS-1983) Failed to add dcb to epoll set +* [MXS-1961](https://jira.mariadb.org/browse/MXS-1961) Standalone master loses master status + +## Known Issues and Limitations + +There are some limitations and known issues within this version of MaxScale. +For more information, please refer to the [Limitations](../About/Limitations.md) document. + +## Packaging + +RPM and Debian packages are provided for supported the Linux distributions. + +Packages can be downloaded [here](https://mariadb.com/downloads/mariadb-tx/maxscale). + +## Source Code + +The source code of MaxScale is tagged at GitHub with a tag, which is identical +with the version of MaxScale. For instance, the tag of version X.Y.Z of MaxScale +is `maxscale-X.Y.Z`. Further, the default branch is always the latest GA version +of MaxScale. + +The source code is available [here](https://github.com/mariadb-corporation/MaxScale). diff --git a/server/core/messagequeue.cc b/server/core/messagequeue.cc index 9901a9e60..84f3d2a5d 100644 --- a/server/core/messagequeue.cc +++ b/server/core/messagequeue.cc @@ -175,12 +175,57 @@ bool MessageQueue::post(const Message& message) const ss_dassert(m_pWorker); if (m_pWorker) { - ssize_t n = write(m_write_fd, &message, sizeof(message)); - rv = (n == sizeof(message)); + /** + * This is a stopgap measure to solve MXS-1983 that causes Resource temporarily + * unavailable errors. The errors are caused by the pipe buffer being too small to + * hold all worker messages. By retrying a limited number of times before giving + * up, the success rate for posted messages under heavy load increases + * significantly. + */ + int fast = 0; + int slow = 0; + const int fast_size = 100; + const int slow_limit = 3; + ssize_t n; + + while (true) + { + n = write(m_write_fd, &message, sizeof(message)); + rv = (n == sizeof(message)); + + if (n == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) + { + if (++fast > fast_size) + { + fast = 0; + + if (++slow >= slow_limit) + { + break; + } + else + { + sched_yield() + } + } + } + else + { + break; + } + } if (n == -1) { MXS_ERROR("Failed to write message: %d, %s", errno, mxs_strerror(errno)); + + static bool warn_pipe_buffer_size = true; + + if ((errno == EAGAIN || errno == EWOULDBLOCK) && warn_pipe_buffer_size) + { + MXS_ERROR("Consider increasing pipe buffer size (sysctl fs.pipe-max-size)"); + warn_pipe_buffer_size = false; + } } } else diff --git a/server/inih/ini.c b/server/inih/ini.c index ac185fb55..68614df2d 100644 --- a/server/inih/ini.c +++ b/server/inih/ini.c @@ -17,8 +17,8 @@ http://code.google.com/p/inih/ #include #endif -#define MAX_SECTION 50 -#define MAX_NAME 50 +#define MAX_SECTION 1024 +#define MAX_NAME 1024 /* Strip whitespace chars off end of given string, in place. Return s. */ static char* rstrip(char* s)