| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@615958 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Replaced InProcessBroker with a more accurate loopback BrokerFixture.
- Added asserts for mutex/condition/thread errors in debug build.
- Added client tests for several exception conditions.
- Added peer address to log ouput, client/server distinguished by (addr) or [addr]
- Fixed various deadlocks & races exposed by the new asserts & tests.
File-by-file:
New BrokerFixture replaces InProcessBroker
D src/tests/InProcessBroker.h
M src/tests/BrokerFixture.h
M src/tests/SocketProxy.h
M src/tests/Makefile.am
Made it run a bit faster.
M src/tests/quick_perftest
Redundant
D src/tests/APRBaseTest.cpp
Updated tests to use BrokerFixture
M src/tests/ClientChannelTest.cpp
M src/tests/exception_test.cpp
M src/tests/ClientSessionTest.cpp
Print thread IDs in decimal, same as GDB.
M src/qpid/log/Logger.cpp
Assert mutex/condition ops in debug build.
M src/qpid/sys/posix/check.h
M src/qpid/sys/posix/Mutex.h
M src/qpid/sys/posix/Condition.h
M src/qpid/sys/posix/Thread.h
Added toFd() so SocketProxy can use ::select()
M src/qpid/sys/Socket.h
M src/qpid/sys/posix/Socket.cpp
Fixes for races & deadlocks shown up by new tests & asserts.
Mostly shutdown/close issues.
M src/qpid/client/ConnectionHandler.h
M src/qpid/client/ConnectionImpl.cpp
M src/qpid/client/Demux.h
M src/qpid/client/SessionCore.cpp
M src/qpid/client/ConnectionHandler.cpp
M src/qpid/client/Connector.h
M src/qpid/client/Demux.cpp
M src/qpid/client/Dispatcher.cpp
M src/qpid/client/ConnectionImpl.h
Logging peer address.
M src/qpid/sys/AsynchIOAcceptor.cpp
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@615063 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@612986 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@612976 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@608916 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
| |
Not run as part of normal check target.
Takes about 5 minutes to run on an amd-32 optimized build.
For a longer run, increase PERFTEST_MULT in run_perftest.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@608892 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
build failure
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@603043 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
network disconnect.
src/qpid/client/Connector.h: remove friend hack for previous flawed disconnect approach.
src/tests/BrokerFixture.h: ""
src/tests/ClientSessionTest.cpp, exception_test.cpp: use ProxyConnection
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@602980 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
examples/Makefile.am: Fix typo.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@602239 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
| |
src/qpid/client/SessionCore.cpp: close/open Demux on suspend/resume.
src/tests/exception_test.cpp: convert to Session API, boost test.
- Temporarily disabled due issues noted in TODO comments
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@600046 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@599124 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
- boost::ptr_map API changed.
- Boost.Test unit test framework changes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@599067 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Uniform holder for all body types, replaces MethodHolder.
- Uses in_place constructors to avoid avoid body copy.
framing::AMQFrame:
- Holds body in heap-allocated intrusive_ptr<BodyHolder>
- Uses in_place constructors to avoid avoid body copy.
Removed/downgraded to TODO many redundant FIXME comments.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@597513 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
| |
heap allocation for small vectors.
Made SequenceNumberSet : public InlineVector<SequenceNumber, 2>
In 100k perftest reduces heap allocation in client by 40%, broker 9%.
.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@595808 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
Change the type of the in-doubt field in dtx-coordination.recover to an array (to bring in line with amqp spec)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@592494 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
entries.
- Entries are atomically erased when released.
- Map is released when all entries are erased.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@590907 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
- simplified SessionState, responsibility for protocol states now in Handlers
- qpid::RefCounted, qpid::intrusive_ptr reference counting support.
- build boost unit tests as single exe, speeds up testing.
- fixed leak in AsynchIOAcceptor.cpp
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@590869 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
after voluntary suspend() or network failure. Frames lost in network
failure are automatically re-transmitted for transparent re-connection.
client::Session improvements:
- Locking to avoid races between network & user threads.
- Replaced client::StateManager with sys::StateMonitor - avoid heap allocation.
qpid::Exception clean up:
- use QPID_MSG consistently to format exception messages.
- throw typed exceptions (in reply_exceptions.h) for AMQP exceptions.
- re-throw correct typed exception on client for exceptions from broker.
- Removed QpidError.h
rubygen/templates/constants.rb:
- constants.h: Added FOO_CLASS_ID and FOO_BAR_METHOD_ID constants.
- reply_constants.h: Added throwReplyException(code, text)
log::Logger:
- Fixed shutdown race in Statement::~Initializer()
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@588761 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@587480 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@585181 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@585097 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
command id when messages are resent.
Added unit and python test as previous bug was not being picked up by the existing tests.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@581175 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
for broker and client.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@580984 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@573359 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
Renabled MessageBuilderTest
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@572264 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Moved BrokerChannel functionality into Session.
- Moved ChannelHandler methods handling into SessionAdapter.
- Updated all handlers to use session.
(We're still using AMQP channel methods in SessionAdapter)
Roles & responsibilities:
Session:
- represents an _open_ session, may be active or suspended.
- ows all session state including handler chains.
- attahced to SessionAdapter when active, not when suspended.
SessionAdapter:
- reprents the association of a channel with a session.
- owned by Connection, kept in the session map.
- channel open == SessionAdapter.getSessio() != 0
Anything that depends on attachment to a channel, connection or
protocol should be in SessionAdpater. Anything that suvives a
session suspend belongs in Session.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@571575 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
* Fixed up the test for buffer changes
* Removed unused buffer operations
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@571529 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
including
handlers created for that session. Session is not directly associated with a channel.
* src/qpid/broker/SessionAdapter.h, .cpp: SessionAdapter is bound to a channel
managed by the Connection. It can be attached to and detatched from a Session.
* src/qpid/broker/Connection.cpp, .h: Use SessionAdapter.
* src/qpid/framing/Handler.h: Removed use of shared_ptr. Handlers belong
either to a Session or a Connection and are destroyed with it.
* src/qpid/framing/InputHandler.h, OutputHandler.h: Both now inherit from
FrameHandler and can be used as FrameHandlers. Intermediate step to removing
them entirely.
* src/qpid/broker/ConnectionAdapter.h:
* src/qpid/client/ConnectionHandler.h:
* src/qpid/framing/ChannelAdapter.cpp, .h:
Minor changes required by Handler changes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570982 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
| |
(including new structs).
Unified more between the basic and message classes messages.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570538 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
| |
* src/qpid/broker/SuspendedSessions.h, .cpp: Stores suspended sessions.
* src/tests/Session.cpp: Test session classes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570164 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@567755 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AMQFrame contains a boost::variant of AMQHeaderBody,AMQContentBody,
AMQHeatbeatBody, and MethodHolder. A variant is basically a type-safe
union, it can allocate any of the types in-place.
MethodHolder contains a Blob, a less sophisticated kind of variant,
which can contain any of the concrete method body types.
Using variants for all the method types causes outrageous compile
times and bloated library symbol names. Blob lacks some of the finer
features of variant and needs help from generated code. For now both
are hidden to the rest of the code base behind AMQFrame and MethodBody
classes so if/when we decide to settle on just one "variant" type
solution we can do so.
This commit touches nearly 100 files, mostly converting method
signatures with shared_ptr<FooBody> to FooBody* or FooBody&, and
converting stored shared_ptr<AMQBody> to AMQFrame and
share_ptr<AMQMethodBody> to MethodHolder.
There is one outstanding client memory leak, which I will fix in my next commit.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@566822 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Combined into a single preftest.cpp executable and moved to
src/tests.
New perftest:
- Supports all client-side options (--host, --port etc.)
- Can be run as producer (--listen), consumer (--publish) or both.
- --count specifies number of messages (default 500000 as before)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@566211 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Excessive compilation time.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@563975 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a shared_ptr to a heap-allocated AMQBody subclass, it holds the
body in-line in a boost::variant of all the concrete AMQBody
subclasses. Actually there are nested variants, the compiler
does not cope well with a single variant of 130-some types.
Creating, encoding and decoding a local Frame doess 0 heap
allocation apart from that done by the concrete
AMQBody::encode/decode - e.g. method bodies with std::string
fields. for method bodies
All variants contain type boost::blank. This guarantees 0 heap
alloocation by the variant and represents the "uninitialized"
state. variant.h provides NoBlankVisitor to help write visitors
for variants containing blank.
* src/qpid/framing/MethodHolder.h, .cpp: Holds a variant
containing a method body.
* src/qpid/framing/Frame.h, .cpp: New Frame holds body in a
variant rather than via heap allocation.
* src/qpid/framing/variant.h: Utilities for using boost::variant.
* src/qpid/framing/amqp_types.h: Added FrameType typedef.
* src/qpid/framing/AMQMethodBody.h: Friends with MethodHolder.
* src/Makefile.am:
- Improved ruby generation rule.
- Run method_variants template.
- Added new source files
- Pre-compiled header rule for method_variants.h
* rubygen/templates/method_variants.rb: Generate variants
to hold methods of each class, and MethodVariant to hold all
the class variants.
* rubygen/cppgen.rb: variant, tuple methods.
* MethodBodyClass.h.tmpl: Added default constructor to method bodies.
* amqpgen.rb (AmqpRoot::merge): fix bug in merge.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@563683 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* rubygen: Cleanup and improvements, template for cluster work.
* configure.ac:
- support for ruby code generator + cleanup.
- moved "can generate" tests to configure.ac
- removed redundant APR stuff.
* bootstrap: Remove codegen from bootstrap, all in config/make.
* src/Makefile.am (libqpidcommon_la_LIBADD):
- Ruby code generator.
- Improvements to existing generator rules.
- Removed APR stuff.
* configure.ac (CPPUNIT_CXXFLAGS): Removed APR stuff.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@561869 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@561128 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Enable clustering if suitable openais is present.
* src/tests/Cluster.cpp, .h, Cluster_child: Updated for 0-10
* src/qpid/sys/ConcurrentQueue.h: Added waitPop()
* src/Makefile.am, src/qpid/sys/ThreadSafeQueue.h, ProducerConsumer.h:
Removed unused code, ConcurrentQueue provides same functionality.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@559859 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Connect cluster handlers into broker handler chains.
- Progress on wiring replication.
* src/tests/cluster.mk: Temporarily disabled Cluster test.
* src/tests/Cluster.h, cpp, Cluster_child.cpp: Updated to use UUIDs.
* src/qpidd.cpp:
- Load optional libs (cluster)
- Include plugin config in options.parse.
* src/qpid/cluster/SessionManager.h:
- Create sessions, update handler chains (as HandlerUpdater)
- Handle frames from cluster.
* src/qpid/cluster/ClusterPlugin.h, .cpp:
- renamed from ClusterPluginProvider
- Create and connect Cluster and SessionManager.
- Register SessionManager as HandlerUpdater.
* src/qpid/cluster/Cluster.h, .cpp: Refactor as SessionFrameHandler.
* src/qpid/broker/Connection.cpp: Apply HandlerUpdaters.
* src/qpid/broker/Broker.h, .cpp:
- Initialize plugins
- Apply HandlerUpdaters
* src/qpid/Plugin.h, .cpp: Simplified plugin framework.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@557788 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@557709 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
| |
* src/tests/run_test, vg_check:
- factored valgrind check out of run_test for reuse in stop_broker.
* src/tests/Makefile.am, stop_broker, README:
- kill_broker renamed stop_broker.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@557692 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
handler/adapter interfaces
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@557522 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
| |
by queueing and dispatching in a separate thread if necessary.
* src/qpid/sys/*/Mutex.h: trylock to return a bool.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@556679 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* src/tests/ConcurrentQueue.cpp:
Experimental code to compare a dual-vector, dual-lock
implementation with a simple locked deque. Results indicate the
more complex design does not perform any better, so ConcurrentQueue.h
uses the simpler design.
Not part of default test harness, run by hand to see results.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@556045 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
| |
allow channel.close-ok (and fixed client to send it).
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@553441 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* qpid/sys/Shlib.h, .cpp: Portable shared library abstraction.
- Shlib: load, unload, getSymbol
- AutoShlib: unload in destructor.
* qpid/sys/apr/Shlib.cpp sys/posix/Shlib.cpp: APR/Posix impls
* qpid/sys/Module.h: Reimplemented Module in terms of AutoShlib.
* qpid/Plugin.cpp, .h: Removed dlopen - use Shlib instead.
* qpid/broker/Broker.cpp: Added missing #include "qpid/log/Statement.h"
* tests/Shlib.cpp, shlibtest.cpp: Unit test
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@553056 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
| |
Currently classifies wiring separately from everything else.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@553024 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@552970 13f79535-47bb-0310-9956-ffa450edef68
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* src/qpid/cluster/Cluster.cpp: Refactor - expose 4 handler points
for all traffic to/from cluster. Removed HandlerUpdater functionality,
separate class. Cluster only deals with membership and connecting
the 4 handler points to CPG multicast.
* src/tests/cluster.mk: Dropped newgrp ais wrapper scripts, its
much simpler if the user just does "newgrp ais" before building.
* src/tests/ais_check: Test script to check if users gid is ais
and give clear notice if not.
* src/tests/Cluster.cpp: Updated for changes to Cluster.
* src/qpid/cluster/Cpg.cpp: Better messages for common errors.
* Handler.h: Remove nextHandler() minor convenience is outweighted
by risk of undetected errors if handlers that expect next() to be
set are called when it's not set.
* src/qpid/cluster/Cpg.cpp: Added logging. Replaced boost::function
with traditional virtual interface (nasty stack traces.)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@552614 13f79535-47bb-0310-9956-ffa450edef68
|