Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-4170

Resource type 'package' will fall back to other providers after one completely fails to work

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Won't Fix
    • Affects Version/s: PUP 3.6.2
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:

      RHEL6 on server and client

    • Template:

      Description

      An agent puppet run failed because the client system was bogged down by other software failing, causing both an extreme load and a filled process table. Puppet's failure mode was not very intelligent. Note this sequence of events, from the start of the log:

      warning|//a.host.name/Puppet|Could not load fact file /var/lib/puppet/lib/facter/rhn_repos.rb: execution expired
      err|//a.host.name/Puppet|Could not autoload puppet/provider/package/rpm: No child processes
      err|//a.host.name/Puppet|Could not autoload puppet/provider/package/yum: Could not autoload puppet/provider/package/rpm: No child processes
      err|//a.host.name/Puppet|Could not autoload puppet/provider/package/yum_versionlock: Could not autoload puppet/provider/package/yum: Could not autoload puppet/provider/package/rpm: No child processes
      err|//a.host.name/Puppet|Could not autoload puppet/type/package: Could not autoload puppet/provider/package/yum_versionlock: Could not autoload puppet/provider/package/yum: Could not autoload puppet/provider/package/rpm: No child processes
      err|//a.host.name/Puppet|Could not retrieve catalog from remote server: Could not intern from text/pson: Could not autoload puppet/type/package: Could not autoload puppet/provider/package/yum_versionlock: Could not autoload puppet/provider/package/yum: Could not autoload puppet/provider/package/rpm: No child processes
      notice|//a.host.name/Puppet|Using cached catalog
      warning|//a.host.name/Puppet|Found multiple default providers for package: gem, pip, rpm; using gem
      err|//a.host.name/Puppet|Execution of '/usr/bin/gem install --no-rdoc --no-ri openssh-clients' returned 2: ERROR: Could not find a valid gem 'openssh-clients' (>= 0) in any repository
      err|//a.host.name//Stage[main]/Ssh::Client/Package[openssh-clients]/ensure|change from absent to present failed: Execution of '/usr/bin/gem install --no-rdoc --no-ri openssh-clients' returned 2: ERROR: Could not find a valid gem 'openssh-clients' (>= 0) in any repository
      

      Oops! Because it couldn't run yum, it couldn't find out whether openssh-clients was installed, so it chose to go on and try to install it using gem.

      We then got a lot of other, similar error messages, of course, and a lot of dependent failures. However, in some cases, there happen to exist gems that have the same names as rpm packages we want to ensure are installed, and these did get installed. Much hilarity ensued.

      Surely, if attempts to use one provider fails, and Puppet knows that it failed, and flags it as an error in the log, then it should not assume that the resource in question has not been installed! It should fail the whole resource, saying "I have no idea whether this is installed, so I can't do anything".

        Attachments

          Activity

            People

            Assignee:
            Unassigned
            Reporter:
            tih Tom Ivar Helbekkmo
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Zendesk Support