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);
Show replies by date