So here's the what's going on: a User is starting Servers using "start
server" and apparently Clients are able to connect and perform operations
*before* the Cache has completed initialization. So now, I'm being asked to
change "start server" into a 2-command process (as an option):

1) gfsh> start server --name=Server1 --disable-default-server
2) User waits until the Cache initialization is completed
3) gfsh> start client-server-acceptor --name=Server1

I think this is crazy. If this is a problem then Geode Client/Server has a
bigger problem and this requires a fix in Cache initialization, NOT by
adding a new GFSH command.

The launcher class used by GFSH is ServerLauncher, not the older deprecated
CacheServerLauncher. But what you're stating is still correct:
ServerLauncher starts the Client/Server acceptor AFTER the DS is connected
and Cache is created.

So I'm trying to understand why we're trying to solve this in GFSH instead
of in the Server code.

-Kirk


On Thu, Jan 5, 2017 at 12:43 PM, Dan Smith <dsm...@pivotal.io> wrote:

> How are you starting up your system? If you initialize a system with a
> cache.xml or cluster configuration, the cache server and gateway acceptors
> are started last (see CacheCreation.create). If your cache server is
> started using gfsh start server, I believe the acceptor part is also
> started last (see CacheServerLauncher.createCache).
>
> If you are using the API, it's up to you to start the cache server last. I
> don't think there is any latch we can add in that case unless we also added
> a method to indicate that you are done configuring the system.
>
> -Dan
>
> On Thu, Jan 5, 2017 at 11:20 AM, Michael Stolz <mst...@pivotal.io> wrote:
>
> > To be honest I always just thought it was there. I bet most users do.
> This
> > might explain some "unexplained" inconsistencies I have seen at a
> customer.
> >
> > --
> > Mike Stolz
> > Principal Engineer, GemFire Product Manager
> > Mobile: 631-835-4771
> >
> > On Thu, Jan 5, 2017 at 2:09 PM, Kirk Lund <kl...@apache.org> wrote:
> >
> > > So, I'm looking into an issue in which the Geode Server starts up and
> > > accepts connections from Clients and starts handling their requests
> > before
> > > its Cache has completed initialization.
> > >
> > > Regions have a series of initialization latches that local puts and
> gets
> > > are forced to wait on. For example, initializationLatchAfterGetIni
> > > tialImage
> > > is released after GII completes for that Region. Local puts and gets
> are
> > > not allowed to be handled until after GII completes.
> > >
> > > I would expect the Cache to have an initialization latch as well that
> > > Client requests have to wait on before the Geode Server completes Cache
> > > initialization.
> > >
> > > Does anyone know why Cache or AcceptorImpl don't have an initialization
> > > latch like this? Does anyone have a good reason to not add such an
> > > initialization latch to protect incoming Client requests?
> > >
> > > Thanks,
> > > Kirk
> > >
> >
>

Reply via email to