On Tue, Sep 5, 2017 at 9:02 AM Amit Saha <[email protected]> wrote:

> On Tue, 5 Sep 2017 at 6:44 am, Ken Payson <[email protected]> wrote:
>
>> gRPC Python sets the SO_REUSEADDR option on server sockets, which allows
>> multiple servers to bind to the same port.
>>
>
> Thanks. Is there any reason why this is set to be the default behavior?
>

Searching around, I can see that this *may* be desired behavior and hence
gRPC has made a pragmatic choice. However, it seems to be most useful in a
scenario where an existing socket is in the TIME_WAIT state and we want a
new server process to bind to the same addr/port. However, two questions:

1. This is not the case here - both of my servers are in LISTEN

2. Next, considering (1), does it not introduce a race condition when we
have more than one process listening on the same socket? (let's say for
whatever reason, a server process is already running and we have started
another unaware, since we don't get an error).

Will appreciate any insights/pointers.

Thanks,
Amit.




>
>
>
>> On Mon, Sep 4, 2017 at 5:58 AM, Amit Saha <[email protected]> wrote:
>>
>>> Hey all,
>>>
>>> This is the relevant part of my server:
>>>
>>> def serve():
>>>   server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
>>>   users_service.add_UsersServicer_to_server(UsersService(), server)
>>>   res = server.add_insecure_port('127.0.0.1:50051')
>>>   server.start()
>>>   try:
>>>     while True:
>>>       time.sleep(_ONE_DAY_IN_SECONDS)
>>>   except KeyboardInterrupt:
>>>     server.stop(0)
>>>
>>>
>>> On OS X, by mistake i started the server twice in different terminal
>>> sessions and I expected it to fail the second time (address already bound,
>>> etc). However, it didn't error out and this is what I see via lsof:
>>>
>>> $ sudo lsof -iTCP:50051
>>>
>>> COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
>>> Python  12120 amit    4u  IPv6 0xffbffb1742aa0f0f      0t0  TCP
>>> localhost:50051 (LISTEN)
>>> Python  12157 amit    4u  IPv6 0xffbffb1742aa144f      0t0  TCP
>>> localhost:50051 (LISTEN)
>>>
>>> Curiously enough, they both have the same FD.
>>>
>>> (I verified it with a Flask application to see if it was something
>>> Python specific, and i do see the expected error message when I try to
>>> start a second instance of the same)
>>>
>>> Thanks for any hints in advance.
>>>
>>> Best Wishes,
>>> Amit.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "grpc.io" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>
>>
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/grpc-io.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/grpc-io/7bef9f00-c9fa-4cdc-91c7-c3555c177c9a%40googlegroups.com
>>> <https://groups.google.com/d/msgid/grpc-io/7bef9f00-c9fa-4cdc-91c7-c3555c177c9a%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CANODV3nES0Rprocx1HSnd9r5HkQMgdMfodR4Z2Mc3%2BJiZ%3DNOcw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to