qpid-python.git
5 weeks agoNO-JIRA: trivial readme change, testing out repo and github mirror following git... master
Robbie Gemmell [Fri, 14 Dec 2018 11:13:10 +0000 (11:13 +0000)] 
NO-JIRA: trivial readme change, testing out repo and github mirror following git-wip-us to gitbox migration

8 months agoQPID-8170: Add build and install stages
Justin Ross [Sat, 21 Apr 2018 21:27:18 +0000 (14:27 -0700)] 
QPID-8170: Add build and install stages

8 months agoQPID-8170: Add a basic Jenkinsfile for a CI job
Justin Ross [Sat, 21 Apr 2018 21:11:30 +0000 (14:11 -0700)] 
QPID-8170: Add a basic Jenkinsfile for a CI job

10 months agoNO-JIRA: update release helper notes
Robbie Gemmell [Wed, 14 Mar 2018 12:40:31 +0000 (12:40 +0000)] 
NO-JIRA: update release helper notes

12 months agoNO-JIRA: update year in NOTICE file
Robbie Gemmell [Wed, 17 Jan 2018 10:23:28 +0000 (10:23 +0000)] 
NO-JIRA: update year in NOTICE file

13 months agoQPID-8051, QPID-8052: update versions for 1.38.0-SNAPSHOT
Robert Gemmell [Wed, 22 Nov 2017 19:08:20 +0000 (19:08 +0000)] 
QPID-8051, QPID-8052: update versions for 1.38.0-SNAPSHOT

13 months agoQPID-8051: update versions for 1.37.0-rc1 1.37.0 1.37.0-rc1
Robert Gemmell [Wed, 22 Nov 2017 19:04:19 +0000 (19:04 +0000)] 
QPID-8051: update versions for 1.37.0-rc1

13 months agoQPID-8051: actually type the command correctly
Robbie Gemmell [Wed, 22 Nov 2017 18:43:08 +0000 (18:43 +0000)] 
QPID-8051: actually type the command correctly

13 months agoQPID-8051: update the notes to use setup.py sdist for creating the archive
Robbie Gemmell [Wed, 22 Nov 2017 18:37:39 +0000 (18:37 +0000)] 
QPID-8051: update the notes to use setup.py sdist for creating the archive

13 months agoQPID-8051: add some initial notes on releasing
Irina Boverman [Wed, 22 Nov 2017 16:24:16 +0000 (11:24 -0500)] 
QPID-8051: add some initial notes on releasing

13 months agoQPID-7833: always include the qpid-python-test.bat file
Irina Boverman [Thu, 27 Jul 2017 00:36:04 +0000 (20:36 -0400)] 
QPID-7833: always include the qpid-python-test.bat file

17 months agoQUID-7884: Python client should not raise on close() after stop.
Alan Conway [Wed, 9 Aug 2017 20:06:35 +0000 (16:06 -0400)] 
QUID-7884: Python client should not raise on close() after stop.

The python client throws exceptions out of AMQP object methods (Connection, Session and Link objects) if the selector has been stopped, to prevent hanging (see QPID-7317 Deadlock on publish)

However to be robust to shut-down order, the close() method should not throw an exception in this case, but should be a no-op.

19 months agoQPID-7809: Python 0-10 messaging driver does not handle heartbeat timeouts, "assert...
Kim van der Riet [Wed, 7 Jun 2017 20:35:06 +0000 (16:35 -0400)] 
QPID-7809: Python 0-10 messaging driver does not handle heartbeat timeouts, "assert rcv.received < rcv.impending" occurs

22 months agoQPID-2524: Always use the file:// prefix
Justin Ross [Sat, 11 Mar 2017 20:51:38 +0000 (12:51 -0800)] 
QPID-2524: Always use the file:// prefix

22 months agoQPID-7691: Bump the version on master
Justin Ross [Sat, 4 Mar 2017 00:39:34 +0000 (16:39 -0800)] 
QPID-7691: Bump the version on master

23 months agoQPID-7317: More robust qpid.selector with better logging
Alan Conway [Thu, 9 Feb 2017 16:12:56 +0000 (11:12 -0500)] 
QPID-7317: More robust qpid.selector with better logging

