Could and should the port selecting logic be pulled out into one common
implementation used throughout the code base? It seems like having a common
implementation of this would make it a lot easier to solve this type of
problem in the future.

On Thu, Oct 11, 2018 at 11:27 AM Brian Rowe <br...@pivotal.io> wrote:

> Galen, this was actually my first instinct.  Unfortunately this range is
> passed into numerous places such as JGroups and BeanUtils, all of which
> implement their own port selecting logic.
>
> On Thu, Oct 11, 2018 at 10:35 AM, Galen O'Sullivan <gosulli...@pivotal.io>
> wrote:
>
> > Would it be feasible to reserve chosen ports before selecting ephemeral
> > ports? I think this would resolve the collision issue described above.
> >
> > On Thu, Oct 11, 2018 at 9:58 AM Brian Rowe <br...@pivotal.io> wrote:
> >
> > > I agree that we should have defaulted everything to using ephemeral
> ports
> > > and forced clients to explicitly assign ports and membership ranges if
> > > needed (any of the reasons Anthony mentioned above).  However, I don't
> > > think we can change the default assigned ports at this point, unless we
> > > want to try to go through the effort of verifying that no customers are
> > > relying on the default assignments (is that even something we can do
> with
> > > any confidence?).  The membership port range default, however, is
> > something
> > > we should be able to change, so long as we restrict it to a proper
> subset
> > > of the current default.  I think the best we can do right now is just
> to
> > > make it so the default membership port range doesn't conflict with the
> > > default assigned ports.
> > >
> > > On Fri, Oct 5, 2018 at 3:42 PM, Jacob Barrett <jbarr...@pivotal.io>
> > wrote:
> > >
> > > > So in the Dockerfile you explicitly set the server to start on port
> > > 40404,
> > > > problem solved. In whatever environment where you need it on a
> specific
> > > > port you then assign that port. But for all the other cases where we
> > > don’t
> > > > need to know it, like most of the time, it should just pick something
> > > > ephemeral and work.
> > > >
> > > >
> > > > > On Oct 5, 2018, at 1:57 PM, Anthony Baker <aba...@pivotal.io>
> wrote:
> > > > >
> > > > > I think there are a lot of dependencies when deploying geode that
> > rely
> > > > on well-known ports and port ranges (e.g. exporting ports from a
> > > container,
> > > > firewall rules, etc).  Changing the default server port from 40404 to
> > ??
> > > > would break stuff.
> > > > >
> > > > > Here’s the rule from our own Dockerfile:
> > > > >
> > > > > # Default ports:
> > > > > # RMI/JMX 1099
> > > > > # REST 8080
> > > > > # PULE 7070
> > > > > # LOCATOR 10334
> > > > > # CACHESERVER 40404
> > > > > EXPOSE  8080 10334 40404 1099 7070
> > > > >
> > > > > Anthony
> > > > >
> > > > >
> > > > >> On Oct 5, 2018, at 1:45 PM, Jacob Barrett <jbarr...@pivotal.io>
> > > wrote:
> > > > >>
> > > > >> But if all ports where ephemeral by default then no collisions
> > right?
> > > > Why have any port have a default to a single fixed value or
> overlapping
> > > > range of values. Since our opinionated use case is for clients to
> > connect
> > > > via locators then a known server port isn’t important.
> > > > >>
> > > > >>> On Oct 5, 2018, at 10:55 AM, Dan Smith <dsm...@pivotal.io>
> wrote:
> > > > >>>
> > > > >>> The problem is that the membership port is picked *first*. So it
> > may
> > > > pick
> > > > >>> 40404. Then, when the cache server tries to use port 40404, it
> > gets a
> > > > >>> collision.
> > > > >>>
> > > > >>> -Dan
> > > > >>>
> > > > >>>> On Fri, Oct 5, 2018 at 10:52 AM Jacob Barrett <
> > jbarr...@pivotal.io>
> > > > wrote:
> > > > >>>>
> > > > >>>> If we just default to 0 then the OS will pick is a port in
> > whatever
> > > > range
> > > > >>>> is ephemeral and free. We don’t have to do any work. No need to
> > > > define a
> > > > >>>> range and seek an open port.
> > > > >>>>
> > > > >>>>>> On Oct 5, 2018, at 10:40 AM, Dan Smith <dsm...@pivotal.io>
> > wrote:
> > > > >>>>>>
> > > > >>>>>> On Fri, Oct 5, 2018 at 10:31 AM Jacob Barrett <
> > > jbarr...@pivotal.io>
> > > > >>>> wrote:
> > > > >>>>>>
> > > > >>>>>> Why not change the default behavior to that of port 0, letting
> > the
> > > > OS
> > > > >>>>>> select an open ephemeral port if the user doesn’t specify a
> > > specific
> > > > >>>> port?
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> I think what we'd really like to do is change the cache server
> > port
> > > > to
> > > > >>>>> something other than 40404. Maybe 0 (pick a port), or maybe
> > > something
> > > > >>>> less
> > > > >>>>> than 32K.
> > > > >>>>>
> > > > >>>>> Unfortunately, on most linux distributions the ephemeral port
> > range
> > > > is
> > > > >>>> 32K
> > > > >>>>> -> 61K, which includes 40404, which I think is why Brian is
> > > > proposing a
> > > > >>>>> subset of that range.
> > > > >>>>>
> > > > >>>>> -Dan
> > > > >>>>
> > > > >
> > > >
> > >
> >
>

Reply via email to