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]