Darrel Schneider created GEODE-6863: ---------------------------------------
Summary: CI failure: A cache server's bind address is only available if it has been started Key: GEODE-6863 URL: https://issues.apache.org/jira/browse/GEODE-6863 Project: Geode Issue Type: Bug Components: core Reporter: Darrel Schneider This looks like an existing issue that has a very small window of time in which it can fail. It should not be hard to fix. See: http://hydradb.gemfire.pivotal.io/hdb/testresult/5751289 I think the place to fix this is in org.apache.geode.internal.cache.BucketAdvisor.instantiateProfile(InternalDistributedMember, int) It does a test if the server is running and then calls getExternalAddress twice. If the server is stopped after the isRunning check but before getExternalAddress is called then getExternalAddress will throw the IllegalStateException. The following "if" block could be put in a try/catch that catches IllegalStateException and ignores and skips that server if it is no longer running. Another possible fix would be to call getExternalAddress(false) which does not throw IllegalStateException and then right before adding to serverLocations do a check that the server is running. Here is the code that needs to be fixed: {code:java} for (CacheServer cacheServer : servers) { CacheServerImpl server = (CacheServerImpl) cacheServer; if (server.isRunning() && (server.getExternalAddress() != null)) { BucketServerLocation66 location = new BucketServerLocation66(getBucket().getId(), server.getPort(), server.getExternalAddress(), getBucket().isPrimary(), Integer.valueOf(version).byteValue(), server.getCombinedGroups()); serverLocations.add(location); } } {code} {noformat} Found suspect string in log4j at line 4995 [error 2019/06/13 18:35:08.681 GMT <Pooled Waiting Message Processor 1> tid=62] A cache server's bind address is only available if it has been started java.lang.IllegalStateException: A cache server's bind address is only available if it has been started at org.apache.geode.internal.cache.CacheServerImpl.getExternalAddress(CacheServerImpl.java:435) at org.apache.geode.internal.cache.CacheServerImpl.getExternalAddress(CacheServerImpl.java:427) at org.apache.geode.internal.cache.BucketAdvisor.instantiateProfile(BucketAdvisor.java:1611) at org.apache.geode.distributed.internal.DistributionAdvisor.createProfile(DistributionAdvisor.java:1008) at org.apache.geode.internal.cache.BucketAdvisor.sendProfileUpdate(BucketAdvisor.java:1576) at org.apache.geode.internal.cache.BucketAdvisor.acquiredPrimaryLock(BucketAdvisor.java:1160) at org.apache.geode.internal.cache.BucketAdvisor.access$300(BucketAdvisor.java:77) at org.apache.geode.internal.cache.BucketAdvisor$VolunteeringDelegate.doVolunteerForPrimary(BucketAdvisor.java:2471) at org.apache.geode.internal.cache.BucketAdvisor$VolunteeringDelegate.lambda$consumeQueue$0(BucketAdvisor.java:2680) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:959) at org.apache.geode.distributed.internal.ClusterDistributionManager.doWaitingThread(ClusterDistributionManager.java:849) at org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121) at java.lang.Thread.run(Thread.java:748) {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)