zeromq / zbroker

Elastic pipes
Mozilla Public License 2.0
50 stars 11 forks source link

problem: beacon mode discovery does not work #100

Closed rpedde closed 10 years ago

rpedde commented 10 years ago

To quickly test, I set up zbroker in beacon mode. Running asserts immediately with the following:

zbroker service/0.0.2
Copyright (c) 2014 the Contributors
This Software is provided under the MPLv2 License on an "as is" basis,
without warranty of any kind, either expressed, implied, or statutory.

I: 14-08-06 14:37:41 starting zpipes broker using config in './zbroker.cfg'
N: 14-08-06 14:37:41 starting zpipes service
N: 14-08-06 14:37:41 binding zpipes service to 'ipc://@/zpipes/local'
I: 14-08-06 14:37:41 using UDP beacon discovery service
I: 14-08-06 14:37:41 UDP beaconing on port 5670
I: 14-08-06 14:37:41 joining cluster as BC7462
zbroker: zstr.c:172: zstr_recvx: Assertion `source' failed.
Aborted

broker config:

#   Default zbroker configuration

#   Apply to the whole broker
server
    timeout = 10000     #   Client connection timeout, msec
    background = 0      #   Run as background process
    workdir = .         #   Working directory for daemon
    animate = 1         #   Do we animate or not?

#   Apply to the zpipes server only
zpipes_server
    echo = binding zpipes service to 'ipc://@/zpipes/local'
    bind
        endpoint = ipc://@/zpipes/local

#   Zyre cluster configuration
zyre
#    name = zbroker      #   Default = random name
    # discovery = gossip  #   beacon | gossip
    discovery = beacon

    #   Beacon discovery uses UDP broadcasts (CZMQ zbeacon class)
    beacon
        interface = auto    #   Beacon network interface, default = auto
        interval = 250      #   Beacon interval, default = 1000 msec
        port = 5670         #   Beacon UDP port, default = 5670

    #   Gossip discovery uses loosely-connected TCP (CZMQ zgossip),
    #   must bind or connect to
    gossip
        #   This is our Zyre endpoint that we'll broadcast over the
        #   gossip network; it must be accessible to all brokers in
        #   the network. Default is hostname + ephemeral port.
        endpoint = tcp://eth0:5671
        announce = tcp://localhost:5671
        #   This is the network configuration for the gossip service
        #   which binds to a set of endpoints and connects to a set
        #   of endpoints (independently of Zyre)
        bind = ipc://@/zgossip/hub
        connect = ipc://@/zgossip/hub2

This config is a bit messy, as I was playing with the gossip stuff, but I include the config as-is for repro purposes.

hintjens commented 10 years ago

Can you get a stack backtrace for this assertion failure?

On Wed, Aug 6, 2014 at 9:41 PM, Ron Pedde notifications@github.com wrote:

To quickly test, I set up zbroker in beacon mode. Running asserts immediately with the following:

zbroker service/0.0.2 Copyright (c) 2014 the Contributors This Software is provided under the MPLv2 License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory.

I: 14-08-06 14:37:41 starting zpipes broker using config in './zbroker.cfg' N: 14-08-06 14:37:41 starting zpipes service N: 14-08-06 14:37:41 binding zpipes service to 'ipc://@/zpipes/local' I: 14-08-06 14:37:41 using UDP beacon discovery service I: 14-08-06 14:37:41 UDP beaconing on port 5670 I: 14-08-06 14:37:41 joining cluster as BC7462 zbroker: zstr.c:172: zstr_recvx: Assertion `source' failed. Aborted

broker config:


Apply to the whole broker

server
timeout = 10000 # Client connection timeout, msec
background = 0 # Run as background process
workdir = . # Working directory for daemon
animate = 1 # Do we animate or not?
Apply to the zpipes server only

zpipes_server
echo = binding zpipes service to 'ipc://@/zpipes/local'
bind
endpoint = ipc://@/zpipes/local
Zyre cluster configuration

zyre
name = zbroker # Default = random name

# discovery = gossip  #   beacon | gossip

discovery = beacon

# Beacon discovery uses UDP broadcasts (CZMQ zbeacon class)

beacon
    interface = auto    #   Beacon network interface, default = auto
    interval = 250      #   Beacon interval, default = 1000 msec
    port = 5670         #   Beacon UDP port, default = 5670

# Gossip discovery uses loosely-connected TCP (CZMQ zgossip),

# must bind or connect to

gossip
    #   This is our Zyre endpoint that we'll broadcast over the
    #   gossip network; it must be accessible to all brokers in
    #   the network. Default is hostname + ephemeral port.
    endpoint = tcp://eth0:5671
    announce = tcp://localhost:5671
    #   This is the network configuration for the gossip service
    #   which binds to a set of endpoints and connects to a set
    #   of endpoints (independently of Zyre)
    bind = ipc://@/zgossip/hub
    connect = ipc://@/zgossip/hub2

