| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
This commit disposes of the amqpc library and moves the functions into the
qpidmessaging library. Now any client that loads qpidmessaging gets amqp0-10
and amqp1.0 selectable through the connection protocol option. C++ brokers
still must load the amqp library to enable 1.0 support.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1529235 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
At the end of this test, receivers read remaining messages on queues.
Previously the test limited the max depth at 1024, but this was
too high on some slower machines and caused a timeout. The test now
limits the max depth to 50, which seems to work on a range of machines.
There's no impact on the effectiveness of the test for failover.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1523094 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Appears to have been fixed at this point on trunk, not clear which checkins are
responsible. Test ran for 48 hours with no failures.
Other minor changes:
- Enable test_failover_send_receive
- Increase heartbeat interval.
- Reduce capacity of senders in failover test to be more aggressive.
- Use HaBrokerTest as test base
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1522711 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1520108 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- Backups delete transactions on failover.
- TxReplicator cancel subscriptions when transaction is finished.
- TxReplicator rollback if destroyed prematurely.
- Handle special case of no backups for a tx.
- ha_tests.py: new and modified tests to cover the new functionality.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1518982 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On primary a PrimaryTxObserver observes a transaction's TxBuffer and generates
transaction events on a tx-replication-queue. On the backup a TxReplicator
receives the events and constructs a TxBuffer equivalent to the one in the
primary.
Unfinished:
- Primary does not wait for backups to prepare() before committing.
- All connected backups are assumed to be in the transaction, there are race
conditions around brokers joining/leavinv where this assumption is invalid.
- Need more tests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1509423 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
Added TransactionObserver interface, called at each point in a transaction's
lifecycle. Currently only a single observer can be associated with a
transaction.
Added startTx, startDtx to BrokerObserver so plugins can observe transactions
starting and set a TransactionObserver.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1509421 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1509418 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test failing if run as: ha_tests.py -DDURATION=2
AssertionError: Stalled test0 waiting for 248, sent 1228
The problem was a missing call to notify() when a ReplicatingSubscription
skipped a message. That resulted in very long (>1s) delays between skipped
messages which caused the test to time out.
Changes:
- ReplicatingSubscription::deliver call notify() to keep consumer active.
- Re-enable test_failover_send_receive.
- Increase default credit for replicating subscription to match qpid-send.
- Rename ReplicatingSubscription::unacked as unready, clearer meaning.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1499789 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1499788 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
specified
- If more than one address is specified or implied by the defaults the broker
will log a warning
- This is intended to avoid testing problems where the broker fails to connect
to the port of subsequent listening addresses
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1494656 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Added an optional timeout parameter to Connection.establish.
Set a timeout of 5 seconds in brokertest.py to prevent hanging tests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1487578 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many HA tests use --port=0 to start a broker on an available port, but then need
to shutdown and restart the broker on the same port. This is not safe, on a busy
system it is possible for another process to take the port between the time the
broker is shut down and the time it is restarted.
The solution is to do bind(0) and listen in the python test framework (class
HaPort) and let the broker use the socket using qpidd --socket-fd. When the
broker is shut down the port remains bound by the python process. When the
broker is re-started it again is given access to the socket via --socket-fd.
Other changes
- move ha_store_tests into ha_tests.
- add heartbeats to avoid stalling.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1482881 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
available.
Tests that use qmf.console will print a skip message if it is not available.
For example: they may not be available when building from a distro rather than a
checkout.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1457097 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1456621 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
Clean up cluster obsolete code in brokertest.py.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1428634 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Fixed a race conndition that was causing false failures of the form "expected an
error".
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1418417 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Subscribed auto-delete queues are deleted by the backup.
Timed auto-delete queues are deleted after the timeout.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1397243 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
When re-starting a persistent HA cluster, the broker that becomes primary should
keep its store data while all the backup brokers should discard their store data
and catch up from the primary. Backups cannot simply use their own stores
because sequence numbers of stored messages will not match on all brokers. The
backup erases individual queues and exchanges as the catch-up process gets to
them.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1390123 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
unacknowledged messages is deleted
- Extended ha_test.py test_failover_send_receive to kill backup as well as primary
- QueueRegistry::destroy was not calling observer.
- Primary removes disconnected brokers backups and expectedBackups
- Primary calls checkReady in all cases where broker is removed from expectedBackups
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1384882 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
ReplicatingSubscription syncs the primary and backup queues, and does not
re-send messages that are already on the backup.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1351481 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- Fix fencepost error in getFirstSafe()
- QueueGuard::attach completes messages before the ReplicatingSubscription postion
- Fix minor test issues in brokertest.py and ha_test.py.
- ReplicatingSubscription check for ready in acknowledge not dispatch.
- HA test fix: retry wait_status retry on ConnectErrors, broker may not be up.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1351435 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- Enabled 10 queue failover test
- Minor cleanup in types.h
- Rewording, adding comments.
- Detect and reject invalid replication values.
- Cleaned up some unnecessary #includes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1351434 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- Simplify QueueGuard::firstSafe calculation.
- Fix error in setting initial queues - was not checking if replicated.
- Send ready status to backups. Tests hang, deadlock in opened()->RemoteBackup on primary?
- Fix deadlock in QueueGuard.
- Don't start guards inside ConnectionObserver::opened.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1349547 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- Remove nested calls between QueueGuard::dequeued and ReplicatingSubscription
- ReplicatingSubscription can't start ahead of QueueGuard::getReadyPosition()
- Fix QueueGuard firstSafe calcultatoin
- Replace DequeueRemover with DequeueScanner in ReplicatingSubscription
- Removed bad assertions in ReplicatingSubscription and QueueGuard
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1349544 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
The primary creates RemoteBackup object for each connected or expected
backup. On first being promoted, the new primary has a RemoteBackup
for each of the known backups at the time of the failure.
The RemoteBackup manages queue guards for its backup and
tracks it's readiness.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1349540 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
QueueGuard: implements QueueObserver to delay completion of new messages.
ReplicatingSubscription: Implements subscription, sends messages & events to backup.
These were previously combined as one. QueueGuard is now separated out
so that it can be created before the ReplicatingSubscription, in
anticipation of an expected backup connecting. This is needed for 2 reasons:
- new queues must be guarded until they are backuped up.
- after a failover, all queues must be guarded until backups are ready.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1349538 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1343348 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Introduce HA broker state machien
- Inform backup queues when ready.
- Incomplete implementation of backup ready check.
- does not count correctly after a failover, see countUnready.
- Existing replicator bridges updated out of sync with BrokerReplicator initialize.
- Does not handle multi-messages responses.
- Newly promoted HA primary waits for backups to be ready before accepting clients.
- Uniform log prefixes for HA messages.
- qpid-ha tests, call qpid-ha python code directly.
- Move excluder from Backup to HaBroker, it is also used in PROMOTING.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1338889 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1327518 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1327137 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
Updated priority and lvq queues to keep acquired messages, and supply
them to browsers if requested. This is necessary so replicating
subscriptions can back-up these queue types without message loss.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1307582 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Merged from qpid-3603-7. This is basic support for the new HA approach.
For information & limitations see qpid/cpp/design_docs/new-ha-design.txt.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1245587 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
ago); extend broker start timeout on brokertest.ps1 (Windows broker now takes 19 sec to start?!). NO-JIRA
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1222330 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Only allow brokers that authenticate as the cluster-username to join a cluster.
New broker first connects to a cluster broker authenticates as the cluster-username
and sends its CPG member ID to the qpid.cluster-credentials exchange.
The cluster broker that subsequently acts as updater verifies that the credentials are
valid before connecting to give the update.
NOTE 1: If you are using an ACL, the cluster-username must be allowed to
publish to the qpid.cluster-credentials exchange. E.g. in your ACL file:
acl allow foo@QPID publish exchange name=qpid.cluster-credentials
NOTE 2: This changes the cluster initialization protocol, you will
need to restart the cluster with all new version brokers.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1210989 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1164249 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1163347 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
- Replicate DTX state to new members joining.
- Use cluster timer for DTX timeouts.
- Incidental: quote nulls in qpid::Msg messages (XIDs often have null characters)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1161742 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
being solved. Added a make check-long target to the Makefile in the cpp dir to make it easier to run the long tests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1148503 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
than merging new addresses with old
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1141493 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1140179 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
| |
Problem: the first broker in the cluster could be killed before the
receiver was connected, so the receiver could not fail-over, it didn't
have a failover update. Fix: wait for the first message to be received
by the receiver before starting the broker-kill loop.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1137657 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
Fix timing problems with broker shut down in this test. Kill all
brokers in the test, rather than leaving the last 2 running to be
cleaned up by the harness.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1136166 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1135786 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1135768 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
- brokertest.py was not reliably detecting failed processes.
- test_failover was not setting the reconnect option on its connections.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1135722 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously if multiple queues were bound to the same routing key,
then a failure to deliver to one of the queues (e.g. policy limit
error) could prevent delivery on some of the other queues.
With this commit the exchange delivers to every queue that did not
have an error before raising an error.
Note: this was originally committed as r1092765, but it caused test
failures was reverted as r1092804. The original commit did not create
exceptions of the correct type.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1094734 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
an error."
This reverts commit r1092765 which introduced test failures in make check.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1092804 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
Previously if multiple queues were bound to the same routing key,
then a failure to deliver to one of the queues (e.g. policy limit
error) could prevent delivery on some of the other queues.
With this commit the exchange delivers to every queue that did not
have an error before raising an error.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1092765 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix is a race condition in posix/Socket.cpp Socket::connect.
When connecting to a port on the same host which no longer has a
process associated with it the OS occasionally chooses the remote
port (which is unoccupied) as the port to bind the local end of the
socket, resulting in a "circular" connection.
This seems like something the OS should prevent but I have confirmed
that the sporadic hangs in cluster_tests.LongTests.test_failover on
RHEL5 are caused by such a circular connection.
The fix is to detect circular connections and raise an error.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1087052 13f79535-47bb-0310-9956-ffa450edef68
|