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]

Reply via email to