New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gossip registry #404
Comments
also i don't see broadcast update messages in the first case |
also then the service connected to already running registry service it receives updates from it, but i don't see any updates send to first service |
root case of the issue, because service2 then connect broadcast sync event, and serivce2 receives all data from service1, but service1 don't receive any service info from service2 |
and LocalState func for connected service does not have any services data in channel, because registry not created when gossip join happening. |
next investigation:
this is not send service data when calls Register in gossip. service1 that start first after boadcast returns, but service2 not. |
@asim , gentle ping |
I do not have time to investigate this right now. Feel free to PR a fix. |
nice, i think that enterprise SLA helps with such cases, can you write in enterprise repo you test system , so that other can understand risks and what you autotest for each commit? |
now i have only one workaround, remove check for join in LocalState and in MergeRemoteState |
I'm write test case for gossip registry. And it works fine, also i'm try to run two micro services with the same registry params and service info not propagated to to each other. Does it possible that some issue present in micro/server code? |
am add to https://github.com/unistack-org/go-micro/blob/gossip/registry/gossip/gossip_test.go failed test case. |
i found! So i'm check in go-micro repo file service_test.go and you use WaitGroup in After start to allow wait then server is fully started. |
and this is not works for real world example
node2:
|
@asim i think that gossip registry must be die. In case of mdns registry you don't expose all data like in gossip. |
i'm try to minimize sended data, but most of the time endpoint is too big.
|
also you mdns register also broken, because you pass endpoint in TXT record, that have limit 255 bytes as of RFC 4408 |
yes, txt records can be concatenated, but this is also limits to udp packet size |
If you have a good solution please propose or PR it. Otherwise you can disable adding endpoints when you register handlers https://godoc.org/github.com/micro/go-micro/server#InternalHandler |
close as #411 merged |
I'm experiment with gossip registry and may be found some specific issue. When i'm start first service1 with
specify gossip.Address("172.16.1.254:4223") and on other server service2 with registry.Addrs("172.16.1.254:4223") and gossip.Address("172.16.1.1:0")
i see that members equal 2 on both sides, but the second service does not registered in registry.
But if i stop service1 and start it with registry.Addrs("172.16.1.254:4223") and gossip.Address("172.16.1.1:xxx") where xxx is port provided by service2 all works fine.
So issue appears only on first service1 when it start first without other members.
The text was updated successfully, but these errors were encountered: