Merge commit '8ac11a97c29ac9ce3e4099e77a9aa9475c1002b4' into 2.4

This commit is contained in:
Markus Mäkelä
2019-09-23 14:07:32 +03:00
3 changed files with 32 additions and 6 deletions

View File

@ -240,7 +240,7 @@ public:
* *
* @return The id of the routing worker. * @return The id of the routing worker.
*/ */
int id() const int id() const override
{ {
return m_id; return m_id;
} }

View File

@ -335,6 +335,16 @@ public:
virtual ~Worker(); virtual ~Worker();
/**
* Returns the id of the worker
*
* @return The address of the worker cast to an int
*/
virtual int id() const
{
return (intptr_t)this;
}
int load(Load::counter_t counter) int load(Load::counter_t counter)
{ {
return m_load.percentage(counter); return m_load.percentage(counter);

View File

@ -17,10 +17,12 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <fstream> #include <fstream>
#include <mutex>
#include <maxbase/assert.h> #include <maxbase/assert.h>
#include <maxbase/log.h> #include <maxbase/log.h>
#include <maxbase/string.hh> #include <maxbase/string.hh>
#include <maxbase/worker.hh> #include <maxbase/worker.hh>
#include <maxbase/format.hh>
namespace namespace
{ {
@ -146,10 +148,23 @@ MessageQueue* MessageQueue::create(Handler* pHandler)
*/ */
if (fcntl(fds[0], F_SETPIPE_SZ, this_unit.pipe_max_size) == -1) if (fcntl(fds[0], F_SETPIPE_SZ, this_unit.pipe_max_size) == -1)
{ {
MXB_WARNING("Failed to increase pipe buffer size to '%d': %d, %s", MXB_WARNING("Failed to increase pipe buffer size to '%d': %d, %s. "
this_unit.pipe_max_size, "Increase pipe-user-pages-soft (sysctl fs.pipe-user-pages-soft) "
errno, "or reduce pipe-max-size (sysctl fs.pipe-max-size).",
mxb_strerror(errno)); this_unit.pipe_max_size, errno, mxb_strerror(errno));
}
else
{
static int current_pipe_max_size = 0;
static std::mutex pipe_size_lock;
std::lock_guard<std::mutex> guard(pipe_size_lock);
if (current_pipe_max_size == 0)
{
current_pipe_max_size = this_unit.pipe_max_size;
MXB_NOTICE("Worker message queue size: %s",
mxb::to_binary_size(this_unit.pipe_max_size).c_str());
}
} }
#endif #endif
pThis = new(std::nothrow) MessageQueue(pHandler, read_fd, write_fd); pThis = new(std::nothrow) MessageQueue(pHandler, read_fd, write_fd);
@ -219,7 +234,8 @@ bool MessageQueue::post(const Message& message) const
if (n == -1) if (n == -1)
{ {
MXB_ERROR("Failed to write message: %d, %s", errno, mxb_strerror(errno)); MXB_ERROR("Failed to write message to worker %d: %d, %s",
m_pWorker->id(), errno, mxb_strerror(errno));
static bool warn_pipe_buffer_size = true; static bool warn_pipe_buffer_size = true;