[Jboss-cvs] JBossAS SVN: r56305 - branches/Branch_4_0/tomcat/src/main/org/jboss/web/tomcat/tc5/session
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Aug 26 17:23:31 EDT 2006
Author: bstansberry at jboss.com
Date: 2006-08-26 17:23:31 -0400 (Sat, 26 Aug 2006)
New Revision: 56305
Modified:
branches/Branch_4_0/tomcat/src/main/org/jboss/web/tomcat/tc5/session/CacheListener.java
Log:
Optimizations
Modified: branches/Branch_4_0/tomcat/src/main/org/jboss/web/tomcat/tc5/session/CacheListener.java
===================================================================
--- branches/Branch_4_0/tomcat/src/main/org/jboss/web/tomcat/tc5/session/CacheListener.java 2006-08-26 20:40:10 UTC (rev 56304)
+++ branches/Branch_4_0/tomcat/src/main/org/jboss/web/tomcat/tc5/session/CacheListener.java 2006-08-26 21:23:31 UTC (rev 56305)
@@ -24,6 +24,7 @@
import org.jboss.cache.Fqn;
import org.jboss.cache.TreeCache;
import org.jboss.cache.TreeCacheListener;
+import org.jboss.cache.buddyreplication.BuddyManager;
import org.jboss.logging.Logger;
import org.jboss.metadata.WebMetaData;
import org.jgroups.View;
@@ -41,8 +42,12 @@
private static final int POJO_KEY_FQN_INDEX = POJO_ATTRIBUTE_FQN_INDEX + 1;
// Size of an Fqn that points to the root of a session
private static final int POJO_KEY_FQN_SIZE = POJO_KEY_FQN_INDEX + 1;
- // The root of the buddy backup subtree
- private static final String BUDDY_BACKUP = "_BUDDY_BACKUP_";
+ // The index of the root of a buddy backup subtree
+ private static final int BUDDY_BACKUP_ROOT_OWNER_INDEX = BuddyManager.BUDDY_BACKUP_SUBTREE_FQN.size();
+ // The size of the root of a buddy backup subtree (including owner)
+ private static final int BUDDY_BACKUP_ROOT_OWNER_SIZE = BUDDY_BACKUP_ROOT_OWNER_INDEX + 1;
+ // Size of an Fqn that points to the root of a session in the buddy backup region
+ private static final int BUDDY_SESSION_FQN_SIZE = BUDDY_BACKUP_ROOT_OWNER_SIZE + SESSION_FQN_SIZE;
protected static Logger log_ = Logger.getLogger(CacheListener.class);
protected JBossCacheWrapper cacheWrapper_;
@@ -66,7 +71,7 @@
*/
protected boolean needToHandle(Fqn fqn)
{
- return (LocalSessionActivity.isLocallyActive(getIdFromFqn(fqn)) == false
+ return (SessionReplicationContext.isLocallyActive(getIdFromFqn(fqn)) == false
&& fqn.isChildOf(subtreeRoot_));
}
@@ -81,22 +86,16 @@
{
ParsedBuddyFqn pfqn = new ParsedBuddyFqn(fqn);
fqn = pfqn.noBuddy;
- if (fqn == null)
- return;
- if (fqn.size() == POJO_KEY_FQN_SIZE)
+ // Potential removal of a Pojo where we need to unregister
+ // as an Observer.
+ if (fieldBased_
+ && fqn.size() == POJO_KEY_FQN_SIZE
+ && needToHandle(fqn))
{
- // Potential removal of a Pojo where we need to unregister
- // as an Observer.
- if (fieldBased_
- && needToHandle(fqn)
- && JBossCacheService.ATTRIBUTE.equals(fqn.get(POJO_ATTRIBUTE_FQN_INDEX))
- && fqn.size() > POJO_KEY_FQN_INDEX)
- {
- String sessId = getIdFromFqn(fqn);
- String attrKey = (String) fqn.get(POJO_KEY_FQN_INDEX);
- manager_.processRemoteAttributeRemoval(sessId, attrKey);
- }
+ String sessId = getIdFromFqn(fqn);
+ String attrKey = (String) fqn.get(POJO_KEY_FQN_INDEX);
+ manager_.processRemoteAttributeRemoval(sessId, attrKey);
}
else if(fqn.size() == SESSION_FQN_SIZE && needToHandle(fqn))
{
@@ -122,6 +121,9 @@
protected void nodeDirty(Fqn fqn)
{
+ if (fqn.size() != SESSION_FQN_SIZE && fqn.size() != BUDDY_SESSION_FQN_SIZE)
+ return;
+
// Parse the Fqn so we if it has a buddy backup region in it
// we can just deal with the part below that
ParsedBuddyFqn pfqn = new ParsedBuddyFqn(fqn);
@@ -131,7 +133,7 @@
// my webapp, then I should skip it.
// We only deal with events for the root node of a session,
// so skip all others
- if(noBuddy == null || noBuddy.size() != SESSION_FQN_SIZE || !needToHandle(noBuddy)) return;
+ if(noBuddy.size() != SESSION_FQN_SIZE || !needToHandle(noBuddy)) return;
// Query if we have version value. Use the full Fqn, not just the
// "no buddy" part.
@@ -198,7 +200,8 @@
protected String getIdFromFqn(Fqn fqn)
{
return (String)fqn.get(SESSION_ID_FQN_INDEX);
-}
+ }
+
private class ParsedBuddyFqn
{
Fqn raw;
@@ -208,23 +211,18 @@
ParsedBuddyFqn(Fqn raw)
{
this.raw = raw;
- if (raw != null)
+ if (raw.size() > BUDDY_BACKUP_ROOT_OWNER_SIZE
+ && raw.isChildOf(BuddyManager.BUDDY_BACKUP_SUBTREE_FQN))
{
- if (BUDDY_BACKUP.equals(raw.get(0)))
- {
- if (raw.size() > 2)
- {
- owner = (String) raw.get(1);
- noBuddy = raw.getFqnChild(2, raw.size());
- if (log_.isTraceEnabled())
- log_.trace(raw + " parsed to " + noBuddy + " with owner " + owner);
- }
- }
- else
- {
- noBuddy = raw;
- }
+ owner = (String) raw.get(BUDDY_BACKUP_ROOT_OWNER_INDEX);
+ noBuddy = raw.getFqnChild(BUDDY_BACKUP_ROOT_OWNER_SIZE, raw.size());
+ if (log_.isTraceEnabled())
+ log_.trace(raw + " parsed to " + noBuddy + " with owner " + owner);
}
+ else
+ {
+ noBuddy = raw;
+ }
}
}
}
More information about the jboss-cvs-commits
mailing list