diff options
author | Vasil Dimov <vd@FreeBSD.org> | 2017-10-25 13:44:59 +0000 |
---|---|---|
committer | Vasil Dimov <vd@FreeBSD.org> | 2017-10-25 13:44:59 +0000 |
commit | 3b315e8a8d0d4ad53c53b854fa4c074e3333a8fd (patch) | |
tree | ab05d2a7c9e53f4a8c5ec74402814bf97f6f6947 /databases/galera | |
parent | 762aa7c94325893bdad1f53de2d546db77277126 (diff) | |
download | ports-3b315e8a8d0d4ad53c53b854fa4c074e3333a8fd.tar.gz ports-3b315e8a8d0d4ad53c53b854fa4c074e3333a8fd.zip |
Notes
Diffstat (limited to 'databases/galera')
-rw-r--r-- | databases/galera/Makefile | 3 | ||||
-rw-r--r-- | databases/galera/distinfo | 6 | ||||
-rw-r--r-- | databases/galera/files/patch-gcomm__src__asio_tcp.cpp | 115 |
3 files changed, 4 insertions, 120 deletions
diff --git a/databases/galera/Makefile b/databases/galera/Makefile index 27339010c30d..dd07c1992140 100644 --- a/databases/galera/Makefile +++ b/databases/galera/Makefile @@ -2,9 +2,8 @@ # $FreeBSD$ PORTNAME= galera -PORTVERSION?= 25.3.21 +PORTVERSION?= 25.3.22 DISTVERSIONPREFIX?= release_ -PORTREVISION= 2 CATEGORIES= databases MAINTAINER= devel@galeracluster.com diff --git a/databases/galera/distinfo b/databases/galera/distinfo index a437ee683482..b70acc4b3766 100644 --- a/databases/galera/distinfo +++ b/databases/galera/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1501158019 -SHA256 (codership-galera-release_25.3.21_GH0.tar.gz) = dc0d8e9bcbd16de98c3ee558f7e7e2cf4596670a2e2e38a03d3e45bf5c9ebd5e -SIZE (codership-galera-release_25.3.21_GH0.tar.gz) = 3276033 +TIMESTAMP = 1508930849 +SHA256 (codership-galera-release_25.3.22_GH0.tar.gz) = cf9d13af44411c8e09222554eb7b6dd82896ad4fe8c2cb54066862abbefef8fb +SIZE (codership-galera-release_25.3.22_GH0.tar.gz) = 3278520 diff --git a/databases/galera/files/patch-gcomm__src__asio_tcp.cpp b/databases/galera/files/patch-gcomm__src__asio_tcp.cpp deleted file mode 100644 index 2f641dd9972f..000000000000 --- a/databases/galera/files/patch-gcomm__src__asio_tcp.cpp +++ /dev/null @@ -1,115 +0,0 @@ ---- gcomm/src/asio_tcp.cpp.orig 2017-01-25 07:55:06 UTC -+++ gcomm/src/asio_tcp.cpp -@@ -231,10 +231,18 @@ void gcomm::AsioTcpSocket::close() - } - } - -+// Enable to introduce random errors for write handler -+// #define GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR - - void gcomm::AsioTcpSocket::write_handler(const asio::error_code& ec, - size_t bytes_transferred) - { -+#ifdef GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ static const long empty_rate(10000); -+ static const long bytes_transferred_less_than_rate(10000); -+ static const long bytes_transferred_not_zero_rate(10000); -+#endif // GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ - Critical<AsioProtonet> crit(net_); - - if (state() != S_CONNECTED && state() != S_CLOSING) -@@ -252,34 +260,70 @@ void gcomm::AsioTcpSocket::write_handler - - if (!ec) - { -- gcomm_assert(send_q_.empty() == false); -- gcomm_assert(send_q_.front().len() >= bytes_transferred); -- -- while (send_q_.empty() == false && -- bytes_transferred >= send_q_.front().len()) -+ if (send_q_.empty() == true -+#ifdef GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ || ::rand() % empty_rate == 0 -+#endif // GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ ) - { -- const Datagram& dg(send_q_.front()); -- bytes_transferred -= dg.len(); -- send_q_.pop_front(); -+ log_warn << "write_handler() called with empty send_q_. " -+ << "Transport may not be reliable, closing the socket"; -+ FAILED_HANDLER(asio::error_code(EPROTO, -+ asio::error::system_category)); - } -- gcomm_assert(bytes_transferred == 0); -- -- if (send_q_.empty() == false) -+ else if (send_q_.front().len() < bytes_transferred -+#ifdef GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ || ::rand() % bytes_transferred_less_than_rate == 0 -+#endif // GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ ) - { -- const Datagram& dg(send_q_.front()); -- boost::array<asio::const_buffer, 2> cbs; -- cbs[0] = asio::const_buffer(dg.header() -- + dg.header_offset(), -- dg.header_len()); -- cbs[1] = asio::const_buffer(&dg.payload()[0], -- dg.payload().size()); -- write_one(cbs); -+ log_warn << "write_handler() bytes_transferred " -+ << bytes_transferred -+ << " less than sent " -+ << send_q_.front().len() -+ << ". Transport may not be reliable, closing the socket"; -+ FAILED_HANDLER(asio::error_code(EPROTO, -+ asio::error::system_category)); - } -- else if (state_ == S_CLOSING) -+ else - { -- log_debug << "deferred close of " << id(); -- close_socket(); -- state_ = S_CLOSED; -+ while (send_q_.empty() == false && -+ bytes_transferred >= send_q_.front().len()) -+ { -+ const Datagram& dg(send_q_.front()); -+ bytes_transferred -= dg.len(); -+ send_q_.pop_front(); -+ } -+ if (bytes_transferred != 0 -+#ifdef GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ || ::rand() % bytes_transferred_not_zero_rate == 0 -+#endif // GCOMM_ASIO_TCP_SIMULATE_WRITE_HANDLER_ERROR -+ ) -+ { -+ log_warn << "write_handler() bytes_transferred " -+ << bytes_transferred -+ << " after processing the send_q_. " -+ << "Transport may not be reliable, closing the socket"; -+ FAILED_HANDLER(asio::error_code(EPROTO, -+ asio::error::system_category)); -+ } -+ else if (send_q_.empty() == false) -+ { -+ const Datagram& dg(send_q_.front()); -+ boost::array<asio::const_buffer, 2> cbs; -+ cbs[0] = asio::const_buffer(dg.header() -+ + dg.header_offset(), -+ dg.header_len()); -+ cbs[1] = asio::const_buffer(&dg.payload()[0], -+ dg.payload().size()); -+ write_one(cbs); -+ } -+ else if (state_ == S_CLOSING) -+ { -+ log_debug << "deferred close of " << id(); -+ close_socket(); -+ state_ = S_CLOSED; -+ } - } - } - else if (state_ == S_CLOSING) |