Issue #2423 has been updated by James Turnbull. Category changed from documentation to plumbing
---------------------------------------- Bug #2423: Intermittent dependency cycle http://projects.reductivelabs.com/issues/2423 Author: Alan Harder Status: Ready for Testing Priority: Normal Assigned to: Alan Harder Category: plumbing Target version: 0.25.0 Complexity: Unknown Affected version: 0.24.8 Keywords: behaviorchange I have a setup which fails with "Found dependency cycle" much of the time (about half? generally within 2-3 runs it'll occur). Using 0.24.8 on Solaris 10. I've narrowed the code down to this: <pre> class cc { notify { 'cc': } } define util() { include cc exec { "util_$name": command => 'echo hoho', require => Class[cc] } } define job() { include cc exec { "job_$name": command => "echo foo", require => Class[cc] } } class app { util { 'test': } exec { 'app': command => 'echo hello', refreshonly => true, subscribe => Exec['util_test'] } } node 'myhost.foo.com' { include app job { 'blah': require => Class[app] } } </pre> I have a common component ("cc") and two defines ("util" and "job") that both use that common component. Then an application ("app") that uses "util" and subscribes to an exec it has. Finally, I want to use "app" and "job", but want "app" to be installed first.. so I make it require Class[app]. Here is the error when it fails: *err: Could not apply complete catalog: Found dependency cycles in the following relationships: Notify[cc] => Exec[util_test], Exec[util_test] => Exec[app], Exec[util_test] => Notify[cc], Exec[app] => Notify[cc], Exec[util_test] => Exec[job_blah], Notify[cc] => Exec[job_blah], Exec[app] => Exec[job_blah]* And the full output: <pre> debug: Creating default schedules debug: Failed to load library 'ldap' for feature 'ldap' debug: Failed to load library 'shadow' for feature 'libshadow' debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/certs]: Autorequiring File[/etc/opt/csw/puppet/ssl] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/private]: Autorequiring File[/etc/opt/csw/puppet/ssl] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/private_keys]: Autorequiring File[/etc/opt/csw/puppet/ssl] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/public_keys]: Autorequiring File[/etc/opt/csw/puppet/ssl] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/log]: Autorequiring File[/var/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/csr_gssie-210-6-z2.nis-86.central.sun.com.pem]: Autorequiring File[/etc/opt/csw/puppet/ssl] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/lib]: Autorequiring File[/var/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/run]: Autorequiring File[/var/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/certs/gssie-210-6-z2.nis-86.central.sun.com.pem]: Autorequiring File[/etc/opt/csw/puppet/ssl/certs] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/certs/ca.pem]: Autorequiring File[/etc/opt/csw/puppet/ssl/certs] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/public_keys/gssie-210-6-z2.nis-86.central.sun.com.pem]: Autorequiring File[/etc/opt/csw/puppet/ssl/public_keys] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[puppetd]/File[/etc/opt/csw/puppet/puppet.conf]: Autorequiring File[/etc/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/state]: Autorequiring File[/var/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/etc/opt/csw/puppet/ssl]: Autorequiring File[/etc/opt/csw/puppet] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[ssl]/File[/etc/opt/csw/puppet/ssl/private_keys/gssie-210-6-z2.nis-86.central.sun.com.pem]: Autorequiring File[/etc/opt/csw/puppet/ssl/private_keys] debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/state]: File does not exist debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/state]: Changing ensure debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/state]: 1 change(s) debug: /Settings[/etc//opt/csw/puppet/puppet.conf]/Settings[main]/File[/var/opt/csw/puppet/state]/ensure: created debug: Finishing transaction 2125824 with 1 changes debug: Retrieved facts in 1.19 seconds debug: Retrieving catalog debug: Calling puppetmaster.getconfig debug: Retrieved catalog in 0.75 seconds debug: Puppet::Network::Client::File: defining fileserver.describe debug: Puppet::Network::Client::File: defining fileserver.list debug: Puppet::Network::Client::File: defining fileserver.retrieve debug: Creating default schedules debug: Finishing transaction 9337776 with 0 changes info: Caching catalog at /var//opt/csw/puppet/state/localconfig.yaml notice: Starting catalog run debug: //Node[gssie-210-6-z2.nis-86.central.sun.com]/app/Util[test]/Exec[util_test]/require: requires Class[cc] debug: //Node[gssie-210-6-z2.nis-86.central.sun.com]/app/Exec[app]/subscribe: subscribes to Exec[util_test] debug: //Node[gssie-210-6-z2.nis-86.central.sun.com]/Job[blah]/cc/Notify[cc]/require: requires Class[app] debug: //Node[gssie-210-6-z2.nis-86.central.sun.com]/Job[blah]/Exec[job_blah]/require: requires Class[cc] debug: //Node[gssie-210-6-z2.nis-86.central.sun.com]/Job[blah]/Exec[job_blah]/require: requires Class[app] err: Could not apply complete catalog: Found dependency cycles in the following relationships: Notify[cc] => Exec[util_test], Exec[util_test] => Exec[app], Exec[util_test] => Notify[cc], Exec[app] => Notify[cc], Exec[util_test] => Exec[job_blah], Notify[cc] => Exec[job_blah], Exec[app] => Exec[job_blah] debug: Storing state info: Creating state file /var//opt/csw/puppet/state/state.yaml debug: Stored state in 0.04 seconds debug: Calling puppetreports.report info: Sent transaction report in 0.27 seconds notice: Finished catalog run in 0.44 seconds </pre> Maybe this is a "will not fix" case if I'm using require improperly somewhere.. but it seems like it should be able to do everything "app" needs, and when "job" is processed it'll just find that Class[cc] is already done. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://reductivelabs.com/redmine/my/account --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en -~----------~----~----~----~------~----~------~--~---
