Thanks John!

On Thu, May 3, 2018 at 11:28 AM, John Blum <jb...@pivotal.io> wrote:

> Kirk-
>
> Follow this logic...
>
>
> [1]
> https://github.com/spring-projects/spring-session-data-
> geode/blob/master/samples/boot/gemfire/src/main/java/sample/client/
> IntegrationTestConfiguration.java#L70-L71
>
> Which is based on the Registration of a ClientMembershipListener...
>
> [2]
> https://github.com/spring-projects/spring-session-data-
> geode/blob/master/samples/boot/gemfire/src/main/java/sample/client/
> IntegrationTestConfiguration.java#L154-L167
>
> And this logic...
>
> [3]
> https://github.com/spring-projects/spring-session-data-
> geode/blob/master/samples/boot/gemfire/src/main/java/sample/client/
> IntegrationTestConfiguration.java#L103-L109
>
> And this logic for reassurance...
>
> [4]
> https://github.com/spring-projects/spring-session-data-
> geode/blob/master/samples/boot/gemfire/src/main/java/sample/client/
> IntegrationTestConfiguration.java#L112-L137
>
>
> I hit similar Exceptions in the Spring Session Data Geode client/server
> integration test suite.
>
> If you have questions, let me know.
>
> Regards,
> -John
>
>
>
>
> On Thu, May 3, 2018 at 11:03 AM, Kirk Lund <kl...@apache.org> wrote:
>
> > Anil and I were hoping that adding line 4 below would remove the race,
> but
> > it doesn't. CacheServer.isRunning() returns true as soon as AcceptorImpl
> is
> > non-null which is still before ServerSocket.accept() has been invoked.
> The
> > race still exists with this...
> >
> > 1: CacheServer cacheServer = getCache().addCacheServer();
> > 2: cacheServer.setPort(0);
> > 3: cacheServer.start();
> > *4: await().atMost(1, MINUTES).until(() -> cacheServer.isRunning());*
> > 5: return cacheServer.getPort();
> >
> > I think we would have to change the implementation of
> > CacheServer.isRunning() to check ServerSocket.isBound():
> >
> > CacheServer.isRunning:
> >   public boolean isRunning() {
> >     return this.acceptor != null && this.acceptor.isRunning();
> >   }
> >
> > AcceptorImpl.isRunning:
> >   public boolean isRunning() {
> >     return !this.shutdownStarted;
> >   }
> >
> > Would need to change to something like this:
> >   public boolean isRunning() {
> >     return !this.shutdownStarted *&& serverSock.isBound();*
> >   }
> >
> > Any opinions or alternatives? If I add "*&& serverSock.isBound();*" am I
> > going to break isRunning?
> >
> > On Thu, May 3, 2018 at 9:33 AM, Kirk Lund <kl...@apache.org> wrote:
> >
> > > I have a test which starts a server and then starts a client. But the
> > > client intermittently fails with NoSubscriptionServersAvailable
> Exception
> > > (see full stack below).
> > >
> > > Seems like there must be something asynchronous in the startup of a
> > > CacheServer that I need to wait for. Any ideas what I need to test for
> to
> > > avoid NoSubscriptionServersAvailableException?
> > >
> > > org.apache.geode.internal.cache.InitializedDiskRegionWithIoExc
> > eptionRegressionTest
> > > > cacheServerPersistWithIOExceptionShouldShutdown FAILED
> > >     org.apache.geode.test.dunit.RMIException: While invoking
> > > org.apache.geode.internal.cache.InitializedDiskRegionWithIoExc
> > > eptionRegressionTest$$Lambda$23/1222369873.run in VM 1 running on Host
> > > 0b1780a0efc9 with 4 VMs
> > >         at org.apache.geode.test.dunit.VM.invoke(VM.java:436)
> > >         at org.apache.geode.test.dunit.VM.invoke(VM.java:405)
> > >         at org.apache.geode.test.dunit.VM.invoke(VM.java:348)
> > >         at org.apache.geode.internal.cache.
> > InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.cacheServerPersistWithIOExceptionShouldShutdown(
> > > InitializedDiskRegionWithIoExceptionRegressionTest.java:113)
> > >
> > > Caused by:
> > > org.apache.geode.cache.NoSubscriptionServersAvailableException:
> > > org.apache.geode.cache.NoSubscriptionServersAvailableException: Could
> > not
> > > initialize a primary queue on startup. No queue servers available.
> > >     at org.apache.geode.cache.client.internal.QueueManagerImpl.
> > > getAllConnections(QueueManagerImpl.java:187)
> > >     at org.apache.geode.cache.client.internal.OpExecutorImpl.
> > > executeOnQueuesAndReturnPrimaryResult(OpExecutorImpl.java:539)
> > >     at org.apache.geode.cache.client.internal.PoolImpl.
> > > executeOnQueuesAndReturnPrimaryResult(PoolImpl.java:850)
> > >     at org.apache.geode.cache.client.internal.RegisterInterestOp.
> > > execute(RegisterInterestOp.java:58)
> > >     at org.apache.geode.cache.client.internal.ServerRegionProxy.
> > > registerInterest(ServerRegionProxy.java:356)
> > >     at org.apache.geode.internal.cache.LocalRegion.
> > processSingleInterest(
> > > LocalRegion.java:3749)
> > >     at org.apache.geode.internal.cache.LocalRegion.
> > > registerInterest(LocalRegion.java:3840)
> > >     at org.apache.geode.internal.cache.LocalRegion.
> > > registerInterest(LocalRegion.java:3638)
> > >     at org.apache.geode.internal.cache.LocalRegion.
> > > registerInterest(LocalRegion.java:3633)
> > >     at org.apache.geode.internal.cache.LocalRegion.
> > > registerInterest(LocalRegion.java:3628)
> > >     at org.apache.geode.internal.cache.InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.createClientCache(InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.java:172)
> > >     at org.apache.geode.internal.cache.InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.lambda$cacheServerPersistWithIOExcept
> > > ionShouldShutdown$2c6907a2$1(InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.java:113)
> > >
> > > Caused by:
> > > org.apache.geode.cache.NoSubscriptionServersAvailableException: Could
> > not
> > > initialize a primary queue on startup. No queue servers available.
> > >     at org.apache.geode.cache.client.internal.QueueManagerImpl.
> > > initializeConnections(QueueManagerImpl.java:585)
> > >     at org.apache.geode.cache.client.internal.QueueManagerImpl.
> > > start(QueueManagerImpl.java:296)
> > >     at org.apache.geode.cache.client.internal.PoolImpl.start(
> > > PoolImpl.java:347)
> > >     at org.apache.geode.cache.client.internal.PoolImpl.
> > > finishCreate(PoolImpl.java:172)
> > >     at org.apache.geode.cache.client.internal.PoolImpl.create(
> > > PoolImpl.java:158)
> > >     at org.apache.geode.internal.cache.PoolFactoryImpl.create(
> > > PoolFactoryImpl.java:346)
> > >     at org.apache.geode.internal.cache.InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.createClientCache(InitializedDiskRegionWithIoExc
> > > eptionRegressionTest.java:164)
> > >     ... 1 more
> > >
> > >
> >
>
>
>
> --
> -John
> john.blum10101 (skype)
>

Reply via email to