Operation caused a stack overflow

Qualche settimana fa, preparando una demo su FAST Search for SharePoint 2010, ad un certo punto alcune delle web part della pagina dei risultati della ricerca (search refiner e core result web part) hanno cominciato ad andare saltuariamente in errore. L’errore era il “classico” 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.

L’errore, comune quando si commette un errore nella personalizzazione dell’XSLT di una Data Form Web Part, mi è parso molto strano a causa del fatto che non avevo affatto modificato i template XSLT di quelle Web Part.

Verificato il Correlation ID con le informazioni presenti nel ULS log ho trovato questo messaggio:

Error while executing web part: System.StackOverflowException: Operation caused a stack overflow.
at Microsoft.Xslt.NativeMethod.CheckForSufficientStack()
at <xsl:template match=”Result”>(XmlQueryRuntime , XPathNavigator )
at <xsl:apply-templates>(XmlQueryRuntime , XPathNavigator )
at <xsl:template name=”dvt_1.body”>(XmlQueryRuntime , XPathNavigator )
at Root(XmlQueryRuntime )  … (continua)

La causa di questo errore era nota da qualche tempo a Microsoft, di fatto se la trasformazione dei template XSLT impiega più di 1 secondo viene sollevata questa eccezione. Nel mio caso, date le risorse della VM, questo era assolutamente possibile, ma in vista della demo con il cliente dovevo assolutamente risolvere l’errore.

A partire dalla Cumulative Update di Febbraio 2012 è stato aggiunto un nuovo metodo grazie al quale, tramite Powershell, è possibile aumentare il timeout. E’ sufficiente uno script di tre righe, eccolo:

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

Data la soluzione, vale la pena comunque soffermarsi sulle motivazioni che portano a questo errore, cioè verificare attentamente le performance della farm e  revisionare i propri template XSLT.

– Riccardo



Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...