Author: manik.surtani(a)jboss.com
Date: 2009-04-30 06:33:33 -0400 (Thu, 30 Apr 2009)
New Revision: 8025
Modified:
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyFqnTransformerTest.java
Log:
[JBCACHE-1507] (IllegalArgumentException during BuddyManager handling of removed node)
Fixed BuddyFqnTransformer + added unit test
Modified:
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java
===================================================================
---
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java 2009-04-29
22:08:39 UTC (rev 8024)
+++
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java 2009-04-30
10:33:33 UTC (rev 8025)
@@ -102,7 +102,10 @@
if (!isBackupFqn(fqn)) return fqn;
if (fqn.equals(BUDDY_BACKUP_SUBTREE_FQN)) return Fqn.ROOT;
// remove the first 2 (or 3 in the case of a dead backup region) elements
- return fqn.getSubFqn(isDeadBackupFqn(fqn) ? 3 : 2, fqn.size());
+ boolean isDead = isDeadBackupFqn(fqn);
+ int fqnSz = fqn.size();
+ if (isDead && fqnSz == 2) return Fqn.ROOT;
+ return fqn.getSubFqn(isDead ? 3 : 2, fqnSz);
}
/**
Modified:
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyFqnTransformerTest.java
===================================================================
---
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyFqnTransformerTest.java 2009-04-29
22:08:39 UTC (rev 8024)
+++
core/trunk/src/test/java/org/jboss/cache/buddyreplication/BuddyFqnTransformerTest.java 2009-04-30
10:33:33 UTC (rev 8025)
@@ -39,4 +39,18 @@
{
assert Fqn.ROOT ==
buddyFqnTransformer.getBackupRootFromFqn(BuddyManager.BUDDY_BACKUP_SUBTREE_FQN);
}
+
+ public void testGetActualFqnOnDeadBackup()
+ {
+ Fqn deadBackup =
Fqn.fromString("/_BUDDY_BACKUP_/1.2.3.4_5678:DEAD/5/a/b/c/d");
+ Fqn actualFqn = Fqn.fromString("/a/b/c/d");
+ assert actualFqn.equals(buddyFqnTransformer.getActualFqn(deadBackup));
+ }
+
+ public void testGetActualFqnOnIncompleteDeadBackup()
+ {
+ Fqn deadBackup = Fqn.fromString("/_BUDDY_BACKUP_/1.2.3.4_5678:DEAD");
+ Fqn actualFqn = Fqn.ROOT;
+ assert actualFqn.equals(buddyFqnTransformer.getActualFqn(deadBackup));
+ }
}
Show replies by thread