Bug #3129
closedMigrating a Directive to a new Technique version can lead to EventLog generation error
Description
It happens when computing the diff produced by the migration process.
- Migrate a Directive to a new Version (upgrade or downgrade)
- The Directive is really migrated in the LDAP and the promises are generated with success
- Compute a diff to produce an event log > Error
No Event log and no commit to configuration repository (as it depends on the event log)
To produce the diff, we use the new Directive spec to determine what had changed and look for their value in the old directive parameters.
If there is new spec parameters, it launches an error (it could not find the value for the directive)
if a spec parameters was removed, the diff is not tracked
That leads to other problem, like changing Technique version of a Directive not going into the configuration repository:
I have a directive based on "Check Generic File Content" Technique that I want to migrate to version 3.1.
When the migration is complete, the new version is correctly set to 3.1 in the LDAP. and promises generated corresponds to version 3.1.
But in the configuration repository, the directive version is set to 3.1.
So when making a restoration based on the git repository, we will always get the old version of the Directive
Updated by Nicolas PERRON almost 12 years ago
- Target version changed from 2.5.0~beta1 to 2.5.0~rc1
Updated by Vincent MEMBRÉ almost 12 years ago
IN fact the bug appeared when the migration to a new version does not work.
The ldap migration worked, but the git commit is not made due to an error
[2013-01-07 17:38:53] ERROR net.liftweb.http.LiftRules - Exception being returned to browser when processing /ajax_request/F939621436644BJYLAB/: Message: java.util.NoSuchElementException: key not found: GENERIC_FILE_CONTENT_CREATE_BOOLEAN scala.collection.MapLike$class.default(MapLike.scala:225) scala.collection.immutable.HashMap.default(HashMap.scala:38) scala.collection.MapLike$class.apply(MapLike.scala:135) scala.collection.immutable.HashMap.apply(HashMap.scala:38) com.normation.rudder.domain.policies.SectionVal$$anonfun$2.apply(Directive.scala:158) com.normation.rudder.domain.policies.SectionVal$$anonfun$2.apply(Directive.scala:157) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.List.map(List.scala:76) com.normation.rudder.domain.policies.SectionVal$.buildMonoSectionWithMultivaluedParent$1(Directive.scala:157) com.normation.rudder.domain.policies.SectionVal$$anonfun$9$$anonfun$apply$3.apply(Directive.scala:203) com.normation.rudder.domain.policies.SectionVal$$anonfun$9$$anonfun$apply$3.apply(Directive.scala:202) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.List.map(List.scala:76) com.normation.rudder.domain.policies.SectionVal$$anonfun$9.apply(Directive.scala:202) com.normation.rudder.domain.policies.SectionVal$$anonfun$9.apply(Directive.scala:200) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.immutable.Range.foreach(Range.scala:81) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.Range.map(Range.scala:46) com.normation.rudder.domain.policies.SectionVal$.buildMultiSectionWithoutMultiParent$1(Directive.scala:200) com.normation.rudder.domain.policies.SectionVal$$anonfun$12.apply(Directive.scala:225) com.normation.rudder.domain.policies.SectionVal$$anonfun$12.apply(Directive.scala:223) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.List.map(List.scala:76) com.normation.rudder.domain.policies.SectionVal$.buildMonoSectionWithoutMultivaluedParent$1(Directive.scala:223) com.normation.rudder.domain.policies.SectionVal$.directiveValToSectionVal(Directive.scala:234) com.normation.rudder.repository.ldap.LDAPDiffMapper$$anonfun$modChangeRecords2DirectiveSaveDiff$2$$anonfun$apply$12.apply(LDAPDiffMapper.scala:208) com.normation.rudder.repository.ldap.LDAPDiffMapper$$anonfun$modChangeRecords2DirectiveSaveDiff$2$$anonfun$apply$12.apply(LDAPDiffMapper.scala:202) com.normation.utils.Control$$anonfun$pipeline$1.apply(Control.scala:109) com.normation.utils.Control$$anonfun$pipeline$1.apply(Control.scala:106) scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:52) scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scala:61) scala.collection.mutable.WrappedArray.foldLeft(WrappedArray.scala:33) scala.collection.TraversableOnce$class.$div$colon(TraversableOnce.scala:137) scala.collection.mutable.WrappedArray.$div$colon(WrappedArray.scala:33) com.normation.utils.Control$.pipeline(Control.scala:106) com.normation.rudder.repository.ldap.LDAPDiffMapper$$anonfun$modChangeRecords2DirectiveSaveDiff$2.apply(LDAPDiffMapper.scala:202) com.normation.rudder.repository.ldap.LDAPDiffMapper$$anonfun$modChangeRecords2DirectiveSaveDiff$2.apply(LDAPDiffMapper.scala:201) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDiffMapper.modChangeRecords2DirectiveSaveDiff(LDAPDiffMapper.scala:201) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22$$anonfun$apply$24$$anonfun$apply$25.apply(LDAPDirectiveRepository.scala:202) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22$$anonfun$apply$24$$anonfun$apply$25.apply(LDAPDirectiveRepository.scala:201) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22$$anonfun$apply$24.apply(LDAPDirectiveRepository.scala:201) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22$$anonfun$apply$24.apply(LDAPDirectiveRepository.scala:199) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22.apply(LDAPDirectiveRepository.scala:199) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20$$anonfun$apply$22.apply(LDAPDirectiveRepository.scala:197) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20.apply(LDAPDirectiveRepository.scala:197) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$20.apply(LDAPDirectiveRepository.scala:193) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18.apply(LDAPDirectiveRepository.scala:193) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17$$anonfun$apply$18.apply(LDAPDirectiveRepository.scala:183) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17.apply(LDAPDirectiveRepository.scala:183) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1$$anonfun$apply$17.apply(LDAPDirectiveRepository.scala:182) net.liftweb.common.Full.flatMap(Box.scala:493) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1.apply(LDAPDirectiveRepository.scala:182) com.normation.rudder.repository.ldap.LDAPDirectiveRepository$$anonfun$saveDirective$1.apply(LDAPDirectiveRepository.scala:181) com.normation.ldap.sdk.LDAPConnectionProvider$$anonfun$flatMap$1.apply(LDAPConnectionProvider.scala:116) com.normation.ldap.sdk.LDAPConnectionProvider$$anonfun$flatMap$1.apply(LDAPConnectionProvider.scala:115) com.normation.ldap.sdk.LDAPConnectionProvider$class.withCon(LDAPConnectionProvider.scala:153) com.normation.ldap.sdk.PooledSimpleAuthConnectionProvider.withCon(LDAPConnectionProvider.scala:315) com.normation.ldap.sdk.LDAPConnectionProvider$class.flatMap(LDAPConnectionProvider.scala:115) com.normation.ldap.sdk.PooledSimpleAuthConnectionProvider.flatMap(LDAPConnectionProvider.scala:315) com.normation.rudder.repository.ldap.LDAPDirectiveRepository.saveDirective(LDAPDirectiveRepository.scala:181) com.normation.rudder.web.components.DirectiveEditForm.com$normation$rudder$web$components$DirectiveEditForm$$saveAndDeployDirective(DirectiveEditForm.scala:671) com.normation.rudder.web.components.DirectiveEditForm$$anonfun$displayDependenciesPopup$1.apply(DirectiveEditForm.scala:664) com.normation.rudder.web.components.DirectiveEditForm$$anonfun$displayDependenciesPopup$1.apply(DirectiveEditForm.scala:664) com.normation.rudder.web.components.DirectiveEditForm$$anonfun$showUpdatePopupForm$1.apply(DirectiveEditForm.scala:277) com.normation.rudder.web.components.DirectiveEditForm$$anonfun$showUpdatePopupForm$1.apply(DirectiveEditForm.scala:277) net.liftweb.http.S$NFuncHolder$$anonfun$apply$5.apply(S.scala:190) net.liftweb.http.S$NFuncHolder$$anonfun$apply$5.apply(S.scala:190) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.List.map(List.scala:76) net.liftweb.http.S$NFuncHolder.apply(S.scala:190) net.liftweb.http.S$ProxyFuncHolder.apply(S.scala:115) net.liftweb.http.LiftSession$$anon$3.net$liftweb$http$LiftSession$$anon$$super$apply(LiftSession.scala:1456) net.liftweb.http.LiftSession$$anon$3$$anonfun$apply$67$$anonfun$apply$68$$anonfun$apply$69.apply(LiftSession.scala:1456) net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:233) net.liftweb.util.AnyVar.doWith(AnyVar.scala:89) net.liftweb.http.LiftSession$$anon$3$$anonfun$apply$67$$anonfun$apply$68.apply(LiftSession.scala:1455) net.liftweb.util.AnyVarTrait$class.doWith(AnyVar.scala:233) net.liftweb.util.AnyVar.doWith(AnyVar.scala:89) net.liftweb.http.LiftSession$$anon$3$$anonfun$apply$67.apply(LiftSession.scala:1454) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$10$$anonfun$apply$11.apply(Vars.scala:554) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$10.apply(Vars.scala:553) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8$$anonfun$apply$9.apply(Vars.scala:552) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1$$anonfun$apply$8.apply(Vars.scala:551) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1.apply(Vars.scala:550) net.liftweb.http.CoreRequestVarHandler$$anonfun$generateSnapshotRestorer$1.apply(Vars.scala:550) net.liftweb.http.LiftSession$$anon$3.apply(LiftSession.scala:1453) net.liftweb.http.S$ProxyFuncHolder.apply(S.scala:115) net.liftweb.http.LiftSession$$anonfun$buildFunc$1$2.apply(LiftSession.scala:651) net.liftweb.http.LiftSession$$anonfun$16$$anonfun$apply$39.apply(LiftSession.scala:667) net.liftweb.http.LiftSession$$anonfun$16$$anonfun$apply$39.apply(LiftSession.scala:667) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.map(TraversableLike.scala:233) scala.collection.immutable.List.map(List.scala:76) net.liftweb.http.LiftSession$$anonfun$16.apply(LiftSession.scala:667) net.liftweb.http.LiftSession$$anonfun$16.apply(LiftSession.scala:656) scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239) scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:76) scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:239) scala.collection.immutable.List.flatMap(List.scala:76) net.liftweb.http.LiftSession.runParams(LiftSession.scala:655) net.liftweb.http.LiftServlet.liftedTree2$1(LiftServlet.scala:445) net.liftweb.http.LiftServlet.handleAjax(LiftServlet.scala:444) net.liftweb.http.LiftServlet.net$liftweb$http$LiftServlet$$dispatchStatefulRequest(LiftServlet.scala:412) net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:279) net.liftweb.http.LiftServlet$$anonfun$doSession$1$1.apply(LiftServlet.scala:279) net.liftweb.http.S$class.net$liftweb$http$S$$wrapQuery(S.scala:1376) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1$$anonfun$apply$34.apply(S.scala:1524) net.liftweb.http.S$class.net$liftweb$http$S$$doAround(S.scala:1305) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_nest2InnerInit$1.apply(S.scala:1522) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$class.net$liftweb$http$S$$_nest2InnerInit(S.scala:1521) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39$$anonfun$apply$40$$anonfun$apply$41.apply(S.scala:1561) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$withReq$1.apply(S.scala:1571) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$class.withReq(S.scala:1570) net.liftweb.http.S$.withReq(S.scala:48) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39$$anonfun$apply$40.apply(S.scala:1560) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38$$anonfun$apply$39.apply(S.scala:1559) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1$$anonfun$apply$38.apply(S.scala:1558) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_innerInit$1.apply(S.scala:1557) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$class.net$liftweb$http$S$$_innerInit(S.scala:1556) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46$$anonfun$apply$47$$anonfun$apply$48.apply(S.scala:1594) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46$$anonfun$apply$47.apply(S.scala:1592) net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:613) net.liftweb.http.RequestVarHandler$.apply(Vars.scala:515) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45$$anonfun$apply$46.apply(S.scala:1591) net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:613) net.liftweb.http.TransientRequestVarHandler$.apply(Vars.scala:528) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44$$anonfun$apply$45.apply(S.scala:1590) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1$$anonfun$apply$44.apply(S.scala:1589) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$$anonfun$net$liftweb$http$S$$_init$1.apply(S.scala:1588) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.S$class.net$liftweb$http$S$$_init(S.scala:1587) net.liftweb.http.S$class.init(S.scala:1190) net.liftweb.http.LiftServlet.doSession$1(LiftServlet.scala:278) net.liftweb.http.LiftServlet.doService(LiftServlet.scala:288) net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:132) net.liftweb.http.LiftServlet$$anonfun$doIt$1$1.apply(LiftServlet.scala:131) net.liftweb.util.TimeHelpers$class.calcTime(TimeHelpers.scala:344) net.liftweb.util.Helpers$.calcTime(Helpers.scala:34) net.liftweb.util.TimeHelpers$class.logTime(TimeHelpers.scala:363) net.liftweb.util.Helpers$.logTime(Helpers.scala:34) net.liftweb.http.LiftServlet.doIt$1(LiftServlet.scala:131) net.liftweb.http.LiftServlet.service(LiftServlet.scala:142) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(HTTPProvider.scala:72) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(HTTPProvider.scala:71) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.URLRewriter$.doWith(Req.scala:1253) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply$mcV$sp(HTTPProvider.scala:70) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2$$anonfun$apply$mcV$sp$1.apply(HTTPProvider.scala:70) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply$mcV$sp(HTTPProvider.scala:66) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60) net.liftweb.http.provider.HTTPProvider$$anonfun$service$2.apply(HTTPProvider.scala:60) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.provider.HTTPProvider$class.service(HTTPProvider.scala:60) net.liftweb.http.LiftFilter.service(LiftServlet.scala:757) net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ServletFilterProvider.scala:67) net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62) net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1$$anonfun$apply$mcV$sp$1.apply(ServletFilterProvider.scala:62) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:619) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:618) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:617) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:616) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:615) net.liftweb.http.RequestVarHandler$.apply(Vars.scala:515) net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61) net.liftweb.http.provider.servlet.ServletFilterProvider$$anonfun$doFilter$1.apply(ServletFilterProvider.scala:61) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18$$anonfun$apply$19.apply(Vars.scala:619) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17$$anonfun$apply$18.apply(Vars.scala:618) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16$$anonfun$apply$17.apply(Vars.scala:617) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$$anonfun$apply$16.apply(Vars.scala:616) net.liftweb.util.ThreadGlobal.doWith(ThreadGlobal.scala:71) net.liftweb.http.CoreRequestVarHandler$class.apply(Vars.scala:615) net.liftweb.http.provider.servlet.ServletFilterProvider$class.doFilter(ServletFilterProvider.scala:60) net.liftweb.http.LiftFilter.doFilter(LiftServlet.scala:757) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212) org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) org.mortbay.jetty.handler.ContextHandler.__handle(ContextHandler.java:766) org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java) org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) org.mortbay.jetty.Server.handle(Server.java:326) org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Updated by Vincent MEMBRÉ almost 12 years ago
- Status changed from New to In progress
We found out the origin of that bug :
It happens when computing the diff produced by the migration process.
- Migrate a Directive to a new Version (upgrade or downgrade)
- The Directive is really migrated in the LDAP and the promises are generated with success
- Compute a diff to produce an event log > Error No Event log and no commit to configuration repository (as it depends on the event log)
To produce the diff, we use the new Directive spec to determine what had changed and look for their value in the old directive parameters.
If there is new spec parameters, it launches an error (it could not find the value for the directive)
if a spec parameters was removed, the diff is not tracked
Updated by François ARMAND almost 12 years ago
- Subject changed from Migrating a Directive to a new Technique version is not tracked by git repository to Migrating a Directive to a new Technique version can lead to EventLog generation error
- Description updated (diff)
Updated by Vincent MEMBRÉ almost 12 years ago
- Target version changed from 2.5.0~rc1 to 2.4.3
In fact this bug happens also in 2.4, so i fixed it there instead.
Updated by Vincent MEMBRÉ almost 12 years ago
- Status changed from In progress to Pending technical review
Pull request done : https://github.com/Normation/rudder/pull/68
Updated by Vincent MEMBRÉ almost 12 years ago
- Assignee changed from Vincent MEMBRÉ to François ARMAND
Updated by Vincent MEMBRÉ almost 12 years ago
- Status changed from Pending technical review to Pending release
- % Done changed from 0 to 100
Applied in changeset f70311ab5871ca0d3d6495fd3cd74ae66b30febb.
Updated by Anonymous almost 12 years ago
Applied in changeset e737a311a2c32a2b9d52324f7416dba94c37a211.
Updated by Vincent MEMBRÉ almost 12 years ago
Applied in changeset 6def765af5b0d2ba3d3f93557b96d60300d54b0f.
Updated by Vincent MEMBRÉ almost 12 years ago
Applied in changeset f3d3625f2dd8c3d480e8616274b1f0cfb5000bab.
Updated by Nicolas PERRON almost 12 years ago
- Status changed from Pending release to Released
Updated by Nicolas PERRON almost 12 years ago
- Project changed from Rudder to 34
- Category deleted (
11)
Updated by Benoît PECCATTE almost 10 years ago
- Project changed from 34 to Rudder
- Category set to Packaging