This config is a bit messy, as I was playing with the gossip stuff, but I include the config as-is for repro purposes.

—
Reply to this email directly or view it on GitHub
https://github.com/zeromq/zbroker/issues/100.
rpedde commented 10 years ago

I'll see what I can do

rpedde commented 10 years ago

is this enough, or do you need an -O0 -g or any variable dumps?

(gdb) bt
#0  0x00007ffff71ab475 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff71ae6f0 in *__GI_abort () at abort.c:92
#2  0x00007ffff71a4621 in *__GI___assert_fail (assertion=0x7ffff779c48c "source", file=<optimized out>, line=172, 
    function=0x7ffff779c55b "zstr_recvx") at assert.c:81
#3  0x00007ffff778af0b in zstr_recvx (source=0x0, string_p=0x7ffff4db1e38) at zstr.c:172
#4  0x00007ffff79bb84c in zyre_node_recv_gossip () from /opt/bundler/zvm2-zpipes/zvm2-zpipes-00004/lib/libzyre.so.1
#5  0x00007ffff79bbb87 in zyre_node_actor () from /opt/bundler/zvm2-zpipes/zvm2-zpipes-00004/lib/libzyre.so.1
#6  0x00007ffff776703d in s_thread_shim (args=0x613c00) at zactor.c:64
#7  0x00007ffff6ce1b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#8  0x00007ffff72550ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#9  0x0000000000000000 in ?? ()
(gdb)
rpedde commented 10 years ago

should also add:

zeromq4-x https://github.com/zeromq/zeromq4-x@master (ce75ea74484237966825af1f416ea107a1bf7922)
czmq https://github.com/zeromq/czmq@master (14e225b34f0d6f1caeabcb6e443cbbc25c88a775)
zyre https://github.com/zeromq/zyre@master (d7decd3088f94c16960ba0f89558fb420ea77173)
libzmtp https://github.com/zeromq/libzmtp@master (5cf4350e1a2bce213fbdee6db2f918c04d50ac9d)
zbroker https://github.com/zeromq/zbroker@master (9b25459d9d81bd093b2e095af931c09c7282d3df)

in case you want to locally repro

hintjens commented 10 years ago

This is perfect, thanks.

On Wed, Aug 6, 2014 at 10:31 PM, Ron Pedde notifications@github.com wrote:

is this enough, or do you need an -O0 -g or any variable dumps?

(gdb) bt

0 0x00007ffff71ab475 in *__GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64

1 0x00007ffff71ae6f0 in *__GI_abort () at abort.c:92

2 0x00007ffff71a4621 in *__GI___assert_fail (assertion=0x7ffff779c48c "source", file=, line=172,

function=0x7ffff779c55b "zstr_recvx") at assert.c:81

3 0x00007ffff778af0b in zstr_recvx (source=0x0, string_p=0x7ffff4db1e38) at zstr.c:172

4 0x00007ffff79bb84c in zyre_node_recv_gossip () from /opt/bundler/zvm2-zpipes/zvm2-zpipes-00004/lib/libzyre.so.1

5 0x00007ffff79bbb87 in zyre_node_actor () from /opt/bundler/zvm2-zpipes/zvm2-zpipes-00004/lib/libzyre.so.1

6 0x00007ffff776703d in s_thread_shim (args=0x613c00) at zactor.c:64

7 0x00007ffff6ce1b50 in start_thread (arg=) at pthread_create.c:304

8 0x00007ffff72550ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112

9 0x0000000000000000 in ?? ()

(gdb)

— Reply to this email directly or view it on GitHub https://github.com/zeromq/zbroker/issues/100#issuecomment-51392681.

hintjens commented 10 years ago

Ah,,, I'll retest this combo; all development and regression testing is on libzmq master rather than zeromq4-x though it should not make a difference.

On Wed, Aug 6, 2014 at 10:32 PM, Ron Pedde notifications@github.com wrote:

should also add:

zeromq4-x https://github.com/zeromq/zeromq4-x@master (ce75ea74484237966825af1f416ea107a1bf7922) czmq https://github.com/zeromq/czmq@master (14e225b34f0d6f1caeabcb6e443cbbc25c88a775) zyre https://github.com/zeromq/zyre@master (d7decd3088f94c16960ba0f89558fb420ea77173) libzmtp https://github.com/zeromq/libzmtp@master (5cf4350e1a2bce213fbdee6db2f918c04d50ac9d) zbroker https://github.com/zeromq/zbroker@master (9b25459d9d81bd093b2e095af931c09c7282d3df)

— Reply to this email directly or view it on GitHub https://github.com/zeromq/zbroker/issues/100#issuecomment-51392907.

rpedde commented 10 years ago

i can totally swap over to zeromq master as well. just let me know where i should be.

hintjens commented 10 years ago

Fixed by https://github.com/hintjens/zyre/commit/71c759fd1c847bb1f8443283ebe6d50fe0bd4043

rpedde commented 10 years ago

Believe this to be fixed.