This commit disables the selector and related qpid.messaging objects when the
selector thread exits for any reason: process exit, fork, exception etc.  Any
subsequent use will throw an exception and log the locations of the failed call
and where the selector thread was stopped. This should be slightly more
predictable & robust than commit 037c573 which tried to keep the selector alive
in a daemon thread.

I have not been able to hang the pulp_smash test suite with this patch. The new
logging shows that celery workers do sometimes use qpid.messaging in an illegal
state, which could cause the reported hang. So far I have not seen a stack trace
that is an exact match for reported stacks. If this patch does not address the
pulp problem it should at least provide much better debugging information in
journalctl log output after the hang.

2 years agoNO-JIRA: update year in NOTICE file
Robert Gemmell [Tue, 17 Jan 2017 12:24:31 +0000 (12:24 +0000)] 
NO-JIRA: update year in NOTICE file

2 years agoQPID-7588: [Python Test Suite] Fix interpret-time problem introduced by 7e0e81b17511
Keith Wall [Wed, 28 Dec 2016 16:06:00 +0000 (16:06 +0000)] 
QPID-7588: [Python Test Suite] Fix interpret-time problem introduced by 7e0e81b17511

2 years agoQPID-7588: [Python Test Suite] [0-8..0-91] Allow message receive timeouts to be...
Keith Wall [Fri, 23 Dec 2016 16:26:32 +0000 (16:26 +0000)] 
QPID-7588: [Python Test Suite] [0-8..0-91]  Allow message receive timeouts to be configured from the command line (-D) to accomodate slower CI environments

2 years agoQPID-7317: Fix hangs in qpid.messaging.
Alan Conway [Fri, 23 Sep 2016 21:23:55 +0000 (17:23 -0400)] 
QPID-7317: Fix hangs in qpid.messaging.

Hang is observed in processes using qpid.messaging with a thread blocked waiting
for the Selector to wake it, but no Selector.run thread.

This patch removes all the known ways that this hang can occur. Either we
function normally or immediately raise an exception and log to the
"qpid.messaging" logger a message starting with "qpid.messaging:"

The following issues are fixed:

1. The Selector.run() thread raises a fatal exception.

Use of qpid.messaging will re-raise the exception immediately, not hang.

2. The process forks, so child has no Selector thread.

https://issues.apache.org/jira/browse/QPID-5637 resets the Selector after a fork.
In addition we now:

- Close Selector.waiter: its file descriptors are shared with the parent which
  can cause havoc if they "steal" each other's wakeups.

- Replace Endpoint._lock in related endpoints with a BrokenLock. If the parent
  is holding locks when it forks, they remain locked forever in the child.
  BrokenLock.acquire() raises instead of hanging.

3. Selector.stop() called on atexit.

Selector.stop was registered via atexit, which could cause a hang if
qpid.messaging was used in a later-executing atexit function. That has been
removed, Selector.run() is in a daemon thread so there is no need for stop()

4. User calls Selector.stop() directly

There is no reason to do this for the default Selector used by qpid.messaging,
so for that case stop() is now ignored. It works as before for code that creates
its own qpid.Selector instances.

2 years agoQPID-7429 [Python Client 0-8..0-91] Prevent Client from leaking threads when connecti...
Alex Rudyy [Wed, 14 Sep 2016 15:13:08 +0000 (16:13 +0100)] 
QPID-7429 [Python Client 0-8..0-91] Prevent Client from leaking threads when connection is closed remotely

2 years agoQPID-7424: [Python Client 0-8..0-91] Raise Closed exception to application when conne...
Alex Rudyy [Wed, 14 Sep 2016 14:08:29 +0000 (15:08 +0100)] 
QPID-7424: [Python Client 0-8..0-91] Raise Closed exception to application when connection is remotely closed.

If application is blocking a on an incoming queue we now raise a Closed exception to notify it in case the connection is closed

2 years agoQPID-7423: Use generator expression for chunking of big content
Alex Rudyy [Wed, 14 Sep 2016 10:57:32 +0000 (11:57 +0100)] 
QPID-7423: Use generator expression for chunking of big content

2 years agoQPID-7423: Fix identation problem introduced by last commit (5c237dc)
Keith Wall [Mon, 12 Sep 2016 08:12:41 +0000 (09:12 +0100)] 
QPID-7423: Fix identation problem introduced by last commit (5c237dc)

