kirklund commented on issue #4963:
URL: https://github.com/apache/geode/pull/4963#issuecomment-617886184
@upthewaterspout, I have some questions about your review of Cache.close()
changes.
{noformat}
@Override
public void close(String reason, Throwable systemFailureCause, boolean
keepAlive,
boolean keepDS, boolean skipAwait) {
securityService.close();
if (isClosed()) {
if (!skipAwait &&
!Thread.currentThread().equals(CLOSING_THREAD.get())) {
waitUntilClosed();
}
return;
}
if (!keepDS && systemFailureCause == null
&& (isReconnecting() || system.getReconnectedSystem() != null)) {
logger.debug(
"Cache is shutting down distributed system connection.
isReconnecting={} reconnectedSystem={} keepAlive={} keepDS={}",
isReconnecting(), system.getReconnectedSystem(), keepAlive,
keepDS);
system.stopReconnectingNoDisconnect();
if (system.getReconnectedSystem() != null) {
system.getReconnectedSystem().disconnect();
}
return;
}
synchronized (GemFireCacheImpl.class) {
// ALL CODE FOR CLOSE SHOULD NOW BE UNDER STATIC SYNCHRONIZATION OF
GemFireCacheImpl.class
// static synchronization is necessary due to static resources
if (isClosed()) {
if (!skipAwait &&
!Thread.currentThread().equals(CLOSING_THREAD.get())) {
waitUntilClosed();
}
return;
}
CLOSING_THREAD.set(Thread.currentThread());
{noformat}
If I remove that 1st early-out, then all subsequent calls will repeatedly
execute the block about the reconnecting system. I’ve read the code that it
invokes — such as
{noformat}
system.stopReconnectingNoDisconnect();
{noformat}
and
{noformat}
system.getReconnectedSystem().disconnect()
{noformat}
… so far, I’m not convinced that it’s safe to remove the 1st early out. Are
you sure it’s safe to invoke these calls more than once? The current behavior
never invokes them more than once.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]