Friday, April 26, 2013

Periodic "Unable to display this web part" error

For a few of my SharePoint sites, the "landing page" contains multiple data view web parts.  These simply display a filtered view of a document library or list on the same site.

Occasionally, when browsing to these sites, the web parts won't display.  The error is:

Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer. If the problem persists, contact your Web server administrator.  (Correlation ID provided)

Doesn't tell me much.  I took the correlation ID and trawled through my SharePoint logs.  I found this exception:

Error while executing web part: System.StackOverflowException: Operation caused a stack overflow.     at Microsoft.Xslt.NativeMethod.CheckForSufficientStack()     at <xsl:template match="FieldRef[@ListItemMenu]" name="FieldRef_Menu_PrintFieldWithECB" mode="PrintFieldWithECB">(XmlQueryRuntime , XPathNavigator , XPathNavigator , Double )     at <xsl:template match="FieldRef" name="FieldRef_printTableCell_EcbAllowed" mode="printTableCellEcbAllowed">(XmlQueryRuntime , XPathNavigator , XPathNavigator , String )     at <xsl:template match="Row" mode="Item">(XmlQueryRuntime , XPathNavigator , IList`1 , IList`1 , Double , Double )     at <xsl:template match="View" mode="RenderView">(XmlQueryRuntime , XPathNavigator )     at <xsl:template match="View" mode="full">(XmlQueryRuntime , XPathNavigator , String )     at <xsl:template match="View" name="View_Default_RootTemplate" mode="RootTemplate">(XmlQueryRuntime , XPathNavigator , String )     at <xsl:template match="/">(XmlQueryRuntime )     at Root(XmlQueryRuntime )     at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer, Boolean closeWriter)     at System.Xml.Xsl.XmlILCommand.Execute(IXPathNavigable contextDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter results)     at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results)     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.ExecuteTransform(XslCompiledTransform xslCompiledTransform, XsltArgumentList xmlArguments, Boolean bDeferExecuteTransform)     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)

A bit of Googling took me to a Technet post (http://social.technet.microsoft.com/Forums/en-US/sharepointgeneralprevious/thread/1a38bdff-e40a-4e50-a2e8-47cbcb31cc6b/) which suggested that this issue may be caused by a timeout issue.  By default, the timeout setting is set to one second, which (in my opinion) isn't very generous.  The following PowerShell command checks the current timeout setting:

$farm = Get-SPFarm
$farm.XsltTransformTimeOut

To change this to five seconds, which is more reasonable:

$farm = Get-SPFarm
$farm.XsltTransformTimeOut = 5
$farm.Update()

My hesitation with any sort of farm update is that this will cause an IIS recycle or other temporary downtime.  Fortunately, this had no effect that I could see.  I've not seen the Web Part error since.

No comments:

Post a Comment