[Time] Name | Message |
[00:35] travlr
|
sustrik: hi martin. regarding "real" file descriptor transparency in a zmq socket.. i thought that was a "done deal" to be implemented in v2.1.0.. i guess i missed the discussion about this feature now not being viable. :( ... zmq_poll() from now on then, i guess. thanks.
|
[00:40] travlr
|
or wait, are you guys instead referring to accessing a zmq socket's FD. ahh, maybe that's it. in that case... :)
|
[00:41] starkdg
|
travlr: i was just mentioning in general, its interoperability.
|
[00:42] starkdg
|
i guess, martin says its not going to happen.
|
[00:47] travlr
|
hi starkdg, well there is "interoperability" now by using zmq_poll(). but i was under the impression that zmq_socket was going to be able to accept a "real" socket descriptor as an argument, and that was already in git master (soon to be v2.1).
|
[00:48] travlr
|
i've been waiting for this
|
[00:48] starkdg
|
yeah, martin said there's no way to simulate these fd's in user land
|
[00:49] travlr
|
well yes i read him saying that, but this is the first i've heard of it
|
[00:54] starkdg
|
travlr, how do you use zeromq ?
|
[00:57] travlr
|
i'm working a distributed, streamed processing system
|
[00:57] starkdg
|
processsing of what ?
|
[00:58] travlr
|
http://prodatalab.wikidot.com/
|
[00:59] starkdg
|
ProDataLab will eat extremely large data sets for breakfast.. and with a user interface so easy to use, a four year-old can run the world.
|
[00:59] starkdg
|
that's a good line, i like that
|
[00:59] travlr
|
:)
|
[01:03] starkdg
|
i see. not alot on there right now.
|
[01:03] starkdg
|
interesting project. just not alot on there.
|
[01:03] travlr
|
no just a description for now, i've been busy with other things unfortunately
|
[01:03] starkdg
|
i'm working on an audio content indexing system. using zmq .
|
[01:03] travlr
|
cool, that was my next question
|
[01:04] travlr
|
what platform?
|
[01:04] starkdg
|
ive got it all implemented now, just trying to find out what to do with it.
|
[01:04] starkdg
|
its on linux, or unix
|
[01:04] travlr
|
;)
|
[01:04] travlr
|
what do you mean "what to do with it"
|
[01:05] starkdg
|
I figure i can port parts to windows as needed, and if there's demand for it .
|
[01:05] starkdg
|
just have to get some feedback on it
|
[01:05] starkdg
|
and decide what license to release it under
|
[01:05] travlr
|
ah i see. open source or propietory?
|
[01:05] starkdg
|
yeah, but i'm leaning to open
|
[01:06] travlr
|
yeah me too on my proj
|
[01:06] starkdg
|
closed would be nice, but i'm seeing the obstacles of doing it htat way .
|
[01:06] starkdg
|
one thing, you close out the community and a source of feedback
|
[01:06] travlr
|
if you have something good there are pros and cons for each route.
|
[01:06] travlr
|
and remember that you...
|
[01:07] travlr
|
probably like me have benefitted greatly from the os community.
|
[01:07] travlr
|
so give back
|
[01:07] starkdg
|
yeah, true.
|
[01:07] travlr
|
yup :)
|
[01:08] starkdg
|
i'd like to make some money on it, expectations arent alot , but at least something.
|
[01:08] travlr
|
yeah, that's a delimma
|
[01:08] starkdg
|
but if i release the base functionality, which is what i have, i can always make extra through providing support and additional features as requested
|
[01:09] travlr
|
yes there different os business models to choose from
|
[01:09] travlr
|
lots of $ has been made via os licenses
|
[01:09] travlr
|
just good planning, me thinks
|
[01:10] starkdg
|
yeah
|
[01:10] starkdg
|
and if its popular you get recognition and notoriety, at least, which counts for something.
|
[01:10] travlr
|
right. if you are a coder, sell your ability as a service... great advertisement
|
[01:10] starkdg
|
and there's always the groupies .
|
[01:10] travlr
|
groupies... :D
|
[01:11] starkdg
|
if you give me your email address, i have a pdf of my project, if you are interested .
|
[01:12] starkdg
|
larrytheliquid ??? interesting.
|
[01:13] travlr
|
sure. send it to prodatalab at gmail dot com... i'll take a look
|
[01:13] travlr
|
what language
|
[01:14] starkdg
|
its all in straight c
|
[01:14] starkdg
|
just sent it now
|
[01:14] travlr
|
k
|
[01:14] starkdg
|
that gives a general outline, and some test results i've obtained
|
[01:15] starkdg
|
i've had good success with it so far,
|
[01:16] starkdg
|
ive indexexed around 1200 audio files into it, and tried to recall 250 clips of those files and all have matches. The clips were 30 to 60 second clips of the original , stored in ogg format at 50%compression.
|
[01:16] starkdg
|
the indexe files were all in mp3's
|
[01:17] starkdg
|
I also tried podcasts from talk shows, and its worked for that too.
|
[01:18] travlr
|
well this is interesting. obviouly indexing interests me and audio pcm interests me too. so i'll give it a thorough read.
|
[01:18] starkdg
|
yeah, let me know if you are interested in testing it out.
|
[01:19] travlr
|
biggest problem i have starkdg is time, which is never on my side :(
|
[01:19] starkdg
|
the dependencies are pretty low in number, just zeromq, libsndfile , libsamplerate, libmpg123
|
[01:19] starkdg
|
yeah, i understand,
|
[01:20] travlr
|
i like the pdf's presentation... very nice... important, imo
|
[01:20] starkdg
|
but any feedback is appreciated, you dont have to code a thing, i just need opinions .
|
[01:20] travlr
|
ok, let me see
|
[01:20] starkdg
|
oh, thanks you, glad to see you noticed.
|
[01:21] travlr
|
you should start a website for it
|
[01:21] starkdg
|
yeah, we do have one, though i havent put anything up yet
|
[01:21] starkdg
|
www.phash.org is the site , but its got other stuff on there now
|
[01:21] travlr
|
phash... kinda like phish
|
[01:21] travlr
|
:)
|
[01:22] starkdg
|
its got another opensource library that we developed on it, this thing is new , we'll be putting it up there soon, just want to get limited exposure to people first .
|
[01:22] travlr
|
cool
|
[01:23] starkdg
|
the system seems to have a pretty small memory footprint, not a big code base, but its very scaleable, its limited in features but i think it does those features well.
|
[01:24] travlr
|
i'm enjoying the read.. interesting
|
[01:26] travlr
|
see for what i'm building, audioscout would be one of it's many pluggable components.. per se
|
[01:26] starkdg
|
yeah, that's one thing i didnt understand on that website, just not sure of its applications, kidn of fuzzy on that
|
[01:27] starkdg
|
i mean, i can see its a way of manageing a flow of information , in a distributed way,
|
[01:27] travlr
|
everything that uses data for any purpose can be adapted to plug in.
|
[01:28] starkdg
|
oh i see
|
[01:28] travlr
|
i'm going to be moving to a new web host soon and will be explaining more when i do
|
[01:28] travlr
|
i
|
[01:28] travlr
|
i'm going to create a community around it, i think at this point
|
[01:29] starkdg
|
who else is working on it ?
|
[01:29] starkdg
|
just you ? or do you have anyone else ?
|
[01:29] travlr
|
no one yet, just me
|
[01:29] travlr
|
originally conceptualized for financial tick data....
|
[01:29] travlr
|
then i realized it's good for any kind of data for any purpose
|
[01:30] starkdg
|
like streaming video or audio ?
|
[01:30] travlr
|
sure. you bet
|
[01:30] travlr
|
i'm going to be starting the community soon
|
[01:31] starkdg
|
how bout a plugin that can monitor a stream and send a message when a certain show or song comes on ?
|
[01:31] travlr
|
anything you want. honestly its going to be beautiful
|
[01:31] starkdg
|
or monitor a stream for known content and report copyright issues ?
|
[01:31] travlr
|
anything you want
|
[01:32] travlr
|
make a component and plug it in
|
[01:32] starkdg
|
interesting, i'll bookmark the site , and look back in , and see what else is on there
|
[01:32] travlr
|
i'll be always be around here so you can reach me
|
[01:33] starkdg
|
sure
|
[01:33] travlr
|
you've gone to great lengths in the pdf... very nice
|
[01:33] travlr
|
well thought out
|
[01:33] starkdg
|
yeah, took me the summer to do it
|
[01:34] starkdg
|
not the pdf, but the whole project
|
[01:34] starkdg
|
travlr: what country are you in?
|
[01:35] travlr
|
florida, usa
|
[01:35] starkdg
|
oh, i'm in ct, usa
|
[01:35] starkdg
|
EDT time zone
|
[01:35] travlr
|
i'm origininally from jerseyy
|
[01:35] travlr
|
i flipped my car long end over long end in conn
|
[01:35] starkdg
|
my father's down in florida, he's in the panhandle
|
[01:36] starkdg
|
how'd you do that , that's quite a feet
|
[01:36] travlr
|
im on the west coast
|
[01:36] travlr
|
some punk hit me in the rear doing over 100mph
|
[01:37] travlr
|
rolled 8 times
|
[01:37] travlr
|
one end over end
|
[01:37] starkdg
|
that's alot of energy, going 100
|
[01:37] travlr
|
i saw him coming..."this guy's gonna hit me", i said
|
[01:38] starkdg
|
hope you were wearing a seat belt
|
[01:38] travlr
|
no doubt, wouldn't be here otherwise. i used to curse that seat belt out all the time, then it saved my life.
|
[01:38] travlr
|
lol
|
[01:39] travlr
|
well starkdg, gotta go back to work.. later
|
[01:39] starkdg
|
ok, later
|
[01:39] starkdg
|
thaks
|
[01:39] travlr
|
yup
|
[06:45] CIA-17
|
zeromq2: 03Burak Arslan 07master * r3eb935e 10/ include/zmq.hpp :
|
[06:45] CIA-17
|
zeromq2: switch to c++-specific headers
|
[06:45] CIA-17
|
zeromq2: Signed-off-by: Burak Arslan <burak-github@arskom.com.tr> - http://bit.ly/d4c5El
|
[06:45] CIA-17
|
zeromq2: 03Martin Sustrik 07master * rdace247 10/ AUTHORS :
|
[06:45] CIA-17
|
zeromq2: Burak Arslan added to the AUTHORS file
|
[06:45] CIA-17
|
zeromq2: Signed-off-by: Martin Sustrik <sustrik@250bpm.com> - http://bit.ly/cR3Auq
|
[07:53] lestrrat
|
man, coming back to zmq for the first time in a few weeks, and I'm getting hit with so many errors... need to catch up
|
[07:55] sustrik
|
good luck :)
|
[07:56] lestrrat
|
did something change with inproc sockets?
|
[07:58] sustrik
|
no
|
[07:58] sustrik
|
what happens?
|
[07:58] lestrrat
|
Invalid argument (mutex.hpp:97)
|
[07:58] lestrrat
|
seems to happen every time my tests call bind(inproc)
|
[07:59] sustrik
|
strange
|
[07:59] sustrik
|
what OS are you on?
|
[07:59] lestrrat
|
zmq::mutex_t::lock(). odd
|
[07:59] lestrrat
|
OS X 10.6
|
[08:00] sustrik
|
either the mutex object is bogus or it's some strange OSX behaviour
|
[08:00] sustrik
|
presumably the former
|
[08:00] sustrik
|
can you get a stack trace?
|
[08:01] lestrrat
|
hold on, I'm syncing to latest master
|
[08:01] lestrrat
|
k :)
|
[08:01] sustrik
|
will be back later on today
|
[08:01] lestrrat
|
I'll dig around a bit
|
[08:01] sustrik
|
thanks!
|
[08:03] tbaz
|
hello
|
[08:04] tbaz
|
does zmq work on openVMS?
|
[08:05] tbaz
|
no one here?
|
[08:21] lestrrat
|
mikko: hopefully I pushed the right commits to make the perl binding pass
|
[09:22] mikko
|
lestrrat: i can kick off manual build
|
[09:23] mikko
|
lestrrat: http://build.valokuva.org/job/ZeroMQPerl-master_ZeroMQ2-master_GCC/77/console
|
[09:23] lestrrat
|
whoa
|
[09:24] mikko
|
let me make clean
|
[09:25] mikko
|
make: *** No targets specified and no makefile found. Stop.
|
[09:25] mikko
|
make clean is actually make distclean?
|
[09:25] lestrrat
|
you have to run perl Makefile.PL
|
[09:25] lestrrat
|
make clean removes Makefile
|
[09:25] mikko
|
lestrrat: yeah, isn't that usually distclean?
|
[09:26] mikko
|
yeop
|
[09:26] mikko
|
still failing
|
[09:26] lestrrat
|
I think you have a threaded perl. I haven't checked with threads
|
[09:26] lestrrat
|
will take a look.
|
[09:27] mikko
|
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
|
[09:27] lestrrat
|
yep
|
[10:53] sustrik
|
pieterh: you here?
|
[10:54] sustrik
|
pieter_hintjens: ping
|
[10:59] pieterh
|
sustrik: hi
|
[11:00] pieterh
|
pong
|
[11:00] sustrik
|
hi, i've copied the template to intro:_template
|
[11:00] pieterh
|
ack
|
[11:00] pieterh
|
i've stripped down nav:side
|
[11:01] sustrik
|
the admin|templates claims there are no templates though
|
[11:01] sustrik
|
same on .org and .com
|
[11:01] pieterh
|
ah
|
[11:01] pieterh
|
templates != templates
|
[11:01] pieterh
|
wikidot overloads the concept
|
[11:01] sustrik
|
i see :)
|
[11:01] sustrik
|
so where should i look?
|
[11:01] pieterh
|
just creating a _template page is sufficient
|
[11:01] pieterh
|
then every page in that category uses the template automatically
|
[11:01] pieterh
|
it's a layout (dynamic) template
|
[11:01] sustrik
|
ok, but the layout is still different at .com and .org
|
[11:02] pieterh
|
the admin templates are an older concept for static (default content) template
|
[11:02] pieterh
|
ok, so what's the new start page, intro:start?
|
[11:02] sustrik
|
http://www.zeromq.org/intro:start
|
[11:02] pieterh
|
lemme see...
|
[11:03] pieterh
|
looks pretty good...
|
[11:03] pieterh
|
what is the difference?
|
[11:03] pieterh
|
ok, a little white space, i'll fix that...
|
[11:04] sustrik
|
the page stretches to the right side of the browser window
|
[11:04] sustrik
|
rather than having fixed width
|
[11:05] pieterh
|
ok, doesn't show on my laptop screen but i'll see what's going on
|
[11:06] sustrik
|
.com is ok
|
[11:06] pieterh
|
what page stretches?
|
[11:06] pieterh
|
the intro:start page looks fine to me
|
[11:06] sustrik
|
intro:start
|
[11:06] pieterh
|
try Ctrl+R
|
[11:06] pieterh
|
you're probably using old cached CSS
|
[11:06] sustrik
|
:)
|
[11:06] sustrik
|
works!
|
[11:07] sustrik
|
thanks
|
[11:07] pieterh
|
that's why they pay me the big $$$
|
[11:07] pieterh
|
there's still a small difference that I'll fix
|
[11:07] sustrik
|
ok, i'll copy the other pages from .com in the meantime
|
[11:07] pieterh
|
note that they are in page: there, I'd put them into intro:
|
[11:08] sustrik
|
ok
|
[11:10] pieterh
|
what do you think of using the nav:side content for the community page then?
|
[11:10] pieterh
|
it's basically an index of all the content
|
[11:12] sustrik
|
basically yes, let's do it in gradual steps
|
[11:13] sustrik
|
first, let's do the newbie stuff and make 100% sure it works as expected
|
[11:15] keffo
|
eeek, my laptop drive just made a boinkey-doink gurgle!
|
[11:18] pieterh
|
keffo: eeek... usb disk caddy comes in handy to backup laptop HDDs
|
[11:18] pieterh
|
sustrik: ack
|
[11:34] keffo
|
hd's suck :/
|
[11:34] keffo
|
imo, smart should say something?
|
[11:35] mikko
|
get an ssd
|
[11:35] mikko
|
it doesnt make a sound when it breaks
|
[11:35] mikko
|
:)
|
[11:36] pieterh
|
mikko: lol, what do you call a SSD drive that makes a boinkey-doink gurgle sound?
|
[11:36] pieterh
|
answer: a very happy little SSD drive
|
[11:37] pieterh
|
sustrik: I've set-up the five links on the start page
|
[11:37] pieterh
|
so it's one click to getting help, one click to exploring the community, one click to support
|
[11:41] sustrik
|
pieterh: i'll have a look, let me first finish the migration
|
[11:42] pieterh
|
ok, NB the third page is done already
|
[11:43] sustrik
|
ok, it looks done now
|
[11:44] sustrik
|
can you double check that all links work on the newbie pages?
|
[11:46] sustrik
|
pieterh: the font on the start page is smaller
|
[11:46] sustrik
|
did you do that?
|
[11:46] sustrik
|
it's unreadable
|
[11:46] sustrik
|
the font size used at .com is ok
|
[11:54] travlr
|
sustrik: hi martin. i saw your response to starkdg from yesterday about standard socket interoperability. could you please see my follow up question above. i'm a little confused about it. thanks
|
[11:56] sustrik
|
pieterh: reverted
|
[11:56] sustrik
|
trvlr: i don't have the log of the conversation
|
[11:56] sustrik
|
can you paste your question again?
|
[11:57] travlr
|
sure
|
[11:57] travlr
|
regarding "real" file descriptor transparency in a zmq socket.. i thought that was a "done deal" to be implemented in v2.1.0.. i guess i missed the discussion about this feature now not being viable. :( ... zmq_poll() from now on then, i guess. thanks.
|
[11:58] sustrik
|
travlr: you can get an fd from 0MQ socket
|
[11:58] sustrik
|
however, its semantics are kind of different from what you would expect
|
[11:59] sustrik
|
you can poll only for POLLIN
|
[11:59] travlr
|
but to use a predefined standard socket, we are going to have to use zmq_poll functionality?
|
[11:59] sustrik
|
if the poll is successfull it means only "something have happened with the socket"
|
[11:59] travlr
|
i thought this was to be soon transparent
|
[11:59] sustrik
|
you then have to check whether socket is readable/writeable
|
[12:00] sustrik
|
i don't understand you question
|
[12:00] sustrik
|
for standard sockets you don't need 0mq at all
|
[12:01] sustrik
|
standard socket = TCP socket or such, right?
|
[12:01] travlr
|
but to map a standard socket to a zmq socket we have to use zmq_poll. i thought that was going to be done differently in the future... more transparent
|
[12:02] travlr
|
standard socket = TCP socket or such.... right
|
[12:02] sustrik
|
map standard socket to 0mq socket?
|
[12:02] sustrik
|
what's that?
|
[12:02] travlr
|
i'm sorry i'm not being to clear :P
|
[12:02] sustrik
|
what's the functionality you would like to see?
|
[12:02] sustrik
|
:)
|
[12:03] travlr
|
to incorporate a standard bsd socket to a zmq system, we have to use zmq_poll()
|
[12:03] sustrik
|
and you would like to use poll, right?
|
[12:04] travlr
|
i was hoping that zmq magic would just let us create a zmq_socket by providing a bsd socket FD to the zmq_socket call
|
[12:04] sustrik
|
what would that be good for?
|
[12:05] travlr
|
transparent interoperability
|
[12:05] travlr
|
no zmq_poll to mess with
|
[12:05] sustrik
|
so what you want is to use poll with both 0mq and BSD sockets, right?
|
[12:07] travlr
|
i guess is what i mean is that you could provide a normal socket to the zmq_system with out copying the blob into zmq
|
[12:07] pieterh
|
sustrik: re
|
[12:08] travlr
|
eliminating the need inside a zmq_poll control section
|
[12:08] sustrik
|
travlr: blob?
|
[12:08] travlr
|
data
|
[12:08] sustrik
|
why do you need socket if you don't want to send any data to it
|
[12:09] pieterh
|
sustrik: I wanted to get the page to fit on a 1024x800 screen
|
[12:09] pieterh
|
not a big deal
|
[12:09] sustrik
|
travlr: try to express your question and ask on the mailing list
|
[12:09] sustrik
|
pieterh: it was invisible on my box
|
[12:09] travlr
|
i want to be able to transparently use a standard bsd socket on the edge of the zmq system
|
[12:09] sustrik
|
almost invisible
|
[12:09] travlr
|
ok, sorry for the confusion
|
[12:09] pieterh
|
ack, this is what the Edit button is for :-)
|
[12:10] pieterh
|
travlr: you're making a bridge?
|
[12:10] travlr
|
hi pieterh, yes
|
[12:10] pieterh
|
straight-forward enough
|
[12:10] pieterh
|
use one thread
|
[12:10] travlr
|
yes, i was hoping for magic, no zmq_poll needed
|
[12:10] pieterh
|
inproc: to the rest of your 0MQ app
|
[12:11] pieterh
|
and TCP to the outside world
|
[12:11] travlr
|
with zmq_poll though
|
[12:11] pieterh
|
yes, you can poll on TCP sockets as well as 0MQ sockets
|
[12:11] travlr
|
i thought this was going to be transparent in the future
|
[12:11] keffo
|
lovely, except inproc doesnt exist on windows!
|
[12:11] pieterh
|
in the Future
|
[12:11] pieterh
|
keffo: hmm, indeed, but does anyone do real work on Windows?
|
[12:12] travlr
|
v2.1?
|
[12:12] pieterh
|
travlr: ... 5.0 or something
|
[12:12] travlr
|
oh, lol.. not!
|
[12:12] keffo
|
pieterh, yes, far more than any other platform :)
|
[12:12] travlr
|
:)
|
[12:12] pieterh
|
travlr: at some point 0MQ will we hope get integrated with standard sockets
|
[12:12] pieterh
|
that's way way off
|
[12:12] travlr
|
ok, thanks
|
[12:13] pieterh
|
keffo: curious fact, very few contributors from the win32 community
|
[12:13] pieterh
|
0MQ kind of reflects its user base
|
[12:14] pieterh
|
it could be fun to simulate inproc: using ipc: just on win32 so that apps are portable
|
[12:14] keffo
|
indeed, but "does anyone do real work on windows" does not :)
|
[12:14] pieterh
|
keffo: i was trolling... :-)
|
[12:15] keffo
|
I know, but inproc would be very valuable nonetheless :)
|
[12:15] pieterh
|
i'm surprised no-one has provided the patch
|
[12:15] pieterh
|
it can't be so hard, win32 has several ways to do this afaik
|
[12:15] keffo
|
yeah
|
[12:15] keffo
|
named pipe wrapper should be enough
|
[12:16] pieterh
|
but it's been years since I had the luxury of the quasi-religious world of win32 APIs
|
[12:16] pieterh
|
yup
|
[12:16] pieterh
|
it takes so much time to learn and use properly and then it all changes, pow!
|
[12:16] keffo
|
that's a good thing, usually :)
|
[12:17] keffo
|
I'd hate to regurgitate the same old junk.. you'll end up with opengl then
|
[12:18] pieterh
|
well, if it's not junk in the first place, it can survive a long long time
|
[12:18] mikko
|
hmm
|
[12:18] mikko
|
pyzmq master build succeeded
|
[12:18] travlr
|
like *nix api
|
[12:18] travlr
|
:)
|
[12:19] travlr
|
no flaming allowed.. i'm gone
|
[12:19] pieterh
|
travlr: did you get an answer to your socket question?
|
[12:19] travlr
|
yes, thank you very much
|
[12:19] pieterh
|
ok, np
|
[12:56] pieterh
|
we've made some website changes
|
[12:56] pieterh
|
if anyone wants to take a look and comment, that'd be cool
|
[13:05] travlr
|
pieterh: simplified. i like it. btw, i looked at the guide again recently and think you've done a great job with it.
|
[13:06] BooTheHamster
|
Hi. Can I use ZMQ_REQ socket on server (make bind) to send data to many clients with ZMQ_REP sockets (make connect)?
|
[13:08] travlr
|
BooTheHamster: sure that's a the "device" model. see the guide
|
[13:11] BooTheHamster
|
travlr: thanks
|
[14:42] pieterh
|
travlr, thanks
|
[15:04] ptrb
|
pieterh: I never understood the zeromq.[com,org] dichotomy; it's really great that they're the same, now.
|
[15:07] ptrb
|
and I hope I spelled dichotomy correctly :)
|
[15:07] cremes
|
ptrb: that is correct
|
[15:08] keffo
|
not correctly used though
|
[15:08] ptrb
|
fuck!!
|
[15:08] keffo
|
the com/org are not mutually exclusive
|
[15:09] ptrb
|
well now they're ostensibly identical, so it's all gravy
|
[15:09] ptrb
|
and I _know_ I spelled and used "ostensibly" correctly
|
[15:14] keffo
|
or ostensively? :)
|
[15:15] keffo
|
ah damn, they're the same thing, but ostensibly predates ostensively by 17 years :)
|
[15:31] sustrik
|
tbas: for openvms try speaking to john apps or brett cameron
|
[15:32] sustrik
|
tbaz:
|
[15:38] mato
|
sustrik: question:
|
[15:38] sustrik
|
yes?
|
[15:38] mato
|
sustrik: who (if anyone) processes commands on a socket that has been closed?
|
[15:38] mato
|
sustrik: i.e. if i close a socket with ~160 clients on it, and they then also start disconnecting, who processes those commands?
|
[15:38] sustrik
|
good question
|
[15:38] mato
|
:-)
|
[15:39] sustrik
|
it's so called "admin thread"
|
[15:39] sustrik
|
which is not a real OS thread
|
[15:39] mato
|
uh-oh...
|
[15:39] mato
|
i sense a problem here :-)
|
[15:39] sustrik
|
so
|
[15:39] sustrik
|
the admin thread role can be taken by any other thread
|
[15:40] sustrik
|
application thread i mean
|
[15:40] mato
|
um, how exactly?
|
[15:40] sustrik
|
but it's done only on certain occassions:
|
[15:40] sustrik
|
1. zmq_socket
|
[15:40] sustrik
|
2. zmq_close
|
[15:40] sustrik
|
3. zmq_term
|
[15:41] mato
|
well, i have a problem here...
|
[15:41] mato
|
since after i close sockets i get the signaler asserting on me
|
[15:41] mato
|
(with lots of worker nodes)
|
[15:41] sustrik
|
right
|
[15:42] sustrik
|
you don't do any of the 3 actions above afterwards?
|
[15:42] mato
|
well, i close 2 sockets
|
[15:43] mato
|
after that i'm starting a new session, setting up new sockets
|
[15:43] sustrik
|
the cleanup should happen then
|
[15:43] sustrik
|
however, the signaler overflows in the meantime
|
[15:43] mato
|
yes, but what if "enough" of the cleanup doesn't happen?
|
[15:43] mato
|
yeah, that's what it looks like
|
[15:43] mato
|
it still doesn't make entirely enough sense though
|
[15:43] sustrik
|
each of this calls processes all the commands that are avialable at the moment
|
[15:44] sustrik
|
but if the load of commands happens between the two calls
|
[15:44] mato
|
right, but there is a delay between my closing sockets, doing other stuff and setting up new sockets
|
[15:44] mato
|
but the "load of commands" still seems excessive
|
[15:44] sustrik
|
right
|
[15:44] mato
|
the signaler buffer is 120000 bytes by default
|
[15:45] sustrik
|
how many connections are being closed at the moment?
|
[15:45] mato
|
actually, it does make sense
|
[15:45] mato
|
120000 bytes == 2500 commands
|
[15:45] mato
|
80 workers = 160 connections
|
[15:45] mato
|
so max 15 commands per socket
|
[15:45] mato
|
then it will overflow
|
[15:46] sustrik
|
15 seems quite a lot
|
[15:46] mato
|
it does, but not inconcievable
|
[15:46] sustrik
|
hm
|
[15:46] sustrik
|
i'll have to look at unlimited signalers
|
[15:47] mato
|
that's one thing
|
[15:47] sustrik
|
also, maybe the I/O threads can take the role of admin thread ocassionally
|
[15:47] mato
|
the other question is -- shouldn't zombie sockets be handed off to some proper thread
|
[15:47] mato
|
exactly
|
[15:47] mato
|
once the application says close() you don't expect it to care about those sockets
|
[15:47] sustrik
|
but which one?
|
[15:47] sustrik
|
hmmm
|
[15:47] mato
|
or make an extra admin thread...
|
[15:47] mato
|
"reaper"
|
[15:48] sustrik
|
:)
|
[15:48] sustrik
|
let's first do the unlimited signaler
|
[15:48] sustrik
|
that's easier
|
[15:48] mato
|
ok, how much work is that do you think?
|
[15:49] mato
|
because i can keep adding random extra polls in various places, but it's still not going to be stable :-(
|
[15:49] mato
|
plus it slows things down in the wrong places
|
[15:49] ptrb
|
Quick question: if I'm blocked in a zmq_read() in one thread, can I do anything to the context and/or socket in another thread to break that read? inject empty data maybe?
|
[15:49] mato
|
ptrb: zmq_term() should break out of that read with ETERM
|
[15:50] ptrb
|
which kills the whole context, correct?
|
[15:50] mato
|
yup
|
[15:50] sustrik
|
yes
|
[15:50] sustrik
|
you can send an empty message, sure
|
[15:51] mato
|
sustrik: ok, so about the signaler, will you look into it? or shall i? i think there's no point it putting off the change
|
[15:51] mato
|
especially now that i have this problem with it overflowing on close...
|
[15:51] mato
|
which i have no easy way of countering on the application side
|
[15:51] ptrb
|
mato: and will zmq_term take also a zmq::context_t*?
|
[15:52] mato
|
ptrb: hmm, yes, of course
|
[15:52] sustrik
|
i'll have a look, you'll check that it doesn't kill the performance
|
[15:52] sustrik
|
ok?
|
[15:52] mato
|
hmm, ok, i'll see what i can do...
|
[15:53] mato
|
sustrik: is the signaler on the critical path in the sense that it's involved if an app is stuck in e.g. read()
|
[15:53] mato
|
sustrik: or not?
|
[15:53] sustrik
|
ptrb: i don't think zmq::context_t allows accessing the underlying void*
|
[15:53] sustrik
|
you have to destroy the context_t to invoke zmq_term
|
[15:53] sustrik
|
mato: definitely
|
[15:54] sustrik
|
it's not on critical critical path
|
[15:54] sustrik
|
meaning that when messages are flowing continuously it's not involved
|
[15:54] mato
|
right
|
[15:54] sustrik
|
however, once there's a hickup, the reader stucks
|
[15:54] mato
|
but if they're not then it might create problems with latency
|
[15:54] mato
|
ja
|
[15:54] sustrik
|
and command is required to wake it up
|
[15:54] sustrik
|
right
|
[15:57] ptrb
|
sustrik: it's OK to delete the context when a socket (built on that context) is still stuck in a read?
|
[15:57] sustrik
|
yes
|
[15:57] ptrb
|
groovy
|
[15:57] mikko
|
even in 2.1?
|
[15:58] sustrik
|
yes
|
[15:59] sustrik
|
the delete will block
|
[15:59] sustrik
|
the read will return ETERM
|
[15:59] sustrik
|
and once you close the socket
|
[15:59] sustrik
|
delete will unblock
|
[16:12] ptrb
|
hmm, but is there another way to close a zmq::socket_t besides deleting it?
|
[16:15] ptrb
|
delete blocking until the socket is deleted actually causes deadlock (in my app)
|
[16:16] ptrb
|
oh, ETERM helps. nevermind.
|
[16:18] sustrik
|
ptrb: zmq_close (deleting socket) never blocks
|
[16:19] ptrb
|
well, my issue was I couldn't delete socket until I had re-acquired a mutex that the delete of context already owned
|
[16:19] ptrb
|
so I can work around that if the zmq_recv's exception is detected to be ETERM, but apparently I cannot access the errnum as it's private
|
[16:21] ptrb
|
but I guess I can treat all exceptions thrown from socket::recv() as terminating conditions, since EAGAIN is explicitly dealth with...
|
[16:22] ptrb
|
*dealt
|
[16:23] sustrik
|
ptrb: there should be a way to access ernum
|
[16:23] sustrik
|
what about adding a function to retrieve it?
|
[16:23] ptrb
|
that would be great
|
[16:23] ptrb
|
want a patch? :)
|
[16:27] sustrik
|
sure :)
|
[16:30] ptrb
|
prefer maint or master?
|
[16:30] sustrik
|
master
|
[16:30] sustrik
|
it's a new functionality, not a bug
|
[16:30] ptrb
|
understood
|
[16:51] Dale
|
Is there a bug in 2.0.10 where messages are received multiple times?
|
[16:52] sustrik
|
Dale: I am not aware of it
|
[16:56] Dale
|
Didn't think so. That would be way too obvious. :)
|
[17:12] Dale
|
If I'm using a zmq_device, should the frontend and backend be in different contexts?
|
[17:14] sustrik
|
everyting running in a single process?
|
[17:14] sustrik
|
a single context
|
[17:15] Dale
|
That's what I thought.
|
[17:16] Dale
|
I have a client, device, and server. Right now, the client is just reading lines from stdin and pushing them to the device. The server is reading messages from the device and writing to stdout.
|
[17:16] Dale
|
Sometimes (about half the time?) I'm getting the same message twice in a row, and the server freezes up.
|
[17:23] Dale
|
Instead of using a built-in zmq_device, I just tried replacing it with a while() loop of zmq_recv() and zmq_send() commands (with a printf to display the messages). The messages are being received by the device correctly. But when I relay them on to the server, they're getting sent multiple times.
|
[17:23] Dale
|
Perhaps there's an IPC vs. TCP issue?
|
[17:24] Dale
|
The frontend is listening to an IPC socket, and the backend is a TCP socket.
|
[17:30] Dale
|
Aha. The documentation lies. If you are using IPC sockets and TCP sockets in the same process, they must be under different contexts.
|
[17:32] sustrik
|
Dale: no, why do you think so?
|
[17:42] pieterh
|
sustrik: the FAQ page is not great
|
[17:43] sustrik
|
pieterh: i know
|
[17:43] pieterh
|
the development questions part is ok
|
[17:43] pieterh
|
except the winsock limit really should be raised, no excuse for it still being default :-/
|
[17:44] pieterh
|
i'm going to remove all the text that is redundant
|
[17:44] pieterh
|
what's the state with signal handlers / Ctrl-C?
|
[17:45] sustrik
|
solved
|
[17:45] sustrik
|
sort of
|
[17:45] pieterh
|
ok
|
[17:45] sustrik
|
what are faq pages good for anyway?
|
[17:45] sustrik
|
i never use them
|
[17:45] pieterh
|
indeed
|
[17:46] pieterh
|
they were used for usenet groups
|
[17:46] pieterh
|
when newbies would always ask the same questions
|
[17:46] pieterh
|
we don't really get that on zeromq-dev
|
[17:46] pieterh
|
better class of newbie, I think
|
[17:46] sustrik
|
and throwing all kinds of info onto a single page is messy
|
[17:47] sustrik
|
development
|
[17:47] sustrik
|
licensign
|
[17:47] sustrik
|
whatever
|
[17:47] pieterh
|
i've removed the section headers, and licensing and amqp references
|
[17:52] pieterh
|
sustrik: the FAQ does get a fair chunk of visits
|
[17:53] pieterh
|
I'll start tracking it wrt the email list and IRC
|
[17:53] sustrik
|
:)
|
[17:53] pieterh
|
"Why is 0MQ so fantastic?"
|
[17:53] pieterh
|
"We crush little kittens and mix them into the sauce"
|
[17:54] sustrik
|
anyway, it's easy to clean the community site now
|
[17:55] pieterh
|
people seem to like the new site
|
[17:56] pieterh
|
i think we can consider this merge a success
|
[17:56] sustrik
|
i hope so
|
[17:56] sustrik
|
:)
|
[17:56] pieterh
|
thanks for insisting...
|
[17:57] sustrik
|
bindings moved to the central pane: nice
|
[17:58] sustrik
|
pieterh: there's no link to licensing stuff from the newbies page afaics
|
[17:58] pieterh
|
it should be on the download page, let me check
|
[17:58] pieterh
|
also it's on the main start page
|
[17:58] pieterh
|
last bullet item
|
[17:59] sustrik
|
ah, that should do
|
[17:59] pieterh
|
there isn't any license text on the download page... I'll add it
|
[18:00] ptrb
|
urgh. segv's all over the place. what's the accepted way to trigger a break from a blocking zmq::socket_t::recv() from another thread?
|
[18:01] ptrb
|
deleting the shared context to trigger the zmq_term() is causing all kinds of mischef
|
[18:01] sustrik
|
ptrb: do you have a simple test code showing the problem?
|
[18:02] ptrb
|
"simple", heh, I guess I could make one.
|
[18:15] ptrb
|
so, http://ideone.com/sgkfM
|
[18:15] ptrb
|
my question revolves around lines 239 and 249
|
[18:15] ptrb
|
actually I have to amend that...
|
[18:16] ptrb
|
to http://ideone.com/sXWr7
|
[18:17] ptrb
|
lines 240/251
|
[18:19] ptrb
|
if I delete m_context at 251 to initiate the zmq_term, and catch that exception at 240, I get segv's when I try to delete m_socket in the thread that's doing the recv()ing
|
[18:33] ptrb
|
sustrik: actually I've gotta jet but maybe we can take this up tomorrow if you're around
|
[18:39] sustrik
|
ptrb: ok
|
[19:25] bruiser
|
i'm trying to design a zmq-based clustering system. i have N "routers" in the middle connected either directly or indirectly to M clients. every router is connected to every other router, and every router knows which router every client is directly connected to. the goal is to get a message from client A to client B
|
[19:25] bruiser
|
from what i can tell, i need the "routers" to use only XREP sockets
|
[19:25] bruiser
|
would anyone agree / disagree?
|
[19:27] bruiser
|
the flow would be like Client(REQ) -> router1 forwards to router 2(XREP) -> router 2 receives message from router 1(XREP) -> router 2 sends message to client B(XREP) -> client B receives message from router 2 (REP)
|
[20:34] hnr
|
Hi - having troubles with Python bindings on mac os x. origin/master is unable to import initthreads, and origin/2.0.8 cannot import _zmq. Has anyone had any success with these recently?
|
[20:37] hnr
|
scratch that, just needed a new login shell :)
|
[20:54] mikko
|
hnr: http://build.valokuva.org
|
[20:55] mikko
|
hnr: the pyzmq build against master hasn't been stable but that might be an issue with the test suite
|
[20:55] mikko
|
rather than the software itself
|
[21:29] bruiser
|
if I have an XREP that is "connect"ed to mulitple other XREPs, can I send a message to only specific XREP of my choosing? If so, how do I do this?
|