Commit Graph

26 Commits

Author SHA1 Message Date
Kobolog
829d0003be Verbose ROUTER socket behavior patch 2012-06-17 02:33:43 +04:00
Ian Barber
e5904e63ce Allow blocking while connect() is completing
This patch, salvaged from a trainwreck accidental merge earlier, adds a
new sockopt, ZMQ_DELAY_ATTACH_ON_CONNECT which prevents a end point
being available to push messages to until it has fully connected, making
connect work more like bind. This also applies to reconnecting sockets,
which may cause message loss of in-queue messages, so it is sensible to
use this in conjunction with a low HWM and potentially an alternative
acknowledgement path.

Notes on most of the individual commits can be found the repository log.
2012-06-12 15:34:48 +01:00
Ian Barber
95cbad3841 Revert "After speaking with Ben Gray and the discussion on the mailing list, this is an attempt to create a sockopt to allow connecting pipes to not immediately be available for traffic. The problem is in a PUSH to many PULL situation, where there is a connect to a PULL which is not there. This connect will immediately create a pipe (unlike bind), and traffic will be load balanced to that pipe. This means if there is a persistently unavailable end point then the traffic will queue until HWM is hit, and older messages will be lost."
This reverts commit fe3fb419fe.
2012-06-12 14:53:57 +01:00
Ian Barber
fe3fb419fe After speaking with Ben Gray and the discussion on the mailing list, this is an attempt to create a sockopt to allow connecting pipes to not immediately be available for traffic. The problem is in a PUSH to many PULL situation, where there is a connect to a PULL which is not there. This connect will immediately create a pipe (unlike bind), and traffic will be load balanced to that pipe. This means if there is a persistently unavailable end point then the traffic will queue until HWM is hit, and older messages will be lost.
This patch adds a sockopt ZMQ_DELAY_ATTACH_ON_CONNECT, which if set to 1 will attempt to preempt this behavior. It does this by extending the use of the session_base to include in the outbound as well as the inbound pipe, and only associates the pipe with the socket once it receives the connected callback via a process_attach message. This works, and a test has been added to show so, but may introduce unexpected complications. The shutdown logic in this class has become marginally more awkward because of this, requiring the session to serve as the sink for both pipes if shutdown occurs with a still-connecting pipe in place. It is also possible there could be issues around flushing the messages, but as I could not directly think how to create such an issue I have not written any code with regards to that.

The documentation has been updated to reflect the change, but please do check over the code and test and review.
2012-06-01 17:58:19 +01:00
Lourens Naudé
5c6f72c17c ZMQ_MONITOR socket option registers a callback / event sink for changes in socket state 2012-05-04 02:32:46 +01:00
Sergey KHripchenko
4f668ad60a added zmq_unbind() / zmq_disconnect() test script.
it works but rises very serious questions.

Please add license header by your choice.
This file for 99% resemble crossroads-io/tests/shutdown.cpp
2012-04-21 18:39:19 +04:00
Mikko Koppanen
d00d4843be More fixes for ZMQ_LAST_ENDPOINT. Added a test 2012-02-18 20:44:41 +00:00
skaller
916f1a524d Remove build script references to test_ts_context. 2012-02-18 02:41:17 +11:00
Staffan Gimåker
b9fb48f47b Resolve addresses in the calling thread on connect.
This allows us to actually report an error to the caller on resolve
failure, rather than asserting later on in the io thread.

Signed-off-by: Staffan Gimåker <staffan@spotify.com>
2012-02-16 14:42:55 +01:00
skaller
81662d70be Add a test for thread safe sockets. 2012-02-04 15:13:36 +11:00
Philip Kovacs
bf9062902c Fix broken VPATH/parallel builds
Signed-off-by: Philip Kovacs <phil@philkovacs.com>
2011-11-21 08:10:03 +01:00
Chuck Remes
93529d8c5d Add zmq_getmsgopt to the API
The new function allows to retrieve options (flags)
from zmq_msg_t.

Signed-off-by: Chuck Remes <cremes@mac.com>
Renamed from zmq_msg_flags to zmq_getmsgopt
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-06 14:03:51 +01:00
Martin Sustrik
7842c71073 LABELS and COMMANDs removed
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-11-01 13:39:54 +01:00
Mikko Koppanen
8f8bfcaba0 Fixed issue with req assertions (issue 252)
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-09-13 16:27:07 +02:00
Martin Sustrik
2afb791ec2 Subscription forwarding test added
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-07-11 15:54:13 +02:00
Martin Sustrik
d1373792f7 Outstanding requests dropped when requester dies (issue 190)
So far the requests in req/rep pattern were delivered to and processed
by worker even though the original requester was dead. Thus,
the worker processing replies with noone to deliver results to.
This optimisation drops requests in two situations:

1. Queued inbound requests in XREP socket when peer disconnects.
2. Queued outbound requests in XREQ when socket is closed.

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-23 07:57:47 +02:00
Martin Sustrik
ec81f8fb25 New wire format for REQ/REP pattern
This patch introduces two changes:
1. 32-bit ID is used to identify the peer instead of UUID
2. REQ socket seeds the label stack with unique 32-bit request ID
   It also drops any replies with non-matching request ID

Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-22 11:02:16 +02:00
Martin Sustrik
f4760f02c3 Disable timeo test on MinGW
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-20 07:35:24 +02:00
Fabien Ninoles
d7923f08ca Add sockopt ZMQ_RCVTIMEO/ZMQ_SNDTIMEO.
- Add doc and tests
- Add options and setup
- Wait using poll/select

Signed-off-by: Fabien Ninoles <fabien@tzone.org>
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
2011-06-17 12:22:02 +02:00
Mikko Koppanen
72d320366f Added test for HWM
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-01-30 11:51:30 +01:00
Mikko Koppanen
8e61a11b39 Do not execute ipc tests under MinGW
Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2011-01-20 22:13:01 +01:00
Mikko Koppanen
3dbd5d5872 Fix mingw32 build
MinGW32 defines __int64_t as long long, which causes the build to fail
unless -Wno-long-long is used. In addition the shutdown_stress test
isn't currently compatible with Win.

Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
2010-11-17 15:05:01 +01:00
Martin Sustrik
1a6cd59e8b stress test for shutdown process added 2010-10-01 16:03:08 +02:00
Guido Goldstein
0a8473dedd Added tests for transports per socket 2010-08-28 13:58:23 +02:00
Guido Goldstein
4d9b046977 two tests added 2010-08-27 21:13:45 +02:00
Martin Lucina
35cb1fade6 Add a basic framework for a test suite
The test suite uses the standard automake support. Tests are always built,
but run only when you do a "make check".
2010-08-27 18:35:59 +02:00