Author: pero Date: Wed Mar 26 11:01:48 2008 New Revision: 641445 URL: http://svn.apache.org/viewvc?rev=641445&view=rev Log: Fix possible NPE
Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/tcp/ReplicationValve.java Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/tcp/ReplicationValve.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/tcp/ReplicationValve.java?rev=641445&r1=641444&r2=641445&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/tcp/ReplicationValve.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/tcp/ReplicationValve.java Wed Mar 26 11:01:48 2008 @@ -331,10 +331,10 @@ if(isDoProcessingStats()) { totalstart = System.currentTimeMillis(); } - if (primaryIndicator) { + Context context = request.getContext(); + if (primaryIndicator && context != null) { createPrimaryIndicator(request) ; } - Context context = request.getContext(); boolean isCrossContext = context != null && context instanceof StandardContext && ((StandardContext) context).getCrossContext(); @@ -346,24 +346,26 @@ crossContextSessions.set(new ArrayList()); } getNext().invoke(request, response); - Manager manager = request.getContext().getManager(); - if (manager != null && manager instanceof ClusterManager) { - ClusterManager clusterManager = (ClusterManager) manager; - CatalinaCluster containerCluster = (CatalinaCluster) getContainer().getCluster(); - if (containerCluster == null) { - if (log.isWarnEnabled()) - log.warn(sm.getString("ReplicationValve.nocluster")); - return; - } - // valve cluster can access manager - other cluster handle replication - // at host level - hopefully! - if(containerCluster.getManager(clusterManager.getName()) == null) - return ; - if(containerCluster.hasMembers()) { - sendReplicationMessage(request, totalstart, isCrossContext, clusterManager, containerCluster); - } else { - resetReplicationRequest(request,isCrossContext); - } + if(context != null) { + Manager manager = context.getManager(); + if (manager != null && manager instanceof ClusterManager) { + ClusterManager clusterManager = (ClusterManager) manager; + CatalinaCluster containerCluster = (CatalinaCluster) getContainer().getCluster(); + if (containerCluster == null) { + if (log.isWarnEnabled()) + log.warn(sm.getString("ReplicationValve.nocluster")); + return; + } + // valve cluster can access manager - other cluster handle replication + // at host level - hopefully! + if(containerCluster.getManager(clusterManager.getName()) == null) + return ; + if(containerCluster.hasMembers()) { + sendReplicationMessage(request, totalstart, isCrossContext, clusterManager, containerCluster); + } else { + resetReplicationRequest(request,isCrossContext); + } + } } } finally { // Array must be remove: Current master request send endAccess at recycle. @@ -632,29 +634,32 @@ protected void createPrimaryIndicator(Request request) throws IOException { String id = request.getRequestedSessionId(); if ((id != null) && (id.length() > 0)) { - Manager manager = request.getContext().getManager(); - Session session = manager.findSession(id); - if (session instanceof ClusterSession) { - ClusterSession cses = (ClusterSession) session; - if (cses != null) { - Boolean isPrimary = new Boolean(cses.isPrimarySession()); - if (log.isDebugEnabled()) - log.debug(sm.getString( - "ReplicationValve.session.indicator", request.getContext().getName(),id, - primaryIndicatorName, isPrimary)); - request.setAttribute(primaryIndicatorName, isPrimary); - } - } else { - if (log.isDebugEnabled()) { - if (session != null) { - log.debug(sm.getString( - "ReplicationValve.session.found", request.getContext().getName(),id)); - } else { - log.debug(sm.getString( - "ReplicationValve.session.invalid", request.getContext().getName(),id)); - } - } - } + Context context = request.getContext() ; + if(context != null) { + Manager manager = context.getManager(); + Session session = manager.findSession(id); + if (session instanceof ClusterSession) { + ClusterSession cses = (ClusterSession) session; + if (cses != null) { + Boolean isPrimary = new Boolean(cses.isPrimarySession()); + if (log.isDebugEnabled()) + log.debug(sm.getString( + "ReplicationValve.session.indicator", context.getName(),id, + primaryIndicatorName, isPrimary)); + request.setAttribute(primaryIndicatorName, isPrimary); + } + } else { + if (log.isDebugEnabled()) { + if (session != null) { + log.debug(sm.getString( + "ReplicationValve.session.found", context.getName(),id)); + } else { + log.debug(sm.getString( + "ReplicationValve.session.invalid", context.getName(),id)); + } + } + } + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]