2 years agoQPID-7423: [Python Client 0-8..0-91] Chunk large content into many frames sized accor...
Keith Wall [Sun, 11 Sep 2016 17:23:17 +0000 (18:23 +0100)] 
QPID-7423: [Python Client 0-8..0-91] Chunk large content into many frames sized according to the frame size agreed by connection tune.

* Added supporting tests too

0-10 paths unchanged by this commit

2 years agoQPID-7354: Update versions on master after branching for 1.35.0
Justin Ross [Mon, 8 Aug 2016 23:04:36 +0000 (16:04 -0700)] 
QPID-7354: Update versions on master after branching for 1.35.0

2 years agoNO-JIRA: Remove some undesirable escapes
Justin Ross [Mon, 8 Aug 2016 22:13:06 +0000 (15:13 -0700)] 
NO-JIRA: Remove some undesirable escapes

2 years agoNO-JIRA: Spruce up the Python readme
Justin Ross [Mon, 8 Aug 2016 18:38:15 +0000 (11:38 -0700)] 
NO-JIRA: Spruce up the Python readme

2 years agoMerge PR for readme update. This closes #1.
Robert Gemmell [Mon, 11 Jul 2016 09:34:38 +0000 (10:34 +0100)] 
Merge PR for readme update. This closes #1.

2 years agoQPID-7207: further trivial update, remove stale description and link to site. Testing... 1/head
Robert Gemmell [Mon, 11 Jul 2016 09:30:41 +0000 (10:30 +0100)] 
QPID-7207: further trivial update, remove stale description and link to site. Testing GitHub integration.

2 years agoQPID-7207: trivial fixup, mainly testing out the JIRA integration following move...
Robert Gemmell [Mon, 11 Jul 2016 09:04:54 +0000 (10:04 +0100)] 
QPID-7207: trivial fixup, mainly testing out the JIRA integration following move to git

2 years agoQPID-7258: [Python Client for AMQP 0-8...0-9-1] Remove superfluous import (review...
Lorenz Quack [Fri, 13 May 2016 08:17:20 +0000 (08:17 +0000)] 
QPID-7258: [Python Client for AMQP 0-8...0-9-1] Remove superfluous import (review comment from @kwall)

2 years agoQPID-7259: delay adding transfers to completed set until we have verified queue is...
Gordon Sim [Thu, 12 May 2016 11:30:07 +0000 (11:30 +0000)] 
QPID-7259: delay adding transfers to completed set until we have verified queue is empty

2 years agoQPID-7258: Python Client for AMQP 0-8...0-9-1] Perform
Lorenz Quack [Wed, 11 May 2016 14:24:07 +0000 (14:24 +0000)] 
QPID-7258: Python Client for AMQP 0-8...0-9-1] Perform
 hostname verification of tls connections

* hostname verification is performed by default.
* introduce connection_option "ssl_skip_hostname_check" to disable this feature
* hostname verification will throw an ImportError on Python <2.6

2 years agoQPID-7251: [Python Client] fix explicit setting of mechanism and/or response on AMQP...
Lorenz Quack [Tue, 10 May 2016 12:55:55 +0000 (12:55 +0000)] 
QPID-7251: [Python Client] fix explicit setting of mechanism and/or response on AMQP 0-8 and 0-9

2 years agoQPID-7207: Improve the Qpid Python install and test instructions
Justin Ross [Thu, 21 Apr 2016 18:08:03 +0000 (18:08 +0000)] 
QPID-7207: Improve the Qpid Python install and test instructions

2 years agoQPID-7222: Make python test qpid_tests.broker_0_10.message.MessageTests.test_release_...
Alex Rudyy [Thu, 21 Apr 2016 15:33:21 +0000 (15:33 +0000)] 
QPID-7222: Make python test qpid_tests.broker_0_10.message.MessageTests.test_release_order to fetch explicitly required number of messages before sending accept/release in order to make sure that released messages are not resend back by the broker

2 years agoQPID-7207: Add Qpid Python install directions; markdownify the readme; remove an...
Justin Ross [Thu, 21 Apr 2016 12:51:25 +0000 (12:51 +0000)] 
QPID-7207: Add Qpid Python install directions; markdownify the readme; remove an obsolete file

