camptocamp/puppet-tomcat

dependency cycles w/tomcat::source

Closed this issue · 3 comments

Pulled from github on 5/25, ran 'include tomcat::source' on Ubuntu 11.04. It appears to be a problem w/tomcat-juli -- as I can comment out that include and re-run without issues. I've run with --graph == true. But being a newb, I'm not seeing anything unusual with the graphic rendering of the .dot files. I can send those if request.

debug: Executing '/usr/bin/dpkg-query -W --showformat '${Status} ${Package} ${Version}\n''
debug: Puppet::Type::Package::ProviderApt: Executing '/usr/bin/dpkg-query -W --showformat '${Status} ${Package} ${Version}\n''
debug: /Stage[main]/Tomcat::Source/Common::Archive[apache-tomcat-6.0.26]/Common::Archive::Extract[apache-tomcat-6.0.26]/require: requires Common::Archive::Download[apache-tomcat-6.0.26.tar.gz]
debug: /Stage[main]/Tomcat::Juli/File[/opt/apache-tomcat-6.0.26/bin/tomcat-juli.jar]/require: requires Common::Archive::Download[tomcat-juli.jar]
debug: /Stage[main]/Users::Virtual/User[customapps]/require: requires Group[customapps]
debug: /Stage[main]/Cron::Base/Service[crond]/require: requires Package[cron]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli.jar]/Exec[download digest of archive tomcat-juli.jar]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli.jar]/Exec[download digest of archive tomcat-juli.jar]/notify: subscribes to Exec[download archive tomcat-juli.jar and check sum]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli-adapters.jar]/Exec[download digest of archive tomcat-juli-adapters.jar]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli-adapters.jar]/Exec[download digest of archive tomcat-juli-adapters.jar]/notify: subscribes to Exec[download archive tomcat-juli-adapters.jar and check sum]
debug: /Stage[main]/Tomcat::Juli/File[/opt/apache-tomcat-6.0.26/extras/]/require: requires File[/opt/apache-tomcat-6.0.26]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli-adapters.jar]/Exec[download archive tomcat-juli-adapters.jar and check sum]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Juli/File[/opt/apache-tomcat-6.0.26/lib/tomcat-juli-adapters.jar]/require: requires Common::Archive::Download[tomcat-juli-adapters.jar]
debug: /Stage[main]/Tomcat::Source/Common::Archive[apache-tomcat-6.0.26]/Common::Archive::Download[apache-tomcat-6.0.26.tar.gz]/Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli-adapters.jar]/require: requires File[/opt/apache-tomcat-6.0.26/extras/]
debug: /Stage[main]/Tomcat::Source/File[/opt/apache-tomcat]/require: requires Common::Archive[apache-tomcat-6.0.26]
debug: /Stage[main]/Tomcat::Source/File[/opt/apache-tomcat]/before: requires File[commons-logging.jar]
debug: /Stage[main]/Tomcat::Source/File[/opt/apache-tomcat]/before: requires File[log4j.jar]
debug: /Stage[main]/Tomcat::Source/File[/opt/apache-tomcat]/before: requires File[log4j.properties]
debug: /Stage[main]/Tomcat::Source/Common::Archive[apache-tomcat-6.0.26]/Common::Archive::Download[apache-tomcat-6.0.26.tar.gz]/Exec[download digest of archive apache-tomcat-6.0.26.tar.gz]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Source/Common::Archive[apache-tomcat-6.0.26]/Common::Archive::Download[apache-tomcat-6.0.26.tar.gz]/Exec[download digest of archive apache-tomcat-6.0.26.tar.gz]/notify: subscribes to Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli.jar]/Exec[download archive tomcat-juli.jar and check sum]/require: requires Package[curl]
debug: /Stage[main]/Tomcat::Source/File[/opt/apache-tomcat-6.0.26]/require: requires Common::Archive[apache-tomcat-6.0.26]
debug: /Stage[main]/Tomcat::Juli/Common::Archive::Download[tomcat-juli.jar]/require: requires File[/opt/apache-tomcat-6.0.26/extras/]
debug: /Stage[main]/Timezone/Exec[set-timezone]/require: requires File[timezone]
debug: /Stage[main]/Timezone/Exec[set-timezone]/subscribe: subscribes to File[timezone]
debug: /Stage[main]/Tomcat::Base/File[/var/log/tomcat]: Autorequiring User[tomcat]
err: Could not apply complete catalog: Found dependency cycles in the following relationships: Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum] => Exec[apache-tomcat-6.0.26 unpack], Exec[download digest of archive apache-tomcat-6.0.26.tar.gz] => Exec[apache-tomcat-6.0.26 unpack], File[/opt/apache-tomcat] => File[log4j.jar], File[/opt/apache-tomcat] => File[commons-logging.jar], Exec[download digest of archive tomcat-juli.jar] => File[/opt/apache-tomcat-6.0.26/bin/tomcat-juli.jar], Package[curl] => File[/opt/apache-tomcat-6.0.26/bin/tomcat-juli.jar], Exec[download archive tomcat-juli.jar and check sum] => File[/opt/apache-tomcat-6.0.26/bin/tomcat-juli.jar], File[/opt/apache-tomcat-6.0.26/extras/] => Exec[download digest of archive tomcat-juli.jar], Package[curl] => Exec[download digest of archive tomcat-juli.jar], File[/opt/apache-tomcat-6.0.26/extras/] => Exec[download digest of archive tomcat-juli-adapters.jar], Package[curl] => Exec[download digest of archive tomcat-juli-adapters.jar], File[/opt/apache-tomcat-6.0.26] => File[/opt/apache-tomcat-6.0.26/extras/], File[/opt/apache-tomcat-6.0.26/extras/] => Exec[download archive tomcat-juli-adapters.jar and check sum], Exec[download digest of archive tomcat-juli-adapters.jar] => Exec[download archive tomcat-juli-adapters.jar and check sum], Package[curl] => Exec[download archive tomcat-juli-adapters.jar and check sum], Exec[download digest of archive tomcat-juli-adapters.jar] => File[/opt/apache-tomcat-6.0.26/lib/tomcat-juli-adapters.jar], Exec[download archive tomcat-juli-adapters.jar and check sum] => File[/opt/apache-tomcat-6.0.26/lib/tomcat-juli-adapters.jar], Exec[download digest of archive apache-tomcat-6.0.26.tar.gz] => Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum], Package[curl] => Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum], File[/opt/apache-tomcat-6.0.26/extras/] => Package[curl], Exec[apache-tomcat-6.0.26 unpack] => File[/opt/apache-tomcat], Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum] => File[/opt/apache-tomcat], Exec[download digest of archive apache-tomcat-6.0.26.tar.gz] => File[/opt/apache-tomcat], File[/opt/apache-tomcat] => File[log4j.properties], Package[curl] => Exec[download digest of archive apache-tomcat-6.0.26.tar.gz], Exec[download digest of archive tomcat-juli.jar] => Exec[download archive tomcat-juli.jar and check sum], File[/opt/apache-tomcat-6.0.26/extras/] => Exec[download archive tomcat-juli.jar and check sum], Package[curl] => Exec[download archive tomcat-juli.jar and check sum], Exec[apache-tomcat-6.0.26 unpack] => File[/opt/apache-tomcat-6.0.26], Exec[download archive apache-tomcat-6.0.26.tar.gz and check sum] => File[/opt/apache-tomcat-6.0.26], Exec[download digest of archive apache-tomcat-6.0.26.tar.gz] => File[/opt/apache-tomcat-6.0.26]; try using the '--graph' option and open the '.dot' files in OmniGraffle or GraphViz
debug: Storing state
debug: Stored state in 0.03 seconds

