https://issues.apache.org/bugzilla/show_bug.cgi?id=53606

          Priority: P2
            Bug ID: 53606
          Assignee: dev@tomcat.apache.org
           Summary: NullPointerException in TcpPingInterceptor
          Severity: blocker
    Classification: Unclassified
          Reporter: frederic.arn...@gmail.com
          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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to