2 years agoQPID-7207: Create independent cpp and python subtrees, with content from tools and...
Justin Ross [Thu, 21 Apr 2016 12:31:34 +0000 (12:31 +0000)] 
QPID-7207: Create independent cpp and python subtrees, with content from tools and extras

2 years agoQPID-7180: [Python Test Suite] Adapt broker url to match expectations of the C++...
Keith Wall [Sat, 2 Apr 2016 22:28:45 +0000 (22:28 +0000)] 
QPID-7180: [Python Test Suite] Adapt broker url to match expectations of the C++ client if swigged client is in-use

2 years agoQPID-7053: Add a callback that is invoked when asynchronous errors are
Ken Giusti [Tue, 16 Feb 2016 19:54:43 +0000 (19:54 +0000)] 
QPID-7053: Add a callback that is invoked when asynchronous errors are
detected by the background thread.
QPID-7064: Improve documentation of the asynchronous error callbacks.

3 years agoNO-JIRA: update year in NOTICE files (for bits perhaps looking to get released soon...
Robert Gemmell [Wed, 6 Jan 2016 16:08:41 +0000 (16:08 +0000)] 
NO-JIRA: update year in NOTICE files (for bits perhaps looking to get released soon, rest needs a tidy up).

3 years agoQPID-6839: python-qpid: Log the failure of the Selector thread
Ken Giusti [Wed, 11 Nov 2015 22:45:42 +0000 (22:45 +0000)] 
QPID-6839: python-qpid: Log the failure of the Selector thread

3 years agoNO-JIRA: Fix for python client ValueError exception. see bz1249608
Ernest Allen [Wed, 2 Sep 2015 16:58:28 +0000 (16:58 +0000)] 
NO-JIRA: Fix for python client ValueError exception. see bz1249608

3 years agoNO-JIRA: update version numbers/dates
Robert Gemmell [Thu, 25 Jun 2015 11:00:15 +0000 (11:00 +0000)] 
NO-JIRA: update version numbers/dates

3 years agoQPID-6326 Don't automatically search for exchanges and queues with each request
Ernest Allen [Fri, 12 Jun 2015 16:01:05 +0000 (16:01 +0000)] 
QPID-6326 Don't automatically search for exchanges and queues with each request

3 years agoQPID-6297: Python client should reconnect after network glitch
Ernest Allen [Wed, 10 Jun 2015 17:11:49 +0000 (17:11 +0000)] 
QPID-6297: Python client should reconnect after network glitch

3 years agoQPID-6567: [Python Client] Centralise responsibilities for flow_control_wait_conditio...
Keith Wall [Tue, 9 Jun 2015 08:29:52 +0000 (08:29 +0000)] 
QPID-6567: [Python Client] Centralise responsibilities for flow_control_wait_condition lock used on the 08..091 path

3 years agoQPID-6567: [Python Client 0-8..0-91] ensure client won't send messages after/before...
Alex Rudyy [Fri, 5 Jun 2015 13:37:53 +0000 (13:37 +0000)] 
QPID-6567: [Python Client 0-8..0-91] ensure client won't send messages after/before sending flow-ok on suspending/resuming respectively. work by Lorenz Quack <quack.lorenz@gmail.com>

3 years agoQPID-6567: [Python Client 0-8..0-91] send flow-ok on receiving flow command. work...
Alex Rudyy [Fri, 5 Jun 2015 10:51:23 +0000 (10:51 +0000)] 
QPID-6567: [Python Client 0-8..0-91] send flow-ok on receiving flow command. work by Lorenz Quack <quack.lorenz@gmail.com>

3 years agoQPID-6567: [Python Client 0-8..0-91] Support producer side flow control in the Python...
Keith Wall [Wed, 3 Jun 2015 21:45:58 +0000 (21:45 +0000)] 
QPID-6567: [Python Client 0-8..0-91] Support producer side flow control in the Python client

* Like the Qpid Java Client, this implementation does not send channel.flow-ok.

Work by Lorenz Quack <quack.lorenz@gmail.com>

3 years agoNO-JIRA: Add into ant script for running python tests a condition to wait for a READY...
Alex Rudyy [Mon, 20 Apr 2015 15:02:40 +0000 (15:02 +0000)] 
NO-JIRA: Add into ant script for running python tests a condition to wait for a READY entry in Java Broker log file

3 years agoQPID-6474: [Python Client] 08..09 Prevent Client.close ending in exception if start...
Keith Wall [Mon, 6 Apr 2015 09:17:52 +0000 (09:17 +0000)] 
QPID-6474: [Python Client] 08..09 Prevent Client.close ending in exception if start has not been called

3 years agoQPID-6475: [Python Client] 08..09 Send connection.close before closing socket
Keith Wall [Fri, 3 Apr 2015 16:57:34 +0000 (16:57 +0000)] 
QPID-6475: [Python Client] 08..09 Send connection.close before closing socket

3 years agoQPID-6474: [Python Client] Prevent client connection thread leaks on the 08..09 code...
Keith Wall [Fri, 3 Apr 2015 15:51:57 +0000 (15:51 +0000)] 
QPID-6474: [Python Client] Prevent client connection thread leaks on the 08..09 code path

3 years agoQPID-6473: [Python Client] Replace old style exception syntax on a number of paths...
Keith Wall [Fri, 3 Apr 2015 13:33:59 +0000 (13:33 +0000)] 
QPID-6473: [Python Client] Replace old style exception syntax on a number of paths through 08..0-9 code

3 years agoQPID-6445: Revert the error checking code to *not* close, as this was causing the...
Ernest Allen [Fri, 13 Mar 2015 13:41:10 +0000 (13:41 +0000)] 
QPID-6445: Revert the error checking code to *not* close, as this was causing the recursion problem

3 years agoQPID-6429, QPID-6262, QPID-5818: [Java Broker] Utilise NIO, service connections using...
Keith Wall [Thu, 12 Mar 2015 15:41:46 +0000 (15:41 +0000)] 
QPID-6429, QPID-6262, QPID-5818: [Java Broker] Utilise NIO, service connections using a thread pool, AMQP model mutating actions should use task executors

Work of Rob Godfrey and myself.

3 years agoQPID-6405: Dont't use a Python Conditional Expression to maintain compatibility with...
Keith Wall [Sun, 1 Mar 2015 07:33:14 +0000 (07:33 +0000)] 
QPID-6405: Dont't use a Python Conditional Expression to maintain compatibility with Python 2.4

3 years agoQPID-6405: [Python Client] Fallback if pkg_resources is not available.
Keith Wall [Mon, 23 Feb 2015 11:52:12 +0000 (11:52 +0000)] 
QPID-6405: [Python Client] Fallback if pkg_resources is not available.

3 years agoQPID-6405: [Python Client] Retreive package version number from pkg_resources and...
Keith Wall [Sun, 22 Feb 2015 08:20:35 +0000 (08:20 +0000)] 
QPID-6405: [Python Client] Retreive package version number from pkg_resources and report to the peer at connection time using version/qpid.client_version connection property

3 years agoQPID-5799: provide notification callback for received messages.
Ken Giusti [Wed, 11 Feb 2015 15:12:54 +0000 (15:12 +0000)] 
QPID-5799: provide notification callback for received messages.

3 years ago[QPID-5823]: Python client should create a node with name starting '\#', allow custom...
Pavel Moravec [Sun, 1 Feb 2015 10:24:31 +0000 (10:24 +0000)] 
[QPID-5823]: Python client should create a node with name starting '\#', allow customization of autoDel and excl flags

4 years agoQPID-6197: Allow unicode values in connection response field
Ernest Allen [Mon, 12 Jan 2015 14:21:34 +0000 (14:21 +0000)] 
QPID-6197: Allow unicode values in connection response field

4 years agoQPID-6116: [Python Client 0-8..0-9] Fix spelling error in new method name
Keith Wall [Fri, 3 Oct 2014 10:34:35 +0000 (10:34 +0000)] 
QPID-6116: [Python Client 0-8..0-9] Fix spelling error in new method name

4 years agoQPID-6116: [Python Client 0-8..0-9] Allow fallback to anon/external sasl if no creden...
Keith Wall [Wed, 1 Oct 2014 12:19:43 +0000 (12:19 +0000)] 
QPID-6116: [Python Client 0-8..0-9] Allow fallback to anon/external sasl if no credentials are provided

4 years agoNO-JIRA: fix syntax for older python versions (and consistent with style used in...
Gordon Sim [Tue, 30 Sep 2014 12:45:40 +0000 (12:45 +0000)] 
NO-JIRA: fix syntax for older python versions (and consistent with style used in other modules in this package)

4 years agoQPID-6116: ensure new packages are installed
Gordon Sim [Fri, 26 Sep 2014 15:27:15 +0000 (15:27 +0000)] 
QPID-6116: ensure new packages are installed

4 years agoQPID-6116: [Python Client 08..091] Add ability to negotiate SASL mechanism and add...
Keith Wall [Thu, 25 Sep 2014 14:40:31 +0000 (14:40 +0000)] 
QPID-6116: [Python Client 08..091] Add ability to negotiate SASL mechanism and add pure python implementations for SCRAM/CRAM/PLAIN mechanisms

4 years agoQPID-6117: [Python Client 0-8..0-9] Ignore socket.error ENOTCONN when trying to shutd...
Keith Wall [Thu, 25 Sep 2014 14:39:40 +0000 (14:39 +0000)] 
QPID-6117: [Python Client 0-8..0-9] Ignore socket.error ENOTCONN when trying to shutdown a socket to prevent spurious exception when socket closed by peer

4 years agoQPID-6109: don't require password to be specified to allow PLAIN
Gordon Sim [Fri, 19 Sep 2014 15:30:29 +0000 (15:30 +0000)] 
QPID-6109: don't require password to be specified to allow PLAIN

4 years agoQPID-6110: Add manifest includes for license and notice files
Justin Ross [Fri, 19 Sep 2014 11:35:34 +0000 (11:35 +0000)] 
QPID-6110: Add manifest includes for license and notice files

4 years agoQPID-6081, QPID-6082: [Python Client Tests] Add python tests for verifying the receip...
Keith Wall [Fri, 12 Sep 2014 13:25:49 +0000 (13:25 +0000)] 
QPID-6081, QPID-6082: [Python Client Tests] Add python tests for verifying the receipt of large messages occupying more than one frame (08-091)

4 years agoQPID-6086: [Python Client] 08..091 Add support for SSL and client cert authentication
Keith Wall [Sat, 6 Sep 2014 22:06:57 +0000 (22:06 +0000)] 
QPID-6086: [Python Client] 08..091 Add support for SSL and client cert authentication

4 years agoQPID-6085: [Python client] 08..091 implement sending/receiving of additional property...
Keith Wall [Sat, 6 Sep 2014 22:06:41 +0000 (22:06 +0000)] 
QPID-6085: [Python client] 08..091 implement sending/receiving of additional property types

4 years agoQPID-6084: [Python Client] Guard use of sys.argv when constructing connection properties
Keith Wall [Sat, 6 Sep 2014 22:06:20 +0000 (22:06 +0000)] 
QPID-6084: [Python Client] Guard use of sys.argv when constructing connection properties

4 years agoQPID-6083: [Python Client] utilise pathname2url when constructing spec file location...
Keith Wall [Sat, 6 Sep 2014 22:06:05 +0000 (22:06 +0000)] 
QPID-6083: [Python Client] utilise pathname2url when constructing spec file location on older python versions

4 years agoQPID-6082: [Python Client] 08..091 Explicitly set incoming queue to guard method...
Keith Wall [Sat, 6 Sep 2014 22:05:50 +0000 (22:05 +0000)] 
QPID-6082: [Python Client] 08..091 Explicitly set incoming queue to guard method interleaving

4 years agoQPID-6081: [Python Client] 08..091 Ensure that multiframe bodies are received correctly
Keith Wall [Sat, 6 Sep 2014 22:05:30 +0000 (22:05 +0000)] 
QPID-6081: [Python Client] 08..091 Ensure that multiframe bodies are received correctly

4 years agoNO-JIRA: Fix qpid/python/qpid/messaging/driver.py to work on python 2.4.
Alan Conway [Thu, 4 Sep 2014 20:44:46 +0000 (20:44 +0000)] 
NO-JIRA: Fix qpid/python/qpid/messaging/driver.py to work on python 2.4.

4 years agoQPID-5975: HA extra/missing messages when running qpid-txtest2 in a loop with failover.
Alan Conway [Thu, 28 Aug 2014 21:47:44 +0000 (21:47 +0000)] 
QPID-5975: HA extra/missing messages when running qpid-txtest2 in a loop with failover.

This is partly not-a-bug, there is a client error handling issue that has been
corrected.

qpid-txtest2 initializes a queue with messages at the start and drains the
queues at the end. These operations are *not transactional*. Therefore
duplicates are expected if there is a failover during initialization or
draining. When duplicates were observed, there was indeed a failover at one of
these times.

Making these operations transactional is not enough to pass, now we see the test
fail with "no messages to fetch". This is explained as follows:

If there is a failover during a transaction, TransactionAborted is raised. The
client assumes the transaction was rolled back and re-plays it. However, if the
failover occurs at a critical point *after* the client has sent commit
but *before* it has received a response, then the the client *does not know*
whether the transaction was committed or rolled-back on the new primary.

Re-playing in this case can duplicate the transaction. Each transaction moves
messages from one queue to another so as long as transactions are atomic the
total number of messages will not change. However, if transactions are
duplicated, a transactional session may try to move more messages than exist on
the queue, hence "no messages to fetch". For example if thread 1 moves N
messages from q1 to q2, and thread 2 tries to move N+M messages back, then
thread 2 will fail.

This problem has been corrected as follows: C++ and python clients now raise the
following exceptions:

- TransactionAborted: The transaction has definitely been rolled back due to a
  connection failure before commit or a broker error (e.g. a store error) during commit.
  It can safely be replayed.

- TransactionUnknown: The transaction outcome is unknown because the connection
  failed at the critical time. There's no simple automatic way to know what
  happened without examining the state of the broker queues.

Unfortunately With this fix qpid-txtest2 is no longer useful test for TX
failover because it regularly raises TransactionUnknown and there's not much we
can do with that.

A better test of TX atomicity with failover is to run a pair of
qpid-send/qpid-receive with fail-over and verify that the number of
enqueues/dequeues and message depth are a multiple of the transaction size. See
the JIRA for such a test. (Note these test also sometimes raise
TransactionUnknown but it doesn't matter since all we are checking is that
messages go on and off the queues in multiple of the TX size.)  )

Note: the original bug also reported seeing missing messages from
qpid-txtest2. I don't have a good explanation for that but since the
qpid-send/receive test shows that transactions are atomic I am going to let that
go for now.

4 years agoQPID-5813: fix up LICENSE + NOTICE etc files
Robert Gemmell [Wed, 27 Aug 2014 10:11:31 +0000 (10:11 +0000)] 
QPID-5813: fix up LICENSE + NOTICE etc files

4 years agoNO-JIRA: Fix timeout on python messaging.Session.commit and rollback
Alan Conway [Fri, 22 Aug 2014 14:13:05 +0000 (14:13 +0000)] 
NO-JIRA: Fix timeout on python messaging.Session.commit and rollback

Fix both to take timeout arg and raise Timeout exception if timeout expires.

4 years agoQPID-5813: Advance version numbers on trunk to 0.29
Justin Ross [Thu, 7 Aug 2014 20:18:36 +0000 (20:18 +0000)] 
QPID-5813: Advance version numbers on trunk to 0.29

4 years agoNO-JIRA: Strengthen ant python test wrapper to ensure that ant will fail if it fails...
Keith Wall [Wed, 30 Jul 2014 09:52:06 +0000 (09:52 +0000)] 
NO-JIRA: Strengthen ant python test wrapper to ensure that ant will fail if it fails to identify the pid of the broker\'s process

4 years ago[QPID-5852]: connection.opened() returns True after unsuccessful connection (fixing...
Pavel Moravec [Thu, 24 Jul 2014 20:18:56 +0000 (20:18 +0000)] 
[QPID-5852]: connection.opened() returns True after unsuccessful connection (fixing regression infested by previous commit)

4 years agoQPID-5923: check requested node type when handling delete
Gordon Sim [Thu, 24 Jul 2014 13:48:30 +0000 (13:48 +0000)] 
QPID-5923: check requested node type when handling delete

4 years agoQPID-5921: add missing clause to resolution logic for when only exchange exists but...
Gordon Sim [Thu, 24 Jul 2014 13:48:22 +0000 (13:48 +0000)] 
QPID-5921: add missing clause to resolution logic for when only exchange exists but queue create was requested

4 years agoQPID-5888: transaction should always be aborted on failover
Alan Conway [Fri, 18 Jul 2014 18:18:42 +0000 (18:18 +0000)] 
QPID-5888: transaction should always be aborted on failover

C++ and python clients were attempting to continue the transation transparently
after failover which is in correct. They were re-sending messages in the
transaction but there is no way to re-do transactional receives. The transaction
must be aborted.

The C++ and python clients have been modified to kill a transactional session
with a TransactionAborted exception if there is a failover.

Note the Java client already behaves correctly but not identically.
It defers raising an exception until commit rather than failing
immediately on failover, and the session can still be used.

The following commits are involved:

r1611349 QPID-5887: revised approach to implict abort
r1610959 QPID-5887: allow qpid-txtest2 to be run by make test
r1610958 QPID-5887: fix to new txtest2, acknowledge messages in the check phase to ensure queues remain drained for any subsequent runs
r1609748 QPID-5887: abort transactional session on failover; added equivalent of txtest using messaging API

This commit does the following:

- Update ha_tests.py tx_simpler_failover test to expect transaction aborted.
- Minor improvements to qpid-txtest2
- Fix native (non-swig) python client.

4 years agoQPID-5894: force cert checking if user specifically asks to verify the remote's hostname.
Ken Giusti [Fri, 18 Jul 2014 15:21:37 +0000 (15:21 +0000)] 
QPID-5894: force cert checking if user specifically asks to verify the remote's hostname.

4 years agoQPID-5850: Support for long session names (patch from Ernie Allen)
Gordon Sim [Wed, 16 Jul 2014 14:09:41 +0000 (14:09 +0000)] 
QPID-5850: Support for long session names (patch from Ernie Allen)

4 years ago[QPID-5823]: Python client should create a node with name starting '\#'
Pavel Moravec [Mon, 7 Jul 2014 06:53:25 +0000 (06:53 +0000)] 
[QPID-5823]: Python client should create a node with name starting '\#'

4 years ago[QPID-5864]: [Python client] Provide better error description when SASL required...
Pavel Moravec [Tue, 1 Jul 2014 14:09:05 +0000 (14:09 +0000)] 
[QPID-5864]: [Python client] Provide better error description when SASL required but no credentials provided

4 years ago[QPID-5852]: [Python client] connection.opened() returns True after unsuccessful...
Pavel Moravec [Thu, 26 Jun 2014 17:00:04 +0000 (17:00 +0000)] 
[QPID-5852]: [Python client] connection.opened() returns True after unsuccessful connection

4 years agoQPID-5836: [Python client] Report error when encountering unrecognized connection...
Pavel Moravec [Thu, 26 Jun 2014 08:42:04 +0000 (08:42 +0000)] 
QPID-5836: [Python client] Report error when encountering unrecognized connection option

4 years agoQPID-5830: [Python client] Unable to create bindings on already existing broker objec...
Pavel Moravec [Wed, 18 Jun 2014 13:20:44 +0000 (13:20 +0000)] 
QPID-5830: [Python client] Unable to create bindings on already existing broker objects using addressing

4 years agoQPID-5823: (reverting commit r1602820) Python client should create a node with name...
Pavel Moravec [Mon, 16 Jun 2014 09:57:40 +0000 (09:57 +0000)] 
QPID-5823: (reverting commit r1602820) Python client should create a node with name starting '\#'

4 years agoQPID-5823: Python client should create a node with name starting '\#'
Pavel Moravec [Mon, 16 Jun 2014 08:09:42 +0000 (08:09 +0000)] 
QPID-5823: Python client should create a node with name starting '\#'

4 years agoRevert "QPID-5812: python high level API client receiver.fetch(timeout=N) blocks...
Andrew Stitcher [Thu, 12 Jun 2014 22:00:10 +0000 (22:00 +0000)] 
Revert "QPID-5812: python high level API client receiver.fetch(timeout=N) blocks forever in select() if broker is stopped (kill -STOP)"

This reverts commit r1602221 As it breaks the C++ tests:
- python_tests
- federation_sys_tests
- legacystore_python_tests

4 years agoQPID-5812: python high level API client receiver.fetch(timeout=N) blocks forever...
Pavel Moravec [Thu, 12 Jun 2014 16:27:19 +0000 (16:27 +0000)] 
QPID-5812: python high level API client receiver.fetch(timeout=N) blocks forever in select() if broker is stopped (kill -STOP)