[exo-jcr-commits] exo-jcr SVN: r4343 - jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu May 5 04:38:09 EDT 2011
Author: tolusha
Date: 2011-05-05 04:38:08 -0400 (Thu, 05 May 2011)
New Revision: 4343
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
Log:
EXOJCR-1331: Cache can contain NullNodeData for root node after RDBMS restore
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-05-05 07:18:58 UTC (rev 4342)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-05-05 08:38:08 UTC (rev 4343)
@@ -63,6 +63,11 @@
protected final RepositoryService repositoryService;
/**
+ * Indicates if RDBMS restore in progress or not.
+ */
+ volatile private boolean isRestoreInProgress = false;
+
+ /**
* Constructor RdbmsWorkspaceInitializer.
*/
public RdbmsWorkspaceInitializer(WorkspaceEntry config, RepositoryEntry repConfig,
@@ -81,6 +86,17 @@
* {@inheritDoc}
*/
@Override
+ public boolean isWorkspaceInitialized()
+ {
+ // If someone invoke isWorkspaceInitialized() during restore then NullNodeData for root node will be pushed
+ // into the cache and will be there even restore is finished and data will be placed into DB.
+ return isRestoreInProgress ? false : super.isWorkspaceInitialized();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public NodeData initWorkspace() throws RepositoryException
{
if (isWorkspaceInitialized())
@@ -90,7 +106,15 @@
long start = System.currentTimeMillis();
- restoreAction();
+ isRestoreInProgress = true;
+ try
+ {
+ restoreAction();
+ }
+ finally
+ {
+ isRestoreInProgress = false;
+ }
final NodeData root = (NodeData)dataManager.getItemData(Constants.ROOT_UUID);
More information about the exo-jcr-commits
mailing list