Issue #2423 has been reported by Alan Harder.

----------------------------------------
Bug #2423: Intermittent dependency cycle
http://projects.reductivelabs.com/issues/2423

Author: Alan Harder
Status: Unreviewed
Priority: Normal
Assigned to: 
Category: server
Target version: 
Complexity: Unknown
Affected version: 0.24.8
Keywords: 


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
-~----------~----~----~----~------~----~------~--~---

Reply via email to