Stiamo riscontrando un problema con il nostro server CI Jenkins.java.lang.StackOverflowError durante l'analisi dello script Groovy su Jenkins
La nostra implementazione CI si basa su diversi script Groovy, che eseguiamo in Jenkins come "script System Groovy". Questo è stato per anni, e gli script non hanno subito modifiche recenti e implementano flussi di build, passaggi di logica aziendale come il controllo della versione, ecc.
Ieri abbiamo iniziato a sperimentare un'eccezione in ogni lavoro Jenkins che abbiamo provato a rileggete che, in un modo o nell'altro, provate a eseguire gli script di Groovy. L'eccezione è:
java.lang.StackOverflowError
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.additiveExpression(GroovyRecognizer.java:12478)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.shiftExpression(GroovyRecognizer.java:9695)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.relationalExpression(GroovyRecognizer.java:12383)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.equalityExpression(GroovyRecognizer.java:12307)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.regexExpression(GroovyRecognizer.java:12255)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.andExpression(GroovyRecognizer.java:12223)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.exclusiveOrExpression(GroovyRecognizer.java:12191)
hundreds of similar lines
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compoundStatement(GroovyRecognizer.java:7510)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compatibleBodyStatement(GroovyRecognizer.java:8834)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(GroovyRecognizer.java:899)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:757)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:131)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:161)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:846)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:550)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:526)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:503)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:302)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:281)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:731)
at groovy.lang.GroovyShell.parse(GroovyShell.java:743)
at groovy.lang.GroovyShell.parse(GroovyShell.java:770)
at groovy.lang.GroovyShell.parse(GroovyShell.java:761)
at groovy.lang.GroovyShell$parse.call(Unknown Source)
at com.cloudbees.plugins.flow.FlowDSL.executeFlowScript(FlowDSL.groovy:80)
at com.cloudbees.plugins.flow.FlowRun$FlyweightTaskRunnerImpl.run(FlowRun.java:219)
at hudson.model.Run.execute(Run.java:1759)
at com.cloudbees.plugins.flow.FlowRun.run(FlowRun.java:155)
at hudson.model.ResourceController.execute(ResourceController.java:89)
at hudson.model.Executor.run(Executor.java:240)
at hudson.model.OneOffExecutor.run(OneOffExecutor.java:43)
Questo sembra che il parser Groovy all'interno Jenkins sta raggiungendo la cima della pila durante il tentativo di analizzare lo script Groovy (come ho già detto, questo bruscamente iniziato ad accadere con molti script che hanno lavorato perfettamente prima e non ha subito modifiche recenti).
Attualmente l'installazione di Jenkins (v1.594) viene eseguita su un server di applicazioni Websphere 8.5.5.2 su AIX v7.1 (non si conosce esattamente il livello del fix pack e/o se ha subito di recente alcun tipo di aggiornamento, ancora cercando di raccogliere le informazioni).
Dopo un riavvio, siamo tornati al comportamento normale (tutti gli script stavano funzionando come al solito di nuovo senza alcuna modifica a loro).
Qualcuno sa di incompatibilità di qualsiasi libreria sottostante con l'analisi di Jenkins Groovy?
Sembra un aggiornamento. Una modifica alla versione di Groovy o qualsiasi dipendenza sottostante potrebbe causare questo tipo di problema. –
Un aggiornamento del sistema operativo su AIX è così grave da essere considerato "sofferenza"? – cjstehno
Stavo pensando a un fix pack WAS, e non so se il termine giusto è sofferto (l'inglese non è la mia lingua madre). Meglio come se fosse stato recentemente sottoposto a qualche tipo di aggiornamento? –