8073148: "The server has decided to close this client connection" repeated continuously

Reviewed-by: jbachorik
This commit is contained in:
Shanliang Jiang 2015-03-05 14:54:07 +01:00
parent b4061375cc
commit b7c2d1b8fe
2 changed files with 14 additions and 6 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -538,6 +538,13 @@ public abstract class ClientNotifForwarder {
currentFetchThread = null;
}
if (nr == null) {
if (logger.traceOn()) {
logger.trace("NotifFetcher-run",
"Recieved null object as notifs, stops fetching because the "
+ "notification server is terminated.");
}
}
if (nr == null || shouldStop()) {
// tell that the thread is REALLY stopped
setState(STOPPED);
@ -657,7 +664,7 @@ public abstract class ClientNotifForwarder {
return null;
}
if (shouldStop())
if (shouldStop() || nr == null)
return null;
startSequenceNumber = nr.getNextSequenceNumber();

View File

@ -1254,10 +1254,11 @@ public class RMIConnectionImpl implements RMIConnection, Unreferenced {
if (serverTerminated) {
// we must not call fetchNotifs() if the server is
// terminated (timeout elapsed).
//
return new NotificationResult(0L, 0L,
new TargetedNotification[0]);
// returns null to force the client to stop fetching
if (logger.debugOn()) logger.debug("fetchNotifications",
"The notification server has been closed, "
+ "returns null to force the client to stop fetching");
return null;
}
final long csn = clientSequenceNumber;
final int mn = maxNotifications;