https://issues.apache.org/bugzilla/show_bug.cgi?id=53606
Priority: P2
Bug ID: 53606
Assignee: [email protected]
Summary: NullPointerException in TcpPingInterceptor
Severity: blocker
Classification: Unclassified
Reporter: [email protected]
Hardware: PC
Status: NEW
Version: unspecified
Component: Cluster
Product: Tomcat 7
start(int) method initializes failureDetector (resp. staticMembers) only if
TcpFailureDetector (resp. StaticMembershipInterceptor) was found in channel
interceptors stack.
Without TcpFailureDetector (resp. StaticMembershipInterceptor), futur calls to
sendPing() will fail because failureDetector (resp. staticMembers) wasn't
initialized at least to new WeakReference<StaticMembershipInterceptor>(null).
Fix:
v1) initializes weak references containers:
Replace:
WeakReference<TcpFailureDetector> failureDetector = null;
WeakReference<StaticMembershipInterceptor> staticMembers = null;
for:
WeakReference<TcpFailureDetector> failureDetector = new
WeakReference<TcpFailureDetector>();
WeakReference<StaticMembershipInterceptor> staticMembers = new
WeakReference<StaticMembershipInterceptor>();
v2) checks field before dereferencing it:
sendPing becomes:
protected void sendPing() {
if (failureDetector!=null && failureDetector.get()!=null) {
//we have a reference to the failure detector
//piggy back on that dude
failureDetector.get().checkMembers(true);
}else {
if (staticOnly && staticMembers!=null && staticMembers.get()!=null)
{
sendPingMessage(staticMembers.get().getMembers());
} else {
sendPingMessage(getMembers());
}
}
}
affect also tomcat 6
regards
fred arnoud
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]