Same problem here. Not sure if this is the root, but I am using https://forge.puppetlabs.com/smarchive/archive for the archive module. The problem is in the tomcat::juli class, which requires the directory to be present before the download starts. This implicitely requires ${tomcat_home} to be present,

In my sources, (version 0.0.2 on puppetforge) I can either make changes to juli.pp or source.pp to fix this cyclic dependency.

juli.pp

  archive::download { "tomcat-juli.jar":
    url         => "${baseurl}/extras/tomcat-juli.jar",
    digest_url  => "${baseurl}/extras/tomcat-juli.jar.md5",
    digest_type => "md5",
    src_target  => "${tomcat_home}/extras/",
#    require     => File["${tomcat_home}/extras/"],
  }

  archive::download { "tomcat-juli-adapters.jar":
    url         => "${baseurl}/extras/tomcat-juli-adapters.jar",
    digest_url  => "${baseurl}/extras/tomcat-juli-adapters.jar.md5",
    digest_type => "md5",
    src_target  => "${tomcat_home}/extras/",
#    require     => File["${tomcat_home}/extras/"],
  }

  archive{ "apache-tomcat-${tomcat::params::version}":
    url         => $tomcaturl,
    digest_url  => "${tomcaturl}.md5",
    digest_type => "md5",
    target      => "/opt",
  }

  file {"/opt/apache-tomcat":
    ensure  => link,
    target  => $tomcat_home,
    require => Archive["apache-tomcat-${tomcat::params::version}"],
    before  => [File["commons-logging.jar"], File["log4j.jar"], File["log4j.properties"]],
  }

  file { $tomcat_home:
    ensure  => directory,
#    require => Archive["apache-tomcat-${tomcat::params::version}"],
  }

@AndreasEK I just uploaded a new version on the forge, could you test with this one please ?

@pinterb @AndreasEK I close this issue as it refers to an old version of this module, feel free to reopen if it is still relevant.