CLOUD-1958 - CLONE - Cloud - "A server error has occured" while accessing a site dashboard.

- Surf libs r1316 - improvements to reporting error conditions from creating surf config presets
 - Share: retrying of Surf config creation if config for dashboard preset fails to create after creating a site. On repeated failure, deletes the site folder instance and requests user tries again later.
 - Repo: better rethrowing of exceptions during surf config creation - ensure txn rollback has a chance to occur

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@55239 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2013-09-11 14:28:29 +00:00
parent f327488966
commit d61456e9db

View File

@@ -43,6 +43,7 @@ import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.query.CannedQueryPageDetails; import org.alfresco.query.CannedQueryPageDetails;
import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingRequest;
@@ -371,10 +372,12 @@ public class ADMRemoteStore extends BaseRemoteStore
catch (AccessDeniedException ae) catch (AccessDeniedException ae)
{ {
res.setStatus(Status.STATUS_UNAUTHORIZED); res.setStatus(Status.STATUS_UNAUTHORIZED);
throw ae;
} }
catch (FileExistsException feeErr) catch (FileExistsException feeErr)
{ {
res.setStatus(Status.STATUS_CONFLICT); res.setStatus(Status.STATUS_CONFLICT);
throw feeErr;
} }
} }
@@ -422,10 +425,12 @@ public class ADMRemoteStore extends BaseRemoteStore
catch (AccessDeniedException ae) catch (AccessDeniedException ae)
{ {
res.setStatus(Status.STATUS_UNAUTHORIZED); res.setStatus(Status.STATUS_UNAUTHORIZED);
throw ae;
} }
catch (FileExistsException feeErr) catch (FileExistsException feeErr)
{ {
res.setStatus(Status.STATUS_CONFLICT); res.setStatus(Status.STATUS_CONFLICT);
throw feeErr;
} }
catch (Exception e) catch (Exception e)
{ {
@@ -433,6 +438,7 @@ public class ADMRemoteStore extends BaseRemoteStore
// none of them should occur if the XML document is well formed // none of them should occur if the XML document is well formed
logger.error(e); logger.error(e);
res.setStatus(Status.STATUS_INTERNAL_SERVER_ERROR); res.setStatus(Status.STATUS_INTERNAL_SERVER_ERROR);
throw new AlfrescoRuntimeException(e.getMessage(), e);
} }
} }
@@ -541,6 +547,7 @@ public class ADMRemoteStore extends BaseRemoteStore
catch (AccessDeniedException ae) catch (AccessDeniedException ae)
{ {
res.setStatus(Status.STATUS_UNAUTHORIZED); res.setStatus(Status.STATUS_UNAUTHORIZED);
throw ae;
} }
} }
@@ -587,6 +594,7 @@ public class ADMRemoteStore extends BaseRemoteStore
catch (AccessDeniedException ae) catch (AccessDeniedException ae)
{ {
res.setStatus(Status.STATUS_UNAUTHORIZED); res.setStatus(Status.STATUS_UNAUTHORIZED);
throw ae;
} }
} }
@@ -780,6 +788,8 @@ public class ADMRemoteStore extends BaseRemoteStore
NodeRef surfConfigRef = aquireSurfConfigRef(path + (pattern != null ? ("/" + pattern) : ""), create); NodeRef surfConfigRef = aquireSurfConfigRef(path + (pattern != null ? ("/" + pattern) : ""), create);
try try
{
if (surfConfigRef != null)
{ {
if (create) if (create)
{ {
@@ -796,8 +806,6 @@ public class ADMRemoteStore extends BaseRemoteStore
else else
{ {
// perform the cm:name path lookup against our config root node // perform the cm:name path lookup against our config root node
if (surfConfigRef != null)
{
result = this.fileFolderService.resolveNamePath(surfConfigRef, pathElements); result = this.fileFolderService.resolveNamePath(surfConfigRef, pathElements);
} }
} }
@@ -1011,9 +1019,11 @@ public class ADMRemoteStore extends BaseRemoteStore
* @throws IOException * @throws IOException
*/ */
private void outputFileNodes(Writer out, FileInfo fileInfo, NodeRef surfConfigRef, String pattern, boolean recurse) throws IOException private void outputFileNodes(Writer out, FileInfo fileInfo, NodeRef surfConfigRef, String pattern, boolean recurse) throws IOException
{
if (surfConfigRef != null)
{ {
final boolean debug = logger.isDebugEnabled(); final boolean debug = logger.isDebugEnabled();
PagingResults<FileInfo> files = getFileNodes(fileInfo, surfConfigRef, pattern, recurse); PagingResults<FileInfo> files = getFileNodes(fileInfo, pattern, recurse);
final Map<NodeRef, String> nameCache = new HashMap<NodeRef, String>(); final Map<NodeRef, String> nameCache = new HashMap<NodeRef, String>();
for (final FileInfo file : files.getPage()) for (final FileInfo file : files.getPage())
@@ -1042,8 +1052,9 @@ public class ADMRemoteStore extends BaseRemoteStore
if (debug) logger.debug(" /alfresco/site-data/" + displayPath.toString() + file.getName()); if (debug) logger.debug(" /alfresco/site-data/" + displayPath.toString() + file.getName());
} }
} }
}
protected PagingResults<FileInfo> getFileNodes(FileInfo fileInfo, NodeRef surfConfigRef, String pattern, boolean recurse) protected PagingResults<FileInfo> getFileNodes(FileInfo fileInfo, String pattern, boolean recurse)
{ {
return fileFolderService.list( return fileFolderService.list(
fileInfo.getNodeRef(), true, false, fileInfo.getNodeRef(), true, false,