From f9af88c27dadf64788fe1d70f59a10df31c96d26 Mon Sep 17 00:00:00 2001 From: Brian Bouterse Date: Feb 23 2016 21:12:00 +0000 Subject: Adds some important patches from upstream - Adds patch to fix upstream issue 569 - Adds patch to fix upstream issue 571 --- diff --git a/569.patch b/569.patch new file mode 100644 index 0000000..45d890f --- /dev/null +++ b/569.patch @@ -0,0 +1,37 @@ +From 6115b1a9be4de41f2c7cbb855405bfd60eff81fc Mon Sep 17 00:00:00 2001 +From: Brian Bouterse +Date: Tue, 9 Feb 2016 14:37:09 -0500 +Subject: [PATCH] Adds asynchronous error handling to Qpid transport + +Fixes #568 +--- + kombu/transport/qpid.py | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/kombu/transport/qpid.py b/kombu/transport/qpid.py +index b458d32..081c6c6 100644 +--- a/kombu/transport/qpid.py ++++ b/kombu/transport/qpid.py +@@ -1437,6 +1437,9 @@ def verify_runtime_environment(self): + def _qpid_session_ready(self): + os.write(self._w, '0') + ++ def _qpid_exception(self, obj_with_exception): ++ os.write(self._w, 'e') ++ + def on_readable(self, connection, loop): + """Handle any messages associated with this Transport. + +@@ -1594,6 +1597,12 @@ def establish_connection(self): + conn.client = self.client + self.session = conn.get_qpid_connection().session() + self.session.set_message_received_handler(self._qpid_session_ready) ++ conn.get_qpid_connection().set_exception_notify_handler( ++ self._qpid_exception ++ ) ++ self.session.set_exception_notify_handler( ++ self._qpid_exception ++ ) + return conn + + def close_connection(self, connection): diff --git a/571.patch b/571.patch new file mode 100644 index 0000000..26e9357 --- /dev/null +++ b/571.patch @@ -0,0 +1,114 @@ +From e4149280e2e72e73985fdd7e040c833fc61a88a2 Mon Sep 17 00:00:00 2001 +From: Brian Bouterse +Date: Tue, 16 Feb 2016 14:56:23 -0500 +Subject: [PATCH] Updates Qpid transport with updated names of Qpid async + interface + +--- + kombu/tests/transport/test_qpid.py | 38 +++++++++++++++++++++++++++++--------- + kombu/transport/qpid.py | 16 +++++++++------- + 2 files changed, 38 insertions(+), 16 deletions(-) + +diff --git a/kombu/tests/transport/test_qpid.py b/kombu/tests/transport/test_qpid.py +index a3894e4..4340443 100644 +--- a/kombu/tests/transport/test_qpid.py ++++ b/kombu/tests/transport/test_qpid.py +@@ -1706,13 +1706,29 @@ def test_transport_establish_conn_uses_hostname_if_not_default(self): + transport='tcp', + ) + +- def test_transport_sets_qpid_message_received_handler(self): ++ def test_transport_sets_qpid_message_ready_handler(self): + self.transport.establish_connection() +- qpid_conn = self.mock_conn.return_value.get_qpid_connection +- new_mock_session = qpid_conn.return_value.session.return_value +- mock_set_callback = new_mock_session.set_message_received_handler +- expected_callback = self.transport._qpid_session_ready +- mock_set_callback.assert_called_once_with(expected_callback) ++ qpid_conn_call = self.mock_conn.return_value.get_qpid_connection ++ mock_session = qpid_conn_call.return_value.session.return_value ++ mock_set_callback = mock_session.set_message_received_notify_handler ++ expected_msg_callback = self.transport._qpid_message_ready_handler ++ mock_set_callback.assert_called_once_with(expected_msg_callback) ++ ++ def test_transport_sets_session_exception_handler(self): ++ self.transport.establish_connection() ++ qpid_conn_call = self.mock_conn.return_value.get_qpid_connection ++ mock_session = qpid_conn_call.return_value.session.return_value ++ mock_set_callback = mock_session.set_async_exception_notify_handler ++ exc_callback = self.transport._qpid_async_exception_notify_handler ++ mock_set_callback.assert_called_once_with(exc_callback) ++ ++ def test_transport_sets_connection_exception_handler(self): ++ self.transport.establish_connection() ++ qpid_conn_call = self.mock_conn.return_value.get_qpid_connection ++ qpid_conn = qpid_conn_call.return_value ++ mock_set_callback = qpid_conn.set_async_exception_notify_handler ++ exc_callback = self.transport._qpid_async_exception_notify_handler ++ mock_set_callback.assert_called_once_with(exc_callback) + + + @case_no_python3 +@@ -1766,7 +1782,7 @@ def test_transport_register_with_event_loop_calls_add_reader(self): + @case_no_python3 + @case_no_pypy + @disable_runtime_dependency_check +-class TestTransportQpidSessionReady(Case): ++class TestTransportQpidCallbackHandlers(Case): + + def setUp(self): + self.patch_a = patch(QPID_MODULE + '.os.write') +@@ -1776,10 +1792,14 @@ def setUp(self): + def tearDown(self): + self.patch_a.stop() + +- def test_transport__qpid_session_ready_writes_symbol_to_fd(self): +- self.transport._qpid_session_ready() ++ def test__qpid_message_ready_handler_writes_symbol_to_fd(self): ++ self.transport._qpid_message_ready_handler(Mock()) + self.mock_os_write.assert_called_once_with(self.transport._w, '0') + ++ def test__qpid_async_exception_notify_handler_writes_symbol_to_fd(self): ++ self.transport._qpid_async_exception_notify_handler(Mock(), Mock()) ++ self.mock_os_write.assert_called_once_with(self.transport._w, 'e') ++ + + @case_no_python3 + @case_no_pypy +diff --git a/kombu/transport/qpid.py b/kombu/transport/qpid.py +index 081c6c6..55cafdd 100644 +--- a/kombu/transport/qpid.py ++++ b/kombu/transport/qpid.py +@@ -1434,10 +1434,10 @@ def verify_runtime_environment(self): + 'with your package manager. You can also try `pip install ' + 'qpid-python`.') + +- def _qpid_session_ready(self): ++ def _qpid_message_ready_handler(self, session): + os.write(self._w, '0') + +- def _qpid_exception(self, obj_with_exception): ++ def _qpid_async_exception_notify_handler(self, obj_with_exception, exc): + os.write(self._w, 'e') + + def on_readable(self, connection, loop): +@@ -1596,12 +1596,14 @@ def establish_connection(self): + conn = self.Connection(**opts) + conn.client = self.client + self.session = conn.get_qpid_connection().session() +- self.session.set_message_received_handler(self._qpid_session_ready) +- conn.get_qpid_connection().set_exception_notify_handler( +- self._qpid_exception ++ self.session.set_message_received_notify_handler( ++ self._qpid_message_ready_handler + ) +- self.session.set_exception_notify_handler( +- self._qpid_exception ++ conn.get_qpid_connection().set_async_exception_notify_handler( ++ self._qpid_async_exception_notify_handler ++ ) ++ self.session.set_async_exception_notify_handler( ++ self._qpid_async_exception_notify_handler + ) + return conn + diff --git a/python-kombu.spec b/python-kombu.spec index a05e0a2..3312467 100644 --- a/python-kombu.spec +++ b/python-kombu.spec @@ -6,7 +6,7 @@ Name: python-%{srcname} Version: 3.0.33 -Release: 3%{?dist} +Release: 4%{?dist} Epoch: 1 Summary: An AMQP Messaging Framework for Python @@ -16,6 +16,8 @@ License: BSD and Python URL: http://pypi.python.org/pypi/%{srcname} Source0: http://pypi.python.org/packages/source/k/%{srcname}/%{srcname}-%{version}.tar.gz Patch0: 563.patch +Patch1: 569.patch +Patch2: 571.patch BuildArch: noarch BuildRequires: python2-devel @@ -92,6 +94,8 @@ This subpackage is for python3 %setup -q -n %{srcname}-%{version} %patch0 -p1 +%patch1 -p1 +%patch2 -p1 %if 0%{?with_python3} cp -a . %{py3dir} @@ -137,6 +141,10 @@ sed -i 's!/usr/bin/python$!/usr/bin/python3!' %{buildroot}/%{python3_sitelib}/ko %endif %changelog +* Tue Feb 23 2016 Brian Bouterse - 1:3.0.33-4 +- Adds patch to fix upstream issue 569 +- Adds patch to fix upstream issue 571 + * Thu Feb 04 2016 Fedora Release Engineering - 1:3.0.33-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild