Issue #16883 has been updated by Banio Carpenter.
Sorry. I did indeed leave off the .pp extension. It's been a while, and I don't have the above setup anymore. But the problem is still happening with many modules that use inheritance, including modules written by puppetlabs. Perhaps it will be easier to reproduce using the puppetlabs mysql module I am currently using taken from here: https://github.com/puppetlabs/puppetlabs-mysql puppetmaster profile: CentOS 6.3 Arch: 64bit # puppet --version 3.0.1 # ruby --version ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] # facter --version 1.6.13 puppet client profile: CentOS 6.3 Arch: 64bit # puppet --version 3.0.1 # ruby --version ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] [root@dbstg1-s1 cw]# facter --version 1.6.14 Here is the error from the puppet client: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find parent resource type 'mysql::params' of type hostclass in production at /etc/puppet/modules/mysql/manifests/server.pp:17 on node dbstg1-s1.mydomain.com Here is the trace from puppetmaster: Fri Nov 09 10:09:29 -0700 2012 Puppet (err): Could not find parent resource type 'mysql::params' of type hostclass in production at /etc/puppet/modules/mysql/manifests/server.pp:17 on node dbstg1-s1.mydomain.com /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:60:in `fail' /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:284:in `parent_type' /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:232:in `instantiate_resource' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:57:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/lexer.rb:171:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code' /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:165:in `evaluate_classes' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `evaluate_classes' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:60:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate' /usr/lib/ruby/1.8/erb.rb:716:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:14:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code' /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:165:in `evaluate_classes' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `evaluate_classes' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:60:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/lexer.rb:171:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate' /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code' /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:219:in `evaluate_ast_node' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:98:in `compile' /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:29:in `compile' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:77:in `compile' /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:179:in `benchmark' /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime' /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:178:in `benchmark' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:75:in `compile' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:35:in `find' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:191:in `find' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:108:in `do_find' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:71:in `send' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:71:in `process' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick/rest.rb:24:in `service' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:33:in `listen' /usr/lib/ruby/1.8/webrick/server.rb:173:in `call' /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:30:in `listen' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in `initialize' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in `new' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in `listen' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:26:in `synchronize' /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:26:in `listen' /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:92:in `listen' /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:104:in `start' /usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:136:in `start' /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:199:in `main' /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:148:in `run_command' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:438:in `plugin_hook' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run' /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:500:in `exit_on_fail' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run' /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:87:in `execute' /usr/bin/puppet:4 Here is /etc/puppet/modules/mysql/manifests/server.pp: # Class: mysql::server # # manages the installation of the mysql server. manages the package, service, # my.cnf # # Parameters: # [*package_name*] - name of package # [*service_name*] - name of service # [*config_hash*] - hash of config parameters that need to be set. # # Actions: # # Requires: # # Sample Usage: # class mysql::server ( $package_name = $mysql::params::server_package_name, $package_ensure = 'present', $service_name = $mysql::params::service_name, $service_provider = $mysql::params::service_provider, $config_hash = {}, $enabled = true, $manage_service = true ) inherits mysql::params { Class['mysql::server'] -> Class['mysql::config'] $config_class = { 'mysql::config' => $config_hash } create_resources( 'class', $config_class ) package { 'mysql-server': ensure => $package_ensure, name => $package_name, } if $enabled { $service_ensure = 'running' } else { $service_ensure = 'stopped' } if $manage_service { service { 'mysqld': ensure => $service_ensure, name => $service_name, enable => $enabled, require => Package['mysql-server'], provider => $service_provider, } } } Here is /etc/puppet/modules/mysql/manifests/params.pp: # Class: mysql::params # # The mysql configuration settings. # # Parameters: # # Actions: # # Requires: # # Sample Usage: # class mysql::params { $bind_address = '127.0.0.1' $port = 3306 $etc_root_password = false $ssl = false $restart = true case $::operatingsystem { 'Ubuntu': { $service_provider = upstart } default: { $service_provider = undef } } case $::osfamily { 'RedHat': { $basedir = '/usr' # $datadir = '/var/lib/mysql' # our mysql dir $datadir = '/mnt/mysql' $service_name = 'mysqld' $client_package_name = 'mysql' $server_package_name = 'mysql-server' # our mysql dir $socket = '/var/lib/mysql/mysql.sock' # $socket = '/mnt/mysql/mysql.sock' $pidfile = '/var/run/mysqld/mysqld.pid' $config_file = '/etc/my.cnf' $log_error = '/var/log/mysqld.log' $ruby_package_name = 'ruby-mysql' $ruby_package_provider = 'gem' $python_package_name = 'MySQL-python' $java_package_name = 'mysql-connector-java' $root_group = 'root' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' } 'Debian': { $basedir = '/usr' $datadir = '/var/lib/mysql' $service_name = 'mysql' $client_package_name = 'mysql-client' $server_package_name = 'mysql-server' $socket = '/var/run/mysqld/mysqld.sock' $pidfile = '/var/run/mysqld/mysqld.pid' $config_file = '/etc/mysql/my.cnf' $log_error = '/var/log/mysql/error.log' $ruby_package_name = 'libmysql-ruby' $python_package_name = 'python-mysqldb' $java_package_name = 'libmysql-java' $root_group = 'root' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' } 'FreeBSD': { $basedir = '/usr/local' $datadir = '/var/db/mysql' $service_name = 'mysql-server' $client_package_name = 'databases/mysql55-client' $server_package_name = 'databases/mysql55-server' $socket = '/tmp/mysql.sock' $pidfile = '/var/db/mysql/mysql.pid' $config_file = '/var/db/mysql/my.cnf' $log_error = "/var/db/mysql/${::hostname}.err" $ruby_package_name = 'ruby-mysql' $ruby_package_provider = 'gem' $python_package_name = 'databases/py-MySQLdb' $java_package_name = 'databases/mysql-connector-java' $root_group = 'wheel' $ssl_ca = undef $ssl_cert = undef $ssl_key = undef } default: { case $::operatingsystem { 'Amazon': { $basedir = '/usr' $datadir = '/var/lib/mysql' $service_name = 'mysqld' $client_package_name = 'mysql' $server_package_name = 'mysql-server' $socket = '/var/lib/mysql/mysql.sock' $config_file = '/etc/my.cnf' $log_error = '/var/log/mysqld.log' $ruby_package_name = 'ruby-mysql' $ruby_package_provider = 'gem' $python_package_name = 'MySQL-python' $java_package_name = 'mysql-connector-java' $root_group = 'root' $ssl_ca = '/etc/mysql/cacert.pem' $ssl_cert = '/etc/mysql/server-cert.pem' $ssl_key = '/etc/mysql/server-key.pem' } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} only support osfamily RedHat, Debian, and FreeBSD, or operatingsystem Amazon") } } } } } ---------------------------------------- Bug #16883: Inheritence seems to not be working puppet 3.0 intermittent error https://projects.puppetlabs.com/issues/16883#change-76130 Author: Banio Carpenter Status: Needs More Information Priority: Normal Assignee: Banio Carpenter Category: Target version: Affected Puppet version: Keywords: Branch: All servers running Centos 6.3 puppet master: # puppet --version 3.0.0 # ruby --version ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] # facter --version 1.6.12 puppet client: # puppet --version 3.0.0 # ruby --version ruby 1.8.7 (2012-06-29 patchlevel 370) [i386-linux] # facter --version 1.6.12 This is the server class: class admin::test { class { 'base::standard': } -> class { 'users::standard_groups': } -> class { 'users::admins': } -> class { 'sudoers::standard': } -> class { 'users::root': } -> class { 'admin::scripts2': } -> class { 'admin::usrlocalbin': } -> class { 'admin::backendstgcron': } } Here is the problematic class that uses inheritence (/etc/puppet/modules/admins/manifests/scripts2): class admin::scripts2 inherits admin::scripts { File['/tmp/scripts'] { source => "puppet:///modules/admin/auxiliary/scripts-backend1_15", } } class the class it inherits from (/etc/puppet/modules/admins/manifests/scripts): class admin::scripts { file { "/tmp/scripts": ensure => directory, recurse => true, purge => true, force => true, owner => "root", group => "root", source => "puppet:///modules/admin/auxiliary/scripts-backend", } } Her is the error that sometimes happens: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find parent resource type 'admins::scripts' of type hostclass in production at /etc/puppet/modules/admins/manifests/scripts2.pp:1 on node admtest2.mydomain.com This error only occurs sometimes. If i run puppet agent -t on the puppet client it never happens. The file /etc/puppet/modules/admins/manifests/scripts is indeed there. -- 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://projects.puppetlabs.com/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.
