Issue #2597 has been updated by Nigel Kersten.

My .dot files are so enormous they're bloody impossible to debug correctly.  
Running something like the above script is so much more practical.

I guess I just don't quite get how although we can't tell what the dependency 
cycle is internally, (as Luke just said at puppet camp) it's this trivial to 
grab the debug output and exactly pin-point the problem.
----------------------------------------
Feature #2597: Dependency cycle information should be more useful.
http://projects.reductivelabs.com/issues/2597

Author: Nigel Kersten
Status: Needs more information
Priority: Normal
Assigned to: Nigel Kersten
Category: plumbing
Target version: Rowlf
Affected version: 0.25.0
Keywords: 
Branch: 


Here's a recent dependency cycle error message that I had to deal with:

<pre>
Exec[apt_dist_upgrade] => Package[libsmbios-bin], Exec[apt_install_fix] => 
Package[libsmbios-bin], Exec[apt_update] => Package[libsmbios-bin], 
Package[mime-support] => Fileline[/etc/mailcap.order], Exec[apt_dist_upgrade] 
=> Package[corp-python], Exec[apt_install_fix] => Package[corp-python], 
Exec[apt_update] => Package[corp-python], Exec[apt_dist_upgrade] => 
Package[corp-ltools], Exec[apt_install_fix] => Package[corp-ltools], 
Exec[apt_update] => Package[corp-ltools], Exec[apt_dist_upgrade] => 
Package[tracker-meta], Exec[apt_install_fix] => Package[tracker-meta], 
Exec[apt_update] => Package[tracker-meta], Exec[apt_dist_upgrade] => 
Package[ubuntu-minimal], Exec[apt_install_fix] => Package[ubuntu-minimal], 
Exec[apt_update] => Package[ubuntu-minimal], Package[corp-ldap] => 
Package[nscd], Fileline[grub_no_hiddenmenu] => Exec[update_grub], 
Fileline[grub_menu_timeout] => Exec[update_grub], Package[grub] => 
Exec[update_grub], File[grub_menu] => Fileline[grub_menu_timeout], 
Package[ubuntu-desktop] => Package[video_driver], Exec[apt_dist_upgrade] => 
Package[autofs], Exec[apt_install_fix] => Package[autofs], Exec[apt_update] => 
Package[autofs], Package[corp-kerberos] => File[krb5_pam_session], 
Exec[apt_dist_upgrade] => Package[nfs-common], Exec[apt_install_fix] => 
Package[nfs-common], Exec[apt_update] => Package[nfs-common], 
Package[nfs-common] => Filekeyvalue[enable_gssd], Package[nfs-common] => 
Service[nfsd], Package[ssh_server] => Service[ssh_daemon], File[sshd_config] => 
Service[ssh_daemon], Package[buildtools] => Exec[grte_ldconfig], 
Exec[apt_dist_upgrade] => Package[apport], Exec[apt_install_fix] => 
Package[apport], Exec[apt_update] => Package[apport], Exec[apt_dist_upgrade] => 
Package[cupsys], Exec[apt_install_fix] => Package[cupsys], Exec[apt_update] => 
Package[cupsys], Package[ssh_server] => File[sshd_config], 
Exec[apt_dist_upgrade] => Package[puppet], Exec[apt_install_fix] => 
Package[puppet], Exec[apt_update] => Package[puppet], File[grub_menu] => 
Fileline[grub_no_hiddenmenu], File[ntp_conf] => Service[ntp], 
Package[syslog-ng] => File[syslog-ng.conf], Package[gconf2-common] => 
File[gconf_defaults_settings], Package[cupsys] => File[cups_client_conf], 
File[ldap_ldap_conf] => Package[vendetta], Package[compiz-core] => 
Filekeyvalue[compiz_indirect_yes], Package[nfs-common] => 
Filekeyvalue[set_gssd_ccache], Exec[apt_dist_upgrade] => Package[resolvconf], 
Package[corp-desktop] => Package[resolvconf], Exec[apt_install_fix] => 
Package[resolvconf], Exec[apt_update] => Package[resolvconf], 
Package[ubuntu-desktop] => Fileline[/etc/gdm/Xsession], Package[corp-shells] => 
File[/etc/csh.cshrc], Exec[apt_dist_upgrade] => Package[corp-minimal], 
Exec[apt_install_fix] => Package[corp-minimal], Exec[apt_update] => 
Package[corp-minimal], Exec[apt_dist_upgrade] => Package[readline-common], 
Exec[apt_install_fix] => Package[readline-common], Exec[apt_update] => 
Package[readline-common], Service[portmap] => Exec[rsync --quiet --delete 
--archive  --exclude="\\.snapshot*" /auto/symlinks /usr/local/], 
Service[automounter] => Exec[rsync --quiet --delete --archive  
--exclude="\\.snapshot*" /auto/symlinks /usr/local/], Service[nfsd] => 
Exec[rsync --quiet --delete --archive  --exclude="\\.snapshot*" /auto/symlinks 
/usr/local/], Package[rsync] => Exec[rsync --quiet --delete --archive  
--exclude="\\.snapshot*" /auto/symlinks /usr/local/], File[virtual_config] => 
File[main_cf_config], Exec[apt_dist_upgrade] => Package[rsync], 
Service[portmap] => Package[rsync], Exec[apt_install_fix] => Package[rsync], 
Service[automounter] => Package[rsync], Service[nfsd] => Package[rsync], 
Exec[apt_update] => Package[rsync], Exec[apt_dist_upgrade] => 
Package[language-pack-en], Exec[apt_install_fix] => Package[language-pack-en], 
Exec[apt_update] => Package[language-pack-en], Exec[apt_dist_upgrade] => 
Package[friendly-recovery], Exec[apt_install_fix] => 
Package[friendly-recovery], Exec[apt_update] => Package[friendly-recovery], 
Package[ubuntu-desktop] => Service[gdm], Exec[apt_dist_upgrade] => 
Package[corp-gui], Exec[apt_install_fix] => Package[corp-gui], Exec[apt_update] 
=> Package[corp-gui], Package[corp-ldap] => File[ldap_conf], 
Exec[apt_dist_upgrade] => Package[mime-support], Exec[apt_install_fix] => 
Package[mime-support], Exec[apt_update] => Package[mime-support], 
Exec[apt_dist_upgrade] => Package[gconf2-common], Exec[apt_install_fix] => 
Package[gconf2-common], Exec[apt_update] => Package[gconf2-common], 
Package[corp-kerberos] => File[krb5_pam_auth], Exec[apt_dist_upgrade] => 
Package[bartleby], Exec[apt_install_fix] => Package[bartleby], Exec[apt_update] 
=> Package[bartleby], Exec[apt_dist_upgrade] => Package[corp-kerberos], 
Exec[apt_install_fix] => Package[corp-kerberos], Exec[apt_update] => 
Package[corp-kerberos], File[virtual_config] => Exec[update_postfix_virtual], 
Package[mg-agent-xp] => Package[mg-agent-xp-stats-module], 
Package[friendly-recovery] => File[recovery_mode_updater], 
Exec[apt_dist_upgrade] => Package[corp-operations], Exec[apt_install_fix] => 
Package[corp-operations], Exec[apt_update] => Package[corp-operations], 
Package[corp-config-tools] => File[/usr/local/scripts/corp-updater], 
Package[readline-common] => Fileline[enable_history_search_forward], 
Exec[apt_dist_upgrade] => Package[corp-ldap], Exec[apt_install_fix] => 
Package[corp-ldap], Exec[apt_update] => Package[corp-ldap], Package[syslog-ng] 
=> File[logrotate.d_syslog-ng], File[ldap_conf] => File[nsswitch_conf], 
Package[vendetta] => File[nsswitch_conf], Package[readline-common] => 
Fileline[enable_history_search_backward], Package[gconf2-common] => 
File[gconf_mandatory_settings], Exec[apt_dist_upgrade] => Package[postfix], 
Exec[apt_install_fix] => Package[postfix], Exec[apt_update] => 
Package[postfix], Exec[update_postfix_virtual] => Service[postfix], 
File[main_cf_config] => Service[postfix], File[main_cf_config] => 
Service[postfix], Exec[apt_dist_upgrade] => Package[mlocate], 
Exec[apt_install_fix] => Package[mlocate], Exec[apt_update] => 
Package[mlocate], Package[mlocate] => Filekeyvalue[updatedb_prunepaths], 
Package[slocate] => Filekeyvalue[updatedb_prunepaths], Package[slocate] => 
Filekeyvalue[updatedb_prunepaths], Exec[apt_dist_upgrade] => 
Package[corp-login-checks], Exec[apt_install_fix] => 
Package[corp-login-checks], Exec[apt_update] => Package[corp-login-checks], 
Package[corp-config-tools] => File[corp_updater_cron], Package[ntp] => 
File[ntp_conf], File[ldap_conf] => File[ldap_ldap_conf], Package[mg-agent-xp] 
=> Package[mg-agent-xp-lshw-module], Package[nfs-common] => Service[portmap], 
Package[corp-gui] => Filekeyvalue[homedirnotify_ondemand_false], 
Exec[apt_dist_upgrade] => Package[ssh_client], Exec[apt_install_fix] => 
Package[ssh_client], Exec[apt_update] => Package[ssh_client], 
Exec[apt_dist_upgrade] => Package[ssh_server], Exec[apt_install_fix] => 
Package[ssh_server], Exec[apt_update] => Package[ssh_server], 
Exec[apt_dist_upgrade] => Package[mailx], Exec[apt_install_fix] => 
Package[mailx], Exec[apt_update] => Package[mailx], Exec[apt_dist_upgrade] => 
Package[grub], Exec[apt_install_fix] => Package[grub], Exec[apt_update] => 
Package[grub], Package[corp-kerberos] => File[krb5_conf], 
Package[ubuntu-minimal] => Package[syslog-ng], Exec[apt_dist_upgrade] => 
Package[python2.2], Exec[apt_install_fix] => Package[python2.2], 
Exec[apt_update] => Package[python2.2], Package[alsa-utils] => 
File[/etc/init.d/alsa-utils], Exec[apt_dist_upgrade] => Package[buildtools], 
Exec[apt_install_fix] => Package[buildtools], Exec[apt_update] => 
Package[buildtools], Package[vendetta] => Package[buildtools], 
Package[corp-gui] => File[displayconfigrc], File[syslog-ng.conf] => 
Service[syslog-ng], Package[syslog-ng] => Service[syslog-ng], Package[corp-gui] 
=> File[kdesktoprc], Package[ubuntu-desktop] => 
File[xscreensaver_app-defaults_gl], Exec[apt_dist_upgrade] => 
Package[ubuntu-desktop], Exec[apt_install_fix] => Package[ubuntu-desktop], 
Exec[apt_update] => Package[ubuntu-desktop], Exec[apt_dist_upgrade] => 
Package[bind9-host], Exec[apt_install_fix] => Package[bind9-host], 
Exec[apt_update] => Package[bind9-host], Package[corp-gui] => 
Filekeyvalue[homedirnotify_autoload_false], Package[ssh_server] => 
Fileline[pamd_ssh], Exec[apt_dist_upgrade] => Package[syslog-ng-restart], 
Exec[apt_install_fix] => Package[syslog-ng-restart], Exec[apt_update] => 
Package[syslog-ng-restart], Exec[apt_dist_upgrade] => Package[slocate], 
Exec[apt_install_fix] => Package[slocate], Exec[apt_update] => 
Package[slocate], Exec[apt_dist_upgrade] => Package[corp-config-tools], 
Exec[apt_install_fix] => Package[corp-config-tools], Exec[apt_update] => 
Package[corp-config-tools], Exec[apt_dist_upgrade] => Package[acpi-support], 
Exec[apt_install_fix] => Package[acpi-support], Exec[apt_update] => 
Package[acpi-support], Package[ubuntu-desktop] => File[corp_logo], 
Package[ssh_client] => File[ssh_client_config], Package[corp-config-tools] => 
File[/usr/local/scripts/corp-set-track], Exec[apt_dist_upgrade] => 
Package[ntp], Exec[apt_install_fix] => Package[ntp], Exec[apt_update] => 
Package[ntp], Package[ubuntu-desktop] => File[screensaver_enforcement], 
File[nsswitch_conf] => Service[automounter], Package[mg-agent-xp] => 
Package[mg-agent-xp-check], Exec[apt_dist_upgrade] => Package[compiz-core], 
Exec[apt_install_fix] => Package[compiz-core], Exec[apt_update] => 
Package[compiz-core], Package[corp-minimal] => 
File[dhclient_update_etc_hosts_enterhook], Exec[apt_dist_upgrade] => 
Package[corp-shells], Exec[apt_install_fix] => Package[corp-shells], 
Exec[apt_update] => Package[corp-shells], Package[grub] => File[grub_menu], 
Package[alsa-utils] => Fileline[builtin_speaker_off], Package[corp-shells] => 
File[/etc/csh.login], Exec[apt_dist_upgrade] => Package[corp-desktop], 
Exec[apt_install_fix] => Package[corp-desktop], Exec[apt_update] => 
Package[corp-desktop], Package[corp-kerberos] => File[krb5_pam_account], 
Package[libsmbios-bin] => File[change_speedstep_390], Package[mg-agent-xp] => 
Package[mg-agent-xp-corp-updater-module], Exec[apt_dist_upgrade] => 
Package[mg-agent-xp], Exec[apt_install_fix] => Package[mg-agent-xp], 
Exec[apt_update] => Package[mg-agent-xp], Package[nfs-common] => 
Filekeyvalue[enable_idmapd], Exec[apt_dist_upgrade] => 
Package[command-not-found], Exec[apt_install_fix] => 
Package[command-not-found], Exec[apt_update] => Package[command-not-found], 
Package[friendly-recovery] => File[recovery_mode_root], Package[postfix] => 
File[virtual_config], Package[mlocate] => Filekeyvalue[updatedb_prunefs], 
Package[slocate] => Filekeyvalue[updatedb_prunefs], Package[slocate] => 
Filekeyvalue[updatedb_prunefs], Exec[apt_dist_upgrade] => Exec[apt_update], 
Exec[apt_install_fix] => Exec[apt_update], Exec[apt_update] => 
Exec[apt_update], Package[mg-agent-xp] => Package[mg-agent-xp-baseagents], 
Package[corp-config-tools] => File[/usr/local/scripts/corp-information], 
Exec[apt_dist_upgrade] => Package[alsa-utils], Exec[apt_install_fix] => 
Package[alsa-utils], Exec[apt_update] => Package[alsa-utils], 
File[change_speedstep_390] => Exec[enable_speedstep], Exec[apt_install_fix] => 
Exec[apt_dist_upgrade], Exec[apt_dist_upgrade] => Package[bug-buddy], 
Exec[apt_install_fix] => Package[bug-buddy], Exec[apt_update] => 
Package[bug-buddy], Package[ubuntu-desktop] => 
File[xscreensaver_app-defaults_nogl], Package[corp-config-tools] => 
File[/usr/local/scripts/corp-config], Exec[apt_dist_upgrade] => 
Package[corp-base], Exec[apt_install_fix] => Package[corp-base], 
Exec[apt_update] => Package[corp-base], Exec[apt_update] => 
Exec[apt_install_fix]
</pre>

It's reasonably annoying to work out what the dependency is here.

I've been using pygraph to make this a bit more sane like:

<pre>
#!/usr/bin/python2.5

import pygraph
import re

change_arrows_quote = re.compile( '(.*) => (.*)')

f = '/tmp/foo'

the_str = open(f).read()
the_str = the_str.replace(", ", "\n")
the_str = the_str.replace(";","")
the_str = the_str.replace("\"","")
the_str = change_arrows_quote.sub(r'"\1" -> "\2"', the_str)
the_str = "digraph Cycles {\n%s\n}" % the_str

suspect = pygraph.readwrite.dot.read(the_str)
print pygraph.algorithms.cycles.find_cycle(suspect)
</pre>

which works out that the cycle is in <code>['"Exec[apt_update]"']</code>

It would be awesome if we could make the puppet dependency cycle error message 
point to exactly where the dependency cycle is.


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