[exo-jcr-commits] exo-jcr SVN: r5819 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Mar 6 08:48:15 EST 2012


Author: tolusha
Date: 2012-03-06 08:48:14 -0500 (Tue, 06 Mar 2012)
New Revision: 5819

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
Log:
EXOJCR-1762: auto-repair for LOCK inconsistency

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java	2012-03-06 13:47:53 UTC (rev 5818)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java	2012-03-06 13:48:14 UTC (rev 5819)
@@ -22,6 +22,10 @@
 import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
 import org.exoplatform.services.jcr.config.WorkspaceEntry;
 import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
+import org.exoplatform.services.jcr.datamodel.ItemType;
+import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.datamodel.QPathEntry;
 import org.exoplatform.services.jcr.impl.Constants;
 import org.exoplatform.services.jcr.impl.checker.DummyRepair;
 import org.exoplatform.services.jcr.impl.checker.EarlierVersionsRemover;
@@ -30,8 +34,8 @@
 import org.exoplatform.services.jcr.impl.checker.InspectionReport;
 import org.exoplatform.services.jcr.impl.checker.NodeRemover;
 import org.exoplatform.services.jcr.impl.checker.PropertyRemover;
+import org.exoplatform.services.jcr.impl.checker.RootAsParentAssigner;
 import org.exoplatform.services.jcr.impl.checker.ValueRecordsRemover;
-import org.exoplatform.services.jcr.impl.checker.RootAsParentAssigner;
 import org.exoplatform.services.jcr.impl.core.lock.LockTableHandler;
 import org.exoplatform.services.jcr.impl.core.lock.LockTableHandlerFactory;
 import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeDataManagerImpl;
@@ -167,11 +171,19 @@
                WorkspaceStorageConnection conn = jdbcDataContainer.openConnection();
                try
                {
-                  if (conn instanceof JDBCStorageConnection)
-                  {
-                     ((JDBCStorageConnection)conn).deleteLockProperties(nodeId);
-                  }
+                  NodeData parent = (NodeData)conn.getItemData(nodeId);
+                  PropertyData prop =
+                     (PropertyData)conn.getItemData(parent, new QPathEntry(Constants.JCR_LOCKISDEEP, 0),
+                        ItemType.PROPERTY);
+                  conn.delete(prop);
+
+                  prop =
+                     (PropertyData)conn.getItemData(parent, new QPathEntry(Constants.JCR_LOCKOWNER, 0),
+                        ItemType.PROPERTY);
+                  conn.delete(prop);
+
                   conn.commit();
+
                   logComment("Lock has been removed form ITEM table. Node UUID: " + nodeId);
                }
                catch (RepositoryException e)
@@ -179,11 +191,6 @@
                   conn.rollback();
                   throw e;
                }
-               catch (SQLException e)
-               {
-                  conn.rollback();
-                  throw e;
-               }
             }
          }
       }



More information about the exo-jcr-commits mailing list