[Time] Name | Message |
[00:07] bgranger
|
sustrik: Just played with the EINTR logic.
|
[01:46] halfie
|
hi, does zeromq supports building of read-only queues with one writer and multiple readers?
|
[02:14] halfie
|
ls
|
[05:54] guido_g
|
g'mornin' (or whatever :)
|
[05:57] guido_g
|
sustrik: while not rocket science i think still something for the 250bpm page: http://queue.acm.org/detail.cfm?id=1854041
|
[06:20] sustrik
|
guido_g: thanks, i'll have a look
|
[06:20] sustrik
|
morning
|
[06:21] sjampoo
|
I am kinda sad to see that with each update I find it more difficult to navigate around zeromq.??? :(
|
[06:22] sustrik
|
sjampoo: i thought pieter reverted it to the original state
|
[06:22] sustrik
|
let me see
|
[06:22] sustrik
|
you mean the news should be in the right pane?
|
[06:22] sjampoo
|
yes, at the least
|
[06:22] sustrik
|
if you have any idea what to do further, just shoot
|
[06:24] sjampoo
|
first thing would be not to change it every month ;) and I send an email about it months ago to the list. I also do not really like the .com / .org split
|
[06:24] sjampoo
|
If the .org site is difficult to understand for new users, just make it more easy to understand
|
[06:25] sustrik
|
where would you put the community stuff?
|
[06:25] sjampoo
|
I would hide that on a separate but consistent page
|
[06:25] sustrik
|
www.zeromq.org/dev say?
|
[06:25] sjampoo
|
Yes, something like that.
|
[06:26] sjampoo
|
I mean only 0.005% is interested what the actual last edited page is.
|
[06:26] sjampoo
|
Most people interested in the community, will most likely just want to see GITHUB or the IssueList
|
[06:26] sustrik
|
no mailing list?
|
[06:26] sjampoo
|
and the mailinglist
|
[06:27] sjampoo
|
But I don't think that should be on the frontpage
|
[06:27] sustrik
|
wouldn't you mind clicking through a simple page each time to the dev page?
|
[06:28] sjampoo
|
No, not if it is at a consistent location
|
[06:28] sjampoo
|
I could bookmark it
|
[06:28] sustrik
|
right
|
[06:28] sustrik
|
in summary:
|
[06:28] sustrik
|
1. move zeromq.com to zeromq.org
|
[06:28] sustrik
|
2. move zeromq.org to zeromq.org/community
|
[06:29] sustrik
|
3. move the news to the right pane
|
[06:29] sustrik
|
4. get rid of recent site changes
|
[06:29] sustrik
|
that's it?
|
[06:30] sjampoo
|
I am not completely sure what you mean with moving .com to .org.
|
[06:30] sjampoo
|
I am not a big fan of the .com design
|
[06:30] sustrik
|
that's because you are part of community
|
[06:30] sjampoo
|
No, no
|
[06:31] sjampoo
|
I just don't think that people landing on that site will get a good idea about what 0mq is
|
[06:31] sustrik
|
ok, here's the use case:
|
[06:31] sjampoo
|
It needs a little more meat
|
[06:31] sustrik
|
you have a problem and someone advises you 0mq may help to solve it
|
[06:31] sustrik
|
you type zeromq into goodle
|
[06:31] sustrik
|
google
|
[06:32] sustrik
|
which, ideally, would bring you to what's now zeromq.com
|
[06:32] sustrik
|
you are under time stress
|
[06:32] sustrik
|
so you cannot browse around much
|
[06:32] sustrik
|
what you need to know:
|
[06:32] sustrik
|
1. what is it about (very roughly)
|
[06:33] sustrik
|
2. does it run on my OS
|
[06:33] sustrik
|
3. does it work with my language
|
[06:33] sustrik
|
4. i want to see a simple code example just to make sure it's not a utter shit
|
[06:33] sustrik
|
after that i want a one click download
|
[06:34] sjampoo
|
All that is true, but you are missing the biggest yet.
|
[06:34] sustrik
|
yes?
|
[06:34] sjampoo
|
"Why should I care"
|
[06:34] sustrik
|
because i have a problem to solve
|
[06:34] sustrik
|
i have to deliver tomorrow
|
[06:34] sustrik
|
network part is still missing :(
|
[06:34] sustrik
|
etc.
|
[06:35] sjampoo
|
Yes, but that isn't explained currently on zmq.com
|
[06:35] sustrik
|
it can be improved obviously
|
[06:35] sustrik
|
but the main point is that most people are not browsing for fun
|
[06:35] sustrik
|
they are looking for solution
|
[06:36] sustrik
|
so what they ask is "would this solve my problem" rather then "what it is good for"
|
[06:36] sjampoo
|
Absolutetely. Ok, I would really add a link sidebar on the left side of zeromq.com
|
[06:36] sustrik
|
what links?
|
[06:38] sjampoo
|
all the 'content' links on zeromq.org, links to Github, Blog and Mailinglist
|
[06:38] sustrik
|
too confusing imo
|
[06:39] sustrik
|
that's good once you are using the thing
|
[06:39] sustrik
|
the zeromq.com is there just to streamline the process up to the dowload phase
|
[06:40] sustrik
|
once you're developing with 0mq you would naturally switch to the community site
|
[06:41] sustrik
|
it's new
|
[06:42] sustrik
|
created day before yesterdat
|
[06:43] sustrik
|
sjampoo: i think you are right about .org, it's less readable now
|
[06:43] sustrik
|
but .com (or however it is called) has it meaning
|
[06:43] sustrik
|
althought the user it is aimed at are invisible to you -- visible through google analytics though
|
[06:44] sjampoo
|
sustrik: I can see what it tries to do, but I am afraid that zeromq.com in its current state will not leave the user with a 'WOW' feeling.
|
[06:44] sustrik
|
that's not it goal i think
|
[06:44] sjampoo
|
Atleast get some sort of 'Who is already using zeromq'
|
[06:45] sustrik
|
hm
|
[06:45] sustrik
|
do you look at that kind of think when inspecting unknown projects?
|
[06:45] sjampoo
|
sustrik: absolutely
|
[06:45] sjampoo
|
Is it *worth* my time to investigate
|
[06:45] sjampoo
|
will it gain me anything?
|
[06:45] sjampoo
|
Or is it something flunky and experimental
|
[06:46] sustrik
|
it may be part of "making sure it's not a shit" step
|
[06:46] sjampoo
|
exactly
|
[06:47] sustrik
|
http://www.zeromq.com/page:read-the-manual
|
[06:47] sustrik
|
what about the "introductions"?
|
[06:47] sustrik
|
not good enough?
|
[06:47] sjampoo
|
well, I was more thinking about some company profiles that are currently using zeromq
|
[06:48] sjampoo
|
And it really should be put on the front page, especially if you take the (no doubt high) bounce rate into account.
|
[06:49] sustrik
|
does reading a list of company names you never heard about before make you more happy then quotes?
|
[06:49] sjampoo
|
hehe
|
[06:49] sustrik
|
(i'm not trolling, i'm really interested)
|
[06:49] sjampoo
|
sustrik: interesting question
|
[06:49] sjampoo
|
no, I think both are well
|
[06:49] sjampoo
|
uh i mean will do
|
[06:49] sjampoo
|
And I am pretty sure that it doesn't really matter who says what
|
[06:50] sjampoo
|
that's why astroturfing is so succesful.
|
[06:50] sjampoo
|
We people are so sensitive to what others think
|
[06:50] sustrik
|
yeah, but its unlikely to get madonna say anything about 0mq
|
[06:50] sustrik
|
so you are still stuck with quotes from people you don't know
|
[06:51] sjampoo
|
exactly, and that doesn't matter
|
[06:51] sustrik
|
yes, quote just sounds well
|
[06:51] sustrik
|
because someone invested 10 seconds to write it
|
[06:52] sustrik
|
company name is less personal
|
[06:53] sustrik
|
now, as for moving it to front page
|
[06:53] sustrik
|
do you read endorsements first?
|
[06:53] sustrik
|
even before what the project is and whether it will run with your OS/language
|
[06:56] sjampoo
|
I usually read from top top bottom, but sometime I get distracted by bigger and bolder fonts.
|
[06:56] sjampoo
|
and when your lucky I actually click on a link instead of back
|
[06:56] sustrik
|
hm
|
[06:56] sustrik
|
what i do is a type keywords into google bar
|
[06:57] sustrik
|
i get a list of more or less matching projects
|
[06:57] guido_g
|
re
|
[06:57] sustrik
|
then i look at each one discarding those that won't fit
|
[06:57] sjampoo
|
sustrik: yes, exactly
|
[06:57] guido_g
|
ahhh web site issues :)
|
[06:57] sustrik
|
i spend say 30 seconds on each page
|
[06:57] guido_g
|
could one please reconsider the size of the logo?
|
[06:57] sustrik
|
do you want it bigger?
|
[06:57] sustrik
|
:)
|
[06:57] guido_g
|
when viewed on small screen its taking too much space
|
[06:58] guido_g
|
sustrik: bad boy! :)
|
[06:58] guido_g
|
it's more than 1/3 of vertical screen space
|
[06:58] sjampoo
|
For a page to appear in Google it needs to be indexed with the right terms.
|
[06:58] sustrik
|
what's you screen size?
|
[06:58] sustrik
|
just for reference
|
[06:58] guido_g
|
and this color makes one aggressive...
|
[06:59] guido_g
|
13.6''
|
[06:59] sustrik
|
i meant in pixels
|
[06:59] sjampoo
|
guido_g: ah yes colors
|
[06:59] sjampoo
|
lets discuss that next
|
[06:59] sjampoo
|
I actually like the red big logo
|
[06:59] sustrik
|
yes, i thought of red logo + shades of grey underneath
|
[07:00] guido_g
|
1280x800
|
[07:00] sjampoo
|
it would make a nice tattoo
|
[07:00] sustrik
|
it's kind of dull, but maybe hurts eyes less
|
[07:00] sustrik
|
guido_g: thanks
|
[07:01] sustrik
|
let's finish the content thing:
|
[07:01] guido_g
|
it's not that bad when using 1920x1200 on a 27'' display
|
[07:01] sustrik
|
so the front page at zeromq.com is meant to convey, in 30 secs
|
[07:01] guido_g
|
but still, takes to much space that could've been used for better things
|
[07:01] sustrik
|
whether the project is usable in your particular case or not
|
[07:01] sustrik
|
guido_g: yes, we can do some experimenting with it
|
[07:02] guido_g
|
if it should be for new users, why *must* i have cookies allowed then?
|
[07:02] sustrik
|
what does it do if you don't?
|
[07:03] guido_g
|
it shows a message to activate cookies
|
[07:03] sustrik
|
yuck
|
[07:03] guido_g
|
Can't proceed, you should accept cookies for this domain.
|
[07:03] guido_g
|
Then you can go back to http://www.zeromq.com/
|
[07:03] guido_g
|
url: http://www.zeromq.com/domainauth.php?confirm=cookie&url=http%3A%2F%2Fwww.zeromq.com%2F
|
[07:04] guido_g
|
i mean, i know ømq, so i'll activate cookies
|
[07:04] guido_g
|
but if this would have been the first impression, i'd closed the tab
|
[07:05] sustrik
|
right, i am not sure what may be the case. if it's wikidot requiring the cookies we can move the page elsewhere
|
[07:05] guido_g
|
i think it's wikidot
|
[07:05] sustrik
|
it doesn't have to be a wiki after all
|
[07:05] guido_g
|
because you need to allow cross-domain cookies (or how they're called)
|
[07:06] sustrik
|
does that happen with .org as well?
|
[07:06] guido_g
|
a community site should be accessible even for users taking their privacy serious
|
[07:06] guido_g
|
i'll take a look
|
[07:06] guido_g
|
yes
|
[07:08] guido_g
|
btw, wikidot cookies
|
[07:09] sustrik
|
hm, i switched off cookies and it still works for me
|
[07:09] sustrik
|
what browser are you using?
|
[07:10] guido_g
|
btw, i think for the community site we don't need a large funny picture at the top of the entry page
|
[07:10] guido_g
|
opera 10.60
|
[07:11] sustrik
|
hm
|
[07:12] guido_g
|
i don't like the sound of "hm" :)
|
[07:12] sustrik
|
i was just wondering if i should install opera :)
|
[07:13] guido_g
|
hehe
|
[07:13] sustrik
|
but let's rather ask at wikidot
|
[07:13] guido_g
|
ok, thx for listening
|
[07:13] sustrik
|
thanks for the feedback
|
[07:14] guido_g
|
no problem
|
[07:47] guido_g
|
re
|
[08:13] sustrik
|
guido_g: the article at acm queue is good
|
[08:13] sustrik
|
i wanted to write something like this for a long time
|
[08:13] sustrik
|
but never had enough time to actually do it
|
[08:14] guido_g
|
oh, so another dream died :)
|
[08:14] halfie
|
hi, can I modify the publish-subscribe model so that the "queue" is read-only?
|
[08:14] halfie
|
I don
|
[08:14] guido_g
|
huh?
|
[08:14] guido_g
|
what does that mean?
|
[08:15] guido_g
|
SUB sockets are read only...
|
[08:15] halfie
|
guido_g, I mean that the subscriber shouldn't remove the message
|
[08:15] sustrik
|
you need a database, not a messaging system
|
[08:16] sustrik
|
publisher -> INSERT
|
[08:16] guido_g
|
ack
|
[08:16] sustrik
|
subscriber -> SELECT
|
[08:17] halfie
|
I see, makes sense.
|
[08:17] halfie
|
some kind of in-memory database with "queue" semantics would solve the problem
|
[08:18] guido_g
|
berkeley db
|
[08:18] guido_g
|
http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html
|
[08:19] mato
|
'morning
|
[08:19] halfie
|
guido_g, thanks, I will give it a shot. sustrik: thanks for clearing the situation :)
|
[08:20] sustrik
|
:)
|
[08:20] sustrik
|
mato: morning
|
[08:20] sustrik
|
a question
|
[08:20] mato
|
yup?
|
[08:20] sustrik
|
a signal question!
|
[08:20] guido_g
|
hi mato
|
[08:20] mato
|
hi guido
|
[08:20] sustrik
|
imagine this:
|
[08:21] sustrik
|
binding calls 0mq's blocking function
|
[08:21] sustrik
|
99% of the time is spent in OS's blocking call
|
[08:21] sustrik
|
1% of time some 0mq processing is being done
|
[08:21] sustrik
|
what if user Ctrl+C's during the 1%?
|
[08:21] mato
|
too bad
|
[08:21] sustrik
|
:)
|
[08:22] mato
|
it'll get delivered late
|
[08:22] mato
|
nothing you can do about that
|
[08:22] mato
|
well, there are various weird hacks you can do about that, but believe me, you don't want to go there
|
[08:22] sustrik
|
it won't be delivered at all no?
|
[08:22] sustrik
|
the handler runs, sets a bit
|
[08:23] sustrik
|
there's no blocking call for OS to interrupt
|
[08:23] sustrik
|
so nothing happens
|
[08:23] mato
|
hmm
|
[08:23] sustrik
|
0mq then calls a blocking call
|
[08:23] sustrik
|
and freezes
|
[08:23] mato
|
oh dear
|
[08:23] mato
|
yes, you may be right
|
[08:24] sustrik
|
the whole EINTR thing seems broken
|
[08:24] mato
|
i have always said signal handling is broken
|
[08:24] mato
|
to put it very politely
|
[08:24] sustrik
|
is there *any* way to make it work?
|
[08:24] mato
|
hmm, well, maybe
|
[08:24] sustrik
|
imagine you are omnipotent
|
[08:24] mato
|
but it's so horribly racy i wouldn't want to go there
|
[08:24] mato
|
oh, if i'm omnipotent then 0mq is in kernel space, problem goes away
|
[08:24] sustrik
|
you can change the language runtimes etc.
|
[08:25] mato
|
ah, less than god (linus), ok...
|
[08:25] mato
|
just a sub-god :)
|
[08:25] sustrik
|
what i'm asking: is there a canonical way to use EINTR
|
[08:25] sustrik
|
something that works?
|
[08:25] mato
|
well, there is a canonical way i would do it
|
[08:25] mato
|
this is one of the ideas i had yesterday
|
[08:25] mato
|
it might not be right
|
[08:25] mato
|
but assuming you can hack the language runtime
|
[08:26] mato
|
then what you need to do is chuck a call to a thread-safe "zmq_interrupt()" into the low-level signal handler in the runtime
|
[08:26] mato
|
i.e. the bit that "sets a flag"
|
[08:26] mato
|
this zmq_interrupt() would cause all application API calls to immediately return with EINTR
|
[08:27] mato
|
it's ugly, but it should work
|
[08:27] sustrik
|
tweaking it a bit you end up with chained signal handlers
|
[08:27] mato
|
yes, except there's no API for that
|
[08:27] sustrik
|
exactly
|
[08:27] mato
|
so you don't want to go there :)
|
[08:28] mato
|
trying to emulate chained signal handlers is madness
|
[08:28] sustrik
|
so the whole system is really broken
|
[08:28] mato
|
yes
|
[08:28] sustrik
|
ok, what i do is froward the EINTR to the binding
|
[08:28] mato
|
it doesn't account for the fact that more than one "entity" inside the application might want to know if a signal arrived
|
[08:28] sustrik
|
that would work in99% of cases
|
[08:29] sustrik
|
the rest...
|
[08:29] mato
|
"forward the EINTR to the binding"? how?
|
[08:29] sustrik
|
shrug
|
[08:29] sustrik
|
if (errno == EINTR) return -1;
|
[08:29] mato
|
oh, that, yes...
|
[08:29] mato
|
hmm
|
[08:29] mato
|
let me check something
|
[08:44] mato
|
sustrik: ok, so, yes, forwarding EINTR is the only way at the moment
|
[08:44] sustrik
|
ack
|
[08:44] sustrik
|
well, there's another wat
|
[08:44] sustrik
|
way
|
[08:44] mato
|
yes?
|
[08:45] sustrik
|
on each entry to potentially blocking 0mq function
|
[08:45] sustrik
|
store the old signal handler
|
[08:45] sustrik
|
install your own
|
[08:45] sustrik
|
etc.
|
[08:45] sustrik
|
then on exit return it to the original state
|
[08:45] mato
|
that's the naive way, yes
|
[08:45] mato
|
except
|
[08:45] mato
|
IT WILL NEVER WORK :)
|
[08:45] sustrik
|
why so?
|
[08:46] mato
|
because, and this is what i just double-checked, all the POSIX docs explicitly say "never, ever, ever, try to mix different signal handling mechanisms and threads"
|
[08:46] mato
|
phone, hang on
|
[08:46] sustrik
|
not sure what that means, but ok, i don't want to implement that kind of hack anyway
|
[08:48] mato
|
let me explain
|
[08:48] mato
|
the problem is it only works if you have 1 thread
|
[08:48] mato
|
1 OS thread
|
[08:48] mato
|
and no more
|
[08:49] mato
|
if you start doing that kind of stuff it will break any application that might actually trying to be do things the right way in a MT envinronment, which is using a sigwait() thread
|
[08:49] mato
|
you have no way of knowing what the application is doing...
|
[08:49] mato
|
does that make sense?
|
[08:50] sustrik
|
i have no idea how sigwait style interacts with the classic style
|
[08:50] mato
|
badly
|
[08:50] mato
|
i.e. never do that
|
[08:50] sustrik
|
but i don't really care
|
[08:50] sustrik
|
so for now i'll return EINTR
|
[08:50] mato
|
yeah, but if you start mucking with signal handlers then you start caring :)
|
[08:50] sustrik
|
when available
|
[08:50] mato
|
yes
|
[08:50] mato
|
returning EINTR will solve the problem "most of the time"
|
[08:50] sustrik
|
so sometimes Ctrl+C won't work
|
[08:50] mato
|
but you can still get signal loss someimes
|
[08:51] sustrik
|
however, user can press Ctrl+C again
|
[08:51] mato
|
this just needs to be documented, that's all
|
[08:52] sustrik
|
yeah
|
[08:52] mato
|
sustrik: anyway, can i suggest the following process for this:
|
[08:52] mato
|
sustrik: 1. Test the solution, as discussed yesterday.
|
[08:52] mato
|
sustrik: 2. Post a patch for review, along with your "I'm (almost) an idiot, sorry"
|
[08:53] mato
|
sustrik: 3. I will reply to that describing all I know about the problem so that the binding people can understand what's going on (since they're the most affected)
|
[08:53] mato
|
sustrik: 4. Some consensus will be reached on whether or not this goes into 2.0.x (I'm not opposed either way, it's a fix for breakage on our part)
|
[08:54] mato
|
sustrik: 5. We may learn something useful from the discussion, and I can also bring up the zmq_interrupt() idea which might give a solution for those language runtimes that want to solve this 100%...
|
[08:54] mato
|
sustrik: what do you think?
|
[08:56] mato
|
phone call, back in 20mins
|
[08:56] pieterh
|
re
|
[08:56] pieterh
|
i lost my phone and have been offline
|
[08:56] pieterh
|
:-(
|
[08:58] pieterh
|
sjampoo: i read your remarks about the website
|
[08:58] pieterh
|
they make sense and we'll evolve this over time
|
[09:54] mato
|
sustrik: re
|
[09:54] mato
|
sustrik: are you happy with what i propose?
|
[09:55] mato
|
sustrik: it seems like the best way to move forward on the signal handling issues
|
[11:00] sustrik
|
mato: yes
|
[11:01] sustrik
|
re
|
[11:01] mato
|
sustrik: see my long email
|
[11:01] mato
|
sustrik: i've tried to explain the issue, complex as it is
|
[11:01] sustrik
|
ok, i'm on it
|
[11:30] mato
|
ok, another big long email sent re the Python GIL stuff
|
[11:30] mato
|
somewhat braindump format, hopefully it's clear enough
|
[12:12] arnorhs
|
yo
|
[12:12] arnorhs
|
Which programming language has the best zero mq bindings?
|
[12:12] arnorhs
|
Which one is the most used / most stable?
|
[12:15] guido_g
|
ømq itself is programmin in c++, so this should work
|
[12:16] guido_g
|
c is delivered with the core, so does work too
|
[12:16] sustrik
|
yes, all the bindings use C API underneath
|
[12:17] guido_g
|
the other bindings are quite stable, if you don't insinst on using bleeding edge versions
|
[12:26] arnorhs
|
ok, thanks
|
[12:27] arnorhs
|
I will go for fortran then
|
[12:27] arnorhs
|
:)
|
[12:27] arnorhs
|
I'm guessing the python bindings are fine?
|
[12:30] sustrik
|
yes, i think they are most stable among the whole bunch
|
[12:51] arnorhs
|
ok, thanks
|
[12:53] gebi
|
are there any plans to add {active, once} mode to the erlang bindings?
|
[12:58] sustrik
|
gebi: what's once?
|
[13:30] gebi
|
sustrik: only deliver ONE message
|
[13:31] gebi
|
with active,true is unuseable because it will fill up your process message queue and make it unusable
|
[13:31] gebi
|
active,false is also not ideal because processes block and do not process other messages
|
[14:31] sustrik
|
gebi: how does that work
|
[14:31] sustrik
|
ok, it delivers one message
|
[14:31] sustrik
|
when then?
|
[14:32] sustrik
|
you still have to have a way to get next message
|
[14:32] sustrik
|
mato: are you here?
|
[14:35] sustrik
|
gebi: does it mean there's at most one message in erlang queue?
|
[14:35] sustrik
|
if so, how do you tell erlang to behave that way?
|
[14:59] gebi
|
sustrik: it should be a property of the erlang 0mq binding
|
[15:00] sustrik
|
:)
|
[15:00] sustrik
|
i know, i was just interested whether erlnag as such has such feature
|
[15:00] gebi
|
with active, once it just sends delivers a single received datagram into the message queue and stops then
|
[15:00] sustrik
|
erlang*
|
[15:01] sustrik
|
that's erlang's native networking API?
|
[15:01] gebi
|
yea it's a property of gen_tcp
|
[15:03] gebi
|
you just call inet:setopts(S,[{active,once}]) when you want to get another datagram delivered into your messagequeue
|
[15:04] sustrik
|
aha
|
[15:04] sustrik
|
how is that different from passive?
|
[15:04] gebi
|
what do you mean with passive?
|
[15:05] sustrik
|
active=false
|
[15:06] gebi
|
with active false you have an effectively dead process (all your receiving processes hang on erlzmq:receive)
|
[15:07] gebi
|
with all the bad sideeffects
|
[15:08] sustrik
|
ah, it blocks threads in erlnag thread pool?
|
[15:08] sustrik
|
erlnag*
|
[15:08] sustrik
|
erlang*
|
[15:08] gebi
|
no erlang processes
|
[15:09] sustrik
|
does it matter? if process is up to receiving a message am there's no message available it hangs anyway
|
[15:09] gebi
|
if it "hangs" on receiving a erlang message it is alive, if it hangs on receiving a message from the 0mq binding it is dead
|
[15:10] sustrik
|
does "dead" mean that it is ubable to process erlang messages?
|
[15:10] gebi
|
meaning it wont process erlang messages till at least _one_ 0mq message gets delivered (and erlzmq:recv returns)
|
[15:10] sustrik
|
ok, got it
|
[15:10] sustrik
|
makes sense
|
[15:10] gebi
|
this _is_ the fastest mode, though most of the time not desireable
|
[15:11] sustrik
|
good, i'll probably have a look at it next week
|
[15:11] gebi
|
same with active,true, processing the message-queue in erlang is NOT O(1)
|
[15:11] sustrik
|
ack
|
[15:11] gebi
|
so it's kinda ugly to have a big messagequeue, thus active,true is not possibel without another protocol above for flowcontrole
|
[15:12] gebi
|
thx :)
|
[15:12] sustrik
|
i was actually wondering how the flow control thing can be handled in erlang
|
[15:12] sustrik
|
you've gave me the answer for free :)
|
[15:12] gebi
|
heh, np :)
|
[15:31] CIA-20
|
zeromq2: 03Martin Sustrik 07eintr * r9e7a9d1 10/ src/zmq.cpp : zmq_poll returns EINTR if signal interrupts it - http://bit.ly/cWOXej
|
[15:31] CIA-20
|
zeromq2: 03Martin Sustrik 07eintr * rb059116 10/ (9 files): EINTR is propogated from signaler_t::recv all the way up to the 0MQ API - http://bit.ly/bOz5Ui
|
[15:32] CIA-20
|
zeromq2: 03Martin Sustrik 07eintr * r63706a9 10/ (doc/zmq_poll.txt doc/zmq_recv.txt doc/zmq_send.txt): documentation modified to reflect the EINTR change - http://bit.ly/92QIrS
|
[15:51] cremes
|
sustrik: i get an assertion failure when running the EINTR branch
|
[15:51] cremes
|
http://gist.github.com/564076
|
[15:55] sustrik
|
cremes: let me see
|
[16:07] sustrik
|
cremes: try now
|
[16:08] CIA-20
|
zeromq2: 03Martin Sustrik 07eintr * r1bc4e9e 10/ src/app_thread.cpp : one more EINTR fix - http://bit.ly/ciucLd
|
[16:10] cremes
|
sustrik: works
|
[16:11] sustrik
|
you mean Ctrl+C stops the app?
|
[16:11] cremes
|
yessir
|
[16:11] sustrik
|
woo-hoo!
|
[16:11] cremes
|
indeed!
|
[16:11] sustrik
|
that's a bug ~2 years old
|
[16:11] sustrik
|
maybe 2 1/2
|
[16:11] sustrik
|
until now nobody had any clue how to solve ti
|
[16:12] cremes
|
wow, good catch
|
[16:12] sustrik
|
great!
|
[16:12] cremes
|
is this going into 2.0.9 or 2.1?
|
[16:12] sustrik
|
let's wait for bgranger and lestrrat to confirm it's working first
|
[16:12] cremes
|
sure thing
|
[16:12] sustrik
|
i am afraid of pushing it to a stable version
|
[16:12] cremes
|
i'll drop a note to the ML to make my report "official"
|
[16:13] sustrik
|
yes, good idea
|
[16:13] cremes
|
yeah, i wrote to the ML with my reasoning for this change to go into 2.1 but *not* 2.0.x
|
[16:13] sustrik
|
+1
|
[16:13] sustrik
|
at least it's a motivation for migration to 2.1 :)
|
[16:16] cremes
|
oh yeah, i'm looking forward to the thread migration changes too
|
[16:16] cremes
|
and the new FD_EVENT stuff
|
[16:18] sustrik
|
it's there to test already
|
[16:19] sustrik
|
it may be a bit buggy
|
[16:19] sustrik
|
but still...
|
[16:19] cremes
|
sustrik: i'm pretty busy building out a production app using 0mq 2.0.x so i haven't had any time to test 2.1.x
|
[16:20] cremes
|
when you get closer to a release, you should ping the bindings authors and ask us to test
|
[16:20] sustrik
|
sure, just updating you on the status
|
[16:20] cremes
|
cool, i appreciate it
|
[16:20] sustrik
|
we'll do some testing ourselves
|
[16:20] sustrik
|
in the next few weeks
|
[16:20] sustrik
|
then it's binding autohr's turn
|
[16:20] cremes
|
do you have a time frame for the 2.1 release? 2-4 weeks? 4-6 weeks?
|
[16:22] sustrik
|
hm, it's up to mato, he's going to do the testing
|
[16:22] sustrik
|
bet yeah, something between 2 ans 6 weeks i would say
|
[16:27] cremes
|
ok
|
[17:20] sustrik
|
0MQ now being followed by google trends: http://www.google.com/trends?q=zeromq
|
[17:31] ModusPwnens
|
So, I updated to 2.0.8 and I still have the problem of the benchmarking programs spitting out errors if you enter in very large parameters
|
[17:32] ModusPwnens
|
i'm using windows 7 on both operating systems, but the system running the remote end is 64-bit
|
[17:32] ModusPwnens
|
and here is the pastebin with the error emssage and input
|
[17:32] ModusPwnens
|
http://pastebin.com/0xvmjS95
|
[17:40] sustrik
|
ModusPwnens: throughput test?
|
[17:40] sustrik
|
try increasing the sleep period in remote_the
|
[17:41] sustrik
|
otherwise it doesn't have enough time to send all the messages
|
[17:41] cremes
|
fyi, http://www.igvita.com/2010/09/03/zeromq-modern-fast-networking-stack/
|
[17:41] ModusPwnens
|
Ok, I will try that sustrik
|
[17:42] sustrik
|
cremes: nice!
|
[17:42] sustrik
|
ha, that's the guy complaining about the website!
|
[17:42] sustrik
|
:)
|
[17:42] cremes
|
it's always good to see people writing articles on our favorite networking library
|
[17:43] sustrik
|
yes, given how dull topic the networking is, it's interesting that people even bother
|
[17:43] cremes
|
heh
|
[17:43] sustrik
|
btw, the site is back to normal
|
[17:45] cremes
|
i see that; btw, i do like the new *.com site
|
[17:45] cremes
|
nice and simple
|
[17:46] sustrik
|
few minor things to fix still...
|
[17:46] sustrik
|
the link in the bottom look like there were 6 of them
|
[17:46] sustrik
|
while there are only 3
|
[17:48] sustrik
|
etc.
|
[18:06] ModusPwnens
|
sustrik: I tried your suggestion and received a different error message
|
[18:07] sustrik
|
what error message?
|
[18:07] ModusPwnens
|
http://pastebin.com/7wQpmTBV
|
[18:07] ModusPwnens
|
I just added it to the bottom
|
[18:08] sustrik
|
well, not enough memory
|
[18:08] ModusPwnens
|
so is that expected then?
|
[18:08] sustrik
|
messages are held in memory
|
[18:09] sustrik
|
so if you create more than your memory can hold, it's expected
|
[18:09] sustrik
|
what you can do though
|
[18:09] ModusPwnens
|
Hmm, that makes sense.
|
[18:09] sustrik
|
is to use ZMQ_SWAP socket option
|
[18:09] sustrik
|
to offload excessive messages to the disk
|
[18:10] ModusPwnens
|
Ok. I will try that.
|
[18:52] lvh
|
hey
|
[18:53] lvh
|
is there any progress or change regarding the zeromq-exposing-a-fd idea?
|
[18:53] lvh
|
AFAIK this is what gevent and twisted are waiting for so we can integrate zeromq.
|
[18:53] lvh
|
(I want to try zeromq, but if it won't work with all of my existing event loop-based stuff, like twisted, well, I basically can't use it.)
|
[18:54] sustrik
|
lvh: it's in trunk
|
[18:55] sustrik
|
it's a development version so it can be a bit unstable still
|
[18:55] lvh
|
sustrik: oh cool, that's interesting
|
[18:55] sustrik
|
but it has ZMQ_FD socket option to get an underlying file descriptor from a 0MQ socket
|
[18:55] sustrik
|
and ZMQ_EVENTS option that allows you to check whether socket is ready for readin and/or writing
|
[18:55] lvh
|
git://github.com/zeromq/zeromq2.git ?
|
[18:56] sustrik
|
yes
|
[18:56] sustrik
|
"master"
|
[18:56] lvh
|
Wait, why do people need to know the underlying fd
|
[18:56] sustrik
|
to poll on it
|
[18:56] lvh
|
I thought a zmq socket abstracted away from that and not necessarily have an fd, or not necessarily have exactly one
|
[18:57] lvh
|
I'm not sure I understand. Isn't that zmq's job still?
|
[18:57] sustrik
|
how would you poll on something that's not a fd?
|
[18:57] lvh
|
Is the idea to *not* use the IO parts in ZMQ?
|
[18:57] lvh
|
sustrik: Oh, wait, sorry, I misunderstood what it does.
|
[18:57] sustrik
|
the underlying fd is not the networking fd
|
[18:57] lvh
|
Right.
|
[18:57] sustrik
|
it's 0MQ's internal fd
|
[18:58] lvh
|
Right, yes, that makes a lot more sense.
|
[18:58] sustrik
|
used to communicate with I/O threads
|
[19:00] lvh
|
sustrik: have fun
|
[19:20] bgranger
|
foo = Float(0.00001, config=True)
|
[21:51] troutwine
|
Does anyone have examples of Google's Protocol Buffers being used as a serialization format with zeromq? I've seen it referenced but cannot find any examples.
|
[22:14] erickt
|
anyone who works on pyzmq online today? I'm having trouble trying to make a fedora rpm for the head of the tree
|
[22:15] erickt
|
the commit 2a192b9 seems to have caused fedora 13's rpmbuild to error out
|
[22:43] bgranger
|
erickt: Hi I have a few minutes...
|
[22:44] erickt
|
I think I found the problem, the enums for the devices is wrong
|
[22:44] erickt
|
if I understand cython
|
[22:44] bgranger
|
Possibly...
|
[22:45] bgranger
|
What do you think the issue it.
|
[22:45] erickt
|
ZMQ_QUEUE is defined to 1 in 2.0.8, ZMQ_FORWARDER 2, ZMQ_STREAMER to 3
|
[22:45] erickt
|
well i haven't completely confirmed it, but it seems to cause rpmbuild to fail on f13 I think
|
[22:45] bgranger
|
Is that different than 2.0.7?
|
[22:46] bgranger
|
Do you have an error msg or traceback?
|
[22:46] Tasser
|
what's a context exaclty?
|
[22:46] erickt
|
bgranger: no, that's part of the problem
|
[22:47] erickt
|
it's dying somewhere deep in a redhat command that doesn't say really what's going on
|
[22:47] bgranger
|
Ahh. It is possible that the _zmq.c needs to be re-created for 2.0.8, but I would be a bit surprised.
|
[22:47] bgranger
|
Can you build by hand?
|
[22:47] erickt
|
i just know that in 1770dbb I can build an rpm, but with 2a192b96 i cannot
|
[22:47] bgranger
|
That should show any issues outright
|
[22:47] erickt
|
yeah it builds fine, and seems to be usable
|
[22:48] bgranger
|
Are you buildling against 2.0.8 of zeromq
|
[22:48] erickt
|
which is why I'm confused
|
[22:48] erickt
|
yeah
|
[22:48] bgranger
|
Hmmm, that is odd then. Do you have the script that rpmbuild is using?
|
[22:48] erickt
|
Tasser: it's an object to hold all the threads and underlying bits that zmq needs
|
[22:48] ModusPwnens
|
troutwine, are you still here? I can help you!
|
[22:48] bgranger
|
I do have to leave in a few minutes, so maybe post to the list if you can't figure it out.
|
[22:49] ModusPwnens
|
Also, I am receiving more errors with the benchmarking utility
|
[22:49] ModusPwnens
|
this time not associated with large parameters
|
[22:49] Tasser
|
erickt, can you have more than once context? not likely?
|
[22:49] bgranger
|
Tasser: multiple contexts are just fine.
|
[22:49] Tasser
|
hmm
|
[22:49] erickt
|
bgranger: http://gist.github.com/564682
|
[22:49] bgranger
|
Tasser: the general guideline is 1 per library. You can use it to isolate your own zmq stuff from that of other libs.
|
[22:50] Tasser
|
I'll have to play around a bit
|
[22:50] erickt
|
that's the rpm spec and a driver script
|
[22:51] bgranger
|
Do you know how far it gets?
|
[22:52] erickt
|
it compiles and it's just determining metadata for the rpm
|
[22:52] bgranger
|
erickt: sorry I need to run now, can you email the list. Also, have you talked to T. Spura about this?
|
[22:52] erickt
|
nope, just found this
|