[jboss-cvs] JBossAS SVN: r87554 - branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Apr 20 04:10:26 EDT 2009
Author: bstansberry at jboss.com
Date: 2009-04-20 04:10:25 -0400 (Mon, 20 Apr 2009)
New Revision: 87554
Modified:
branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java
branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java
branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java
Log:
[JBAS-5552] Minor fixes
Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java 2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/AbstractContentModificationGenerator.java 2009-04-20 08:10:25 UTC (rev 87554)
@@ -343,10 +343,13 @@
{
throw new IllegalStateException("prerejectedAddParent already set");
}
- else if (this.prerejectedRemoveParent != null)
- {
- throw new IllegalStateException("prerejectedRemoveParent already set");
- }
+ // We allow removing content under something we've rejected
+ // This happens when RepositoryItemMetadata w/ removed=false needs
+ // to be pushed to a node
+// else if (this.prerejectedRemoveParent != null)
+// {
+// throw new IllegalStateException("prerejectedRemoveParent already set");
+// }
ContentModification peeked = peekPreapprovedRemoveParent();
if (peeked != null && toPush.getItem().isChildOf(peeked.getItem()) == false)
Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java 2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/RemoteContentModificationGenerator.java 2009-04-20 08:10:25 UTC (rev 87554)
@@ -104,14 +104,57 @@
protected void handleMissing(String rootName, RepositoryItemMetadata item,
GeneratedModifications mods)
{
- if (item.isRemoved())
+ if (item.isRemoved() == false)
{
- // Remote node doesn't have file, just needs to add a missing RepositoryItemMetadata
- handleRemovalMetadata(rootName, item, mods);
+ handleRemoval(rootName, item, mods);
}
else
{
- handleRemoval(rootName, item, mods);
+ // Remote node doesn't have file, just needs to add a missing RepositoryItemMetadata
+
+ // This is a removal, so it can't be a child of an earlier attempted add.
+ // So, drain any remaining prerejected adds
+ drainPrerejectedAdds(mods);
+ // A removal negates any preapprovedAdd as well
+ mods.setPreapprovedAddParent(null);
+
+ //
+ RepositoryItemMetadata prerejectedRemove = mods.getPrerejectedRemoveParent();
+ if (prerejectedRemove != null && item.isChildOf(prerejectedRemove) == false)
+ {
+ mods.setPrerejectedRemoveParent(null);
+ }
+
+ // Don't lose track of pre-approval stack if there is one
+ ContentModification preapprovedRemove = mods.peekPreapprovedRemoveParent();
+ while (preapprovedRemove != null)
+ {
+ if (item.isChildOf(preapprovedRemove.getItem()))
+ {
+ // we're at the right level
+ break;
+ }
+ else
+ {
+ // We're done with children of preapproved parent so add the cached
+ // modification to the overall list. This will cause it to
+ // get executed *after* its children
+ // (i.e. remove parent after removing children)
+ mods.addModification(mods.popPreapprovedRemoveParent());
+ // Start checking grandparent
+ preapprovedRemove = mods.peekPreapprovedRemoveParent();
+ }
+ }
+
+ ContentModification mod = new ContentModification(Type.REMOVAL_METADATA_FROM_CLUSTER, rootName, item);
+ if (item.isDirectory())
+ {
+ mods.pushPreapprovedRemoveParent(mod);
+ }
+ else
+ {
+ mods.addModification(mod);
+ }
}
}
@@ -275,46 +318,6 @@
}
}
- private void handleRemovalMetadata(String rootName,
- RepositoryItemMetadata item, GeneratedModifications mods)
- {
- // This is a removal, so it can't be a child of an earlier attempted add.
- // So, drain any remaining prerejected adds
- drainPrerejectedAdds(mods);
- mods.setPreapprovedAddParent(null);
-
- // Don't lose track of pre-approval stack if there is one
- ContentModification preapprovedRemove = mods.peekPreapprovedRemoveParent();
- while (preapprovedRemove != null)
- {
- if (item.isChildOf(preapprovedRemove.getItem()))
- {
- // we're at the right level
- break;
- }
- else
- {
- // We're done with children of preapproved parent so add the cached
- // modification to the overall list. This will cause it to
- // get executed *after* its children
- // (i.e. remove parent after removing children)
- mods.addModification(mods.popPreapprovedRemoveParent());
- // Start checking grandparent
- preapprovedRemove = mods.peekPreapprovedRemoveParent();
- }
- }
-
- ContentModification mod = new ContentModification(Type.REMOVAL_METADATA_FROM_CLUSTER, rootName, item);
- if (item.isDirectory())
- {
- mods.pushPreapprovedRemoveParent(mod);
- }
- else
- {
- mods.addModification(mod);
- }
- }
-
@Override
protected void handleRemoval(String rootName, RepositoryItemMetadata item, GeneratedModifications mods)
{
Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java 2009-04-20 08:09:24 UTC (rev 87553)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/repository/clustered/sync/SynchronizationActionContext.java 2009-04-20 08:10:25 UTC (rev 87554)
@@ -49,7 +49,8 @@
throw new IllegalArgumentException("Null inProgressMetadata");
}
this.id = id;
- this.inProgressMetadata = inProgressMetadata;
+ // Defensive copy
+ this.inProgressMetadata = new RepositoryContentMetadata(inProgressMetadata);
}
public SynchronizationId<?> getId()
More information about the jboss-cvs-commits
mailing list