Actions
Bug #9736
closedStack overflow on node generation
Pull Request:
Severity:
Major - prevents use of part of Rudder | no simple workaround
UX impact:
User visibility:
Infrequent - complex configurations | third party integrations
Effort required:
Priority:
34
Name check:
Fix check:
Regression:
Description
On user found a case where generation is never ending, with the following stack trace:
[2016-11-24 10:16:39] DEBUG com.normation.rudder.services.policies.PromiseGenerationServiceImpl - Node's target configuration built in 734 ms, start to update rule values. [2016-11-24 10:16:39] DEBUG com.normation.rudder.services.policies.PromiseGenerationServiceImpl - RuleVals updated in 65 ms, start to detect changes in node configuration. [2016-11-24 10:16:39] DEBUG com.normation.rudder.services.policies.PromiseGenerationServiceImpl - Checked node configuration updates leading to rules serial number updates and serial number updated in 11 ms [2016-11-24 10:16:40] INFO com.normation.rudder.services.policies.nodeconfig.NodeConfigurationServiceImpl - Configuration of following nodes were updated, their promises are going to be written: [7357f552-34ee-4b8d-9fa9-54854bbdece0, root] [2016-11-24 10:16:40] ERROR net.liftweb.actor.ActorLogger - Actor threw an exception java.lang.StackOverflowError: null at com.normation.rudder.services.policies.nodeconfig.NodeConfiguration.nodeInfo(NodeConfiguration.scala:67) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$2.apply(PathComputer.scala:140) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$2.apply(PathComputer.scala:139) at net.liftweb.common.Full.map(Box.scala:610) at com.normation.rudder.services.policies.write.PathComputerImpl.com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath(PathComputer.scala:139) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$3$$anonfun$apply$2.apply(PathComputer.scala:148) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$3$$anonfun$apply$2.apply(PathComputer.scala:141) at net.liftweb.common.Full.flatMap(Box.scala:612) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$3.apply(PathComputer.scala:141) at com.normation.rudder.services.policies.write.PathComputerImpl$$anonfun$com$normation$rudder$services$policies$write$PathComputerImpl$$recurseComputePath$3.apply(PathComputer.scala:139) at net.liftweb.common.Full.flatMap(Box.scala:612) [....]
We don't know the cause for now, but there is relay, and there was a lot of updates in the node/releay topologie. So Rudder must have badly updated something somewhere, and now there is an infinite loop when trying to generate policies.
The problem was seens in 4.0.0, but most likelly already exists in previous versions.
Actions