IRC Log


Saturday September 4, 2010

[Time] NameMessage
[01:19] lestrrat sustrik: I'm going to be out for the day, so won't be able to check for another 8hrs or so
[01:19] lestrrat but will do when I get back
[06:03] joevandyk hello!
[06:04] joevandyk i'm using the ruby zmq gem. i'm using the req/res sockets. When i try to send a message after a client has disconnected and i've specified no blocking, the sender just blocks forever.
[06:13] joevandyk I think I see the problem. When the service disconnects, the client still tries to send a message, and is waiting for a response.
[06:13] joevandyk is there a way around that?
[06:14] joevandyk i wonder if this is a bug in the ruby library
[06:14] lestrrat sustrik: I sent a message to the mailing list, but I messed my From: field :/
[06:15] lestrrat sustrik: anyway, I all I wanted to say was that the eintr branch worked :)
[07:51] sustrik lestrrat: great, thanks!
[07:51] sustrik joevandyk: it's the way 0mq works
[07:52] joevandyk seems odd that if the service disconnects that the client is hung forever
[07:52] sustrik it'll continue working once service becaomes available
[07:53] sustrik if you want to explicitly exit in case your task haven't been completed in a predefined time, use timeouts
[07:59] joevandyk sustrik: hm, i don't see how it can become unblocked once it's waiting for a recv
[07:59] sustrik use zmq_poll
[07:59] sustrik there's a timout parameter there
[07:59] joevandyk sustrik: what i'm not understanding is why the client sends a message when there's no servers to receive it
[08:00] sustrik what does "there's no server" mean?
[08:00] sustrik there's no such thing in networking
[08:01] sustrik what you have otoh is "the transfer haven't been acknowledged in time"
[08:01] sustrik which is the timeout
[08:02] joevandyk sorry -- when the REP socket disconnects. The REQ client had been happily sending data to the REP. But then the REP disconnected. The REQ tried to send data again to the REP and the send suceeded, but there was nothing to send it to.
[12:14] Tasser cremes, got me the big picture for zmqmachine?
[12:33] mato re
[12:33] sustrik hi
[12:34] mato sustrik: list of patches to cherry-pick along with instructions coming up shortly
[12:34] sustrik thx
[12:34] mato sustrik: just need to do some housekeeping (also delete and recreate FD_SETSIZE issue in tracker since I found that bug, not pieter)
[12:34] sustrik ok
[12:42] mato ok, i can't delete it, have commented with the current situation and removed the "maint" label
[12:44] sustrik fine
[12:49] mato sustrik: mumble... pieter also deleted the "empty" zmq_forwarder/streamer/queue documentation
[12:49] mato sustrik: this has packaging implications
[12:50] mato sustrik: how would you like me to resolve this?
[12:50] sustrik get it back
[12:50] mato ok, what about the zmq_device documentation he added?
[12:50] mato are devices still experimental in 2.0.x?
[12:51] mato or would you prefer to revert his commit entirely?
[12:51] mato the problem is it has other stuff mixed up in it
[12:51] mato like changes to asciidoc.conf which are half-broken
[12:52] sustrik is there any problem with device documentation
[12:52] mato i don't know, but you were keeping it as undocumented
[12:52] mato there is a problem with the other parts of the commit
[12:53] mato like the asciidoc footer only being present for manpages, not for html
[12:53] sustrik what's easier for you?
[12:54] mato less work *right now* would be just to revert the whole commit
[12:54] mato and pieter can resubmit his changes
[12:55] mato hmm, maybe
[12:55] sustrik it's up to you
[14:03] CIA-20 zeromq2: 03Martin Lucina 07master * r2673a84 10/ (34 files): (log message trimmed)
[14:03] CIA-20 zeromq2: Merge branch 'maint'
[14:03] CIA-20 zeromq2: * maint:
[14:03] CIA-20 zeromq2: doc: Update zmq_socket(3) for 2.0.8 API changes
[14:03] CIA-20 zeromq2: Revert "Added man page for the zmq_device method"
[14:03] CIA-20 zeromq2: Revert "Added clean target that deletes generated man pages"
[14:03] CIA-20 zeromq2: Revert "Various changes to documentation project:"
[14:03] CIA-20 zeromq2: 03Martin Lucina 07maint * ree3444f 10/ doc/zmq_socket.txt : doc: Update zmq_socket(3) for 2.0.8 API changes (+8 more commits...) - http://bit.ly/aRdJ8z
[14:25] CIA-20 zeromq2: 03Martin Lucina 07master * rf850190 10/ include/zmq.h : zmq.h: Fix typo and use of C99 comment - http://bit.ly/95mVlM
[14:25] CIA-20 zeromq2: 03Martin Lucina 07master * r51a84c1 10/ (src/select.cpp src/zmq.cpp):
[14:25] CIA-20 zeromq2: zmq::select_t, zmq_poll(): assert if FD_SETSIZE reached
[14:25] CIA-20 zeromq2: Ensure that 0MQ does not attempt to call select() on more than FD_SETSIZE
[14:25] CIA-20 zeromq2: file descriptors. - http://bit.ly/ap5axW
[14:25] CIA-20 zeromq2: 03Martin Lucina 07master * rca17612 10/ (include/zmq.h src/select.cpp src/zmq.cpp):
[14:25] CIA-20 zeromq2: Merge branch 'maint'
[14:25] CIA-20 zeromq2: * maint:
[14:25] CIA-20 zeromq2: zmq::select_t, zmq_poll(): assert if FD_SETSIZE reached
[14:25] CIA-20 zeromq2: zmq.h: Fix typo and use of C99 comment
[14:25] CIA-20 zeromq2: Conflicts:
[14:25] CIA-20 zeromq2: src/zmq.cpp - http://bit.ly/9kFuS4
[14:25] CIA-20 zeromq2: 03Martin Lucina 07maint * rf850190 10/ include/zmq.h : zmq.h: Fix typo and use of C99 comment - http://bit.ly/95mVlM
[14:25] CIA-20 zeromq2: 03Martin Lucina 07maint * r51a84c1 10/ (src/select.cpp src/zmq.cpp):
[14:25] CIA-20 zeromq2: zmq::select_t, zmq_poll(): assert if FD_SETSIZE reached
[14:25] CIA-20 zeromq2: Ensure that 0MQ does not attempt to call select() on more than FD_SETSIZE
[14:25] CIA-20 zeromq2: file descriptors. - http://bit.ly/ap5axW
[15:12] CIA-20 zeromq2: 03Ivo Danihelka 07maint * rae567be 10/ (AUTHORS src/zmq.cpp): improved null checking in zmq_term - http://bit.ly/anJS6s
[15:12] CIA-20 zeromq2: 03Jon Dyte 07maint * rc2f3b3b 10/ (src/forwarder.cpp src/queue.cpp src/streamer.cpp): forwarder and streamer devices handle multi-part messages correctly - http://bit.ly/aRxGoy
[15:12] CIA-20 zeromq2: 03Dhammika Pathirana 07maint * r1022789 10/ src/zmq_decoder.cpp : assert on malformed messages - http://bit.ly/907fWH
[15:12] CIA-20 zeromq2: 03Martin Sustrik 07maint * rdb7fe85 10/ include/zmq.h : Broken device numbering reverted - http://bit.ly/cncpxn
[15:20] CIA-20 zeromq2: 03Ivo Danihelka 07master * rae567be 10/ (AUTHORS src/zmq.cpp): improved null checking in zmq_term - http://bit.ly/anJS6s
[15:20] CIA-20 zeromq2: 03Jon Dyte 07master * rc2f3b3b 10/ (src/forwarder.cpp src/queue.cpp src/streamer.cpp): forwarder and streamer devices handle multi-part messages correctly - http://bit.ly/aRxGoy
[15:20] CIA-20 zeromq2: 03Dhammika Pathirana 07master * r1022789 10/ src/zmq_decoder.cpp : assert on malformed messages - http://bit.ly/907fWH
[15:20] CIA-20 zeromq2: 03Martin Sustrik 07master * rdb7fe85 10/ include/zmq.h : Broken device numbering reverted - http://bit.ly/cncpxn
[15:20] CIA-20 zeromq2: 03Martin Sustrik 07master * r76f2e5d 10/ include/zmq.h : (log message trimmed)
[15:20] CIA-20 zeromq2: Merge branch 'maint'
[15:20] CIA-20 zeromq2: * maint:
[15:20] CIA-20 zeromq2: Broken device numbering reverted
[15:20] CIA-20 zeromq2: assert on malformed messages
[15:20] CIA-20 zeromq2: forwarder and streamer devices handle multi-part messages correctly
[15:20] CIA-20 zeromq2: improved null checking in zmq_term
[15:34] AndrewBC I'm getting a failed assertion with a somewhat altered example from the user guide: specifically "Assertion failed: msg_->flags & ZMQ_MSG_MORE (..\..\..\src\req.cpp:225)", The code is here: http://andrewbc.pastebin.com/gcYPMPqM -- I found this thread: http://www.mail-archive.com/zeromq-dev@lists.zeromq.org/msg02531.html but I don't see any reason why the reply to my REQ socket would be ill-formed... Maybe I'm missing something,
[15:34] AndrewBC and could use a fresh pair of eyes.
[15:35] AndrewBC The actual example is just the multithreaded server part: http://www.zeromq.org/docs:user-guide#toc26 I pretty much hacked up a single thread for the client
[15:36] AndrewBC I also don't see anything pertaining to this in the buglist
[15:46] AndrewBC That gibberish output is looking more and more sinister, you know
[15:47] AndrewBC I wonder what that's about
[15:50] CIA-20 zeromq2: 03Martin Lucina 07master * ra6d3629 10/ (Makefile.am configure.in ChangeLog): (log message trimmed)
[15:50] CIA-20 zeromq2: build: Generate ChangeLog in 'make dist', ZIP automatically
[15:50] CIA-20 zeromq2: Change 'make dist' to generate the Git ChangeLog file, that way it doesn't
[15:50] CIA-20 zeromq2: have to be manually updated nor kept in Git which causes unnecessary work.
[15:50] CIA-20 zeromq2: Also change 'make dist' to invoke 'dist-zip' automatically to generate a
[15:50] CIA-20 zeromq2: ZIP as well as a .tar.gz.
[15:50] CIA-20 zeromq2: Thanks to http://live.gnome.org/Git/ChangeLog for the inspiration to
[15:50] CIA-20 zeromq2: 03Martin Lucina 07master * r32fd916 10/ doc/asciidoc.conf :
[15:50] CIA-20 zeromq2: doc: Add 0MQ version to XHTML11 backend footer
[15:50] CIA-20 zeromq2: Thanks to Matt Weinstein for the suggestion. - http://bit.ly/d1r24H
[15:50] CIA-20 zeromq2: 03Martin Lucina 07master * r1e84519 10/ .gitignore : Update .gitignore - http://bit.ly/bH7Jhp
[15:50] CIA-20 zeromq2: 03Martin Lucina 07master * rd4c8de5 10/ (5 files in 2 dirs):
[15:50] CIA-20 zeromq2: Merge branch 'maint'
[15:50] CIA-20 zeromq2: * maint:
[15:50] CIA-20 zeromq2: Update .gitignore
[15:50] CIA-20 zeromq2: doc: Add 0MQ version to XHTML11 backend footer
[15:54] AndrewBC Okay, I tracked it down to the zmq_recv() in my client. Perhaps there's something special in the flags I need to be aware of since it's on the other side of an XREP
[15:54] AndrewBC So I'm reading the API docs now
[16:01] AndrewBC beginning to suspect that I should be checking for multipart messages
[16:06] sccolbert Perhaps a simple problem, but I appear to have a mem leak on the SUB side of a PUB/SUB pattern
[16:06] sccolbert when I connect the SUB to the PUB, any messages not matching the filter cause wasted memory
[16:07] sccolbert a simple test send say, 1 million short messages that dont match any filter on the SUB, will cause the memory usage of the SUB to explode
[16:07] sccolbert has anyone else experienced this?
[16:08] AndrewBC I assume that since the filtering is done on the SUB side, the messages are indeed being transmitted to the socket on that end
[16:09] sccolbert this is true, but their memory is never freed
[16:10] AndrewBC Are you using a binding, or what?
[16:10] sccolbert PyZMQ
[16:10] sccolbert on ubuntu 10.04
[16:11] sccolbert so if I just connect the SUB and dont set any filter, the SUB process quickly locks up the system
[16:11] sccolbert which I cant see as being related to PyZMQ
[16:12] AndrewBC I'm not sure, since I'm not a dev of zmq. It's supposed to handle the memory just fine, if wishes were horses...
[16:12] AndrewBC It could be either, though. All it takes is a circular reference for python to not garbage collect objects
[16:13] AndrewBC circular, cyclic, bah
[16:14] sccolbert this is true, though I would think that since I havent actually called recv() on the sub (since its filtering all messages) that python isnt even aware a message arrived
[16:21] AndrewBC Wish I could help you. I'm banging my head up against a bizzare failed assertion myself
[16:38] CIA-20 zeromq2: 03Martin Sustrik 07maint * rebf3089 10/ NEWS : NEWS updated for 2.0.9 - http://bit.ly/doVZJ4
[16:56] pieter_hintjens sccolbert: what version of 0MQ are you using?
[16:58] sccolbert pieter_hintjens: 2.0.7
[16:58] pieter_hintjens when you stop the publisher does the memory consumption of the subscriber go down again?
[16:59] sccolbert hmm havent tried that
[16:59] sccolbert gimme a sec
[17:01] sccolbert no
[17:01] sccolbert killing the publisher does not free the memory in the SUB
[17:04] pieter_hintjens hmm... so the next steps are to test with the latest 2.0.9 release
[17:04] pieter_hintjens and then make a minimal test case that reproduces this, and log an issue
[17:04] sccolbert k, lemme grab the new one along with the new PyZMQ
[17:04] sccolbert will only take me a couple minutes
[17:04] sccolbert a different question:
[17:04] pieter_hintjens if you can make a parallel test case in C or C++ that will help identify whether it's in PyZMQ or 0MQ
[17:05] sccolbert sure
[17:05] pieter_hintjens shoot...
[17:05] sccolbert in a pub/sub pattern, if i send a multipart message, and the first part doesnt match the sub filter, does the sub still recieve the rest of the message?
[17:06] sccolbert and then just dump it
[17:06] pieter_hintjens i actually added this to the guide today but did not publish it yet
[17:06] pieter_hintjens a multipart message is one message
[17:06] pieter_hintjens think of the first part as the envelope
[17:06] pieter_hintjens it's very convenient to put the pubsub key there
[17:06] pieter_hintjens if the key does not match any subscription the entire message is discarded / ignored
[17:07] sccolbert is there any performance improvement to be had with that, over just joining my key to the beggininng of my message?
[17:07] pieter_hintjens using a pubsub envelope like this means you can do zerocopy on the data part
[17:07] sccolbert ah, great
[17:07] pieter_hintjens there is no significant performance cost and you can save on formatting the full message
[17:08] pieter_hintjens plus you are guaranteed the key remains separate from the data
[17:08] pieter_hintjens it's a Good Thing
[17:08] sccolbert yep
[17:09] sccolbert also, in a general pub/sub pattern do you recommend epgm over tcp?
[17:09] CIA-20 zeromq2: 03Martin Sustrik 07maint * r01c463c 10/ (builds/msvc/platform.hpp configure.in): Version number incremented to 2.0.10 - http://bit.ly/9vL8xS
[17:09] sccolbert I wasnt able to find much literature on the pro's vs cons of each
[17:10] pieter_hintjens you'd only use pgm/epgm if you have a performance issue with tcp
[17:10] pieter_hintjens there is ongoing work to make tcp pubsub much more efficient for large fanouts
[17:10] pieter_hintjens in general use tcp unless you know why you need multicast
[17:10] sccolbert cool
[17:10] CIA-20 zeromq2: 03Martin Sustrik 07master * rebf3089 10/ NEWS : NEWS updated for 2.0.9 - http://bit.ly/doVZJ4
[17:10] CIA-20 zeromq2: 03Martin Sustrik 07master * r01c463c 10/ (builds/msvc/platform.hpp configure.in): Version number incremented to 2.0.10 - http://bit.ly/9vL8xS
[17:10] CIA-20 zeromq2: 03Martin Sustrik 07master * rb4740c1 10/ NEWS : (log message trimmed)
[17:10] CIA-20 zeromq2: Merge branch 'maint'
[17:10] CIA-20 zeromq2: * maint:
[17:10] CIA-20 zeromq2: Version number incremented to 2.0.10
[17:10] CIA-20 zeromq2: NEWS updated for 2.0.9
[17:10] CIA-20 zeromq2: Conflicts:
[17:10] CIA-20 zeromq2: builds/msvc/platform.hpp
[17:11] Steve-o usually tcp up to 4-5 peers is better than multicast for almost all scenarios
[17:11] sccolbert good to know
[17:11] sccolbert thanks
[17:13] Steve-o usually NICs give you some form of TCP acceleration compared to none for UDP multicast
[17:16] sustrik uh, 2.0.9 is out
[17:47] sccolbert pieter_hintjens: tested new version in C and Python
[17:47] sccolbert same issues
[17:48] sccolbert where should I log the issue?
[17:50] sccolbert ah, ok, it only happens in C when the sub hasnt set any filter
[17:50] sccolbert setting a filter that doesnt match anything from the PUB solves the issue
[17:50] sccolbert in C at least
[17:51] sccolbert i will file this with Brian
[19:01] twcc Hey all, I'm trying to figure out if zeromq ist the right tool for me. I want to have one "Server" and multiple client, which pushes messages to the server. I can't find a pattern which fits really good - Request-reply would fit best, but as I understood I have to send a reply. - Is this case so trivial, that I should fall back to standard socket programming?
[19:37] Steve-o twcc: sounds like PUB/SUB
[19:43] twcc Because of the unidirectional manner this would fit, but AFAIK the Publisher starts the socket and the subscriber has to connect?! - This could run into problems with a changing number of publisher, or can I connect them to one socket, and zmq handles this?
[19:53] Steve-o You can connect multiple to one zmq socket as detailed in zmq_socket(3)
[19:54] Steve-o there is currently no bus topology socket pattern
[19:55] Steve-o you can jump down to raw PGM for that
[19:57] twcc maybe i'm stuck to much to socket programming ... - so I can bind multiple publisher to the same socket/port and have one subscriber which processes the messages? That would be great and solves all my problems :-)
[20:01] kooroo hey folks, I'm having trouble compiling zeromq on rh5 x86_64
[20:01] kooroo .libs/libzmq_la-txwi.o: relocation R_X86_64_PC32 against `pgm_rs_create' can not be used when making a shared object; recompile with -fPIC is what I'm getting.
[20:02] kooroo has anyone come across this before?
[20:03] Steve-o twcc: for each subscriber you call zmq_connect for each publisher on one zmq socket
[20:04] Steve-o kooroo: it is a bug in RHEL GCC, you can disable PGM or there is a flag you can set to disable visibility on the PGM internal API
[20:07] kooroo Steve-o, is this the -DPGM_GNUC_INTERNAL flag?
[20:07] Steve-o kooroo: yes, it needs to be "-DPGM_GNUC_INTERNAL=" for broken GCC, default "-DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL"
[20:08] Steve-o I think someone found a backported GCC version that works too on the list before
[20:10] kooroo Steve-o: do you know offhand if upgrading gcc works?
[20:11] Steve-o 4.1.2 is the affected version
[20:11] Steve-o here's the thread from before: http://www.mail-archive.com/zeromq-dev@lists.zeromq.org/msg01646.html
[20:12] kooroo Steve-o: thanks, Imma upgrade gcc and try it again.
[20:12] twcc Hm, maybe I explained it bad - I have a changing number of processes (publisher) which have to send messages to one sink (daemon/subscriber), which handles these messages. A topologie where the daemon/subscriber has to connect to the publisher isn't feasible. - So the client/server application would fit best, except that the server has to response to a message.
[20:13] kooroo twcc, could you have them all subscribe to the same multicast stream and only the subscriber react to messages?
[20:14] kooroo not the most efficient way, I admit.
[20:17] twcc hm, funny idea, didn't thought of it
[20:19] twcc multicast is only possible on network connections?, because all the processes are running on the same computer - so i would like to use ipc
[20:24] Steve-o multicast requires a network for reliable delivery, it's pretty useless for ipc.
[20:30] Steve-o I think as IPC is currently implemented using local sockets you would have to add a shared memory transport for localhost broadcast
[20:32] twcc I think the multicast idea would only be a workaround - I would like to have a non-blocking "Request-reply" without reply pattern, but I can't figure out, how to realize it with zeromq
[20:36] twcc Thank you for your help - I will try if the request-reply pattern satisfy the requirements and handle the non-blocking by myself
[20:43] Steve-o post a message on the list too, it sounds like a good idea for v3, I think 29West have a broadcast IPC transport too
[22:35] DasIch i started playing around with zeromq using pyzmq from here https://launchpad.net/~chris-lea/+archive/zeromq, however if i create 2 contexts i get this message http://paste.pocoo.org/show/258660/ what's this about?
[22:37] DasIch (obviously what i really did was a bit more complex but that what it boils down to)
[22:40] lestrrat sustrik: so the eintr thins is going to be in 2.1?
[23:01] lestrrat sustrik: And the ZMQ_FD stuff to get at the file descriptor -- is that going to be in 2.1 as well?