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

Providers requiring files in other modules might cause intermittent compilation failures

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Template:
    • Team:
      Agent
    • Method Found:
      Needs Assessment
    • QA Risk Assessment:
      Needs Assessment

      Description

      Hello,

      Please take this report for the moment as a call for help debugging although it might end up becoming a bug report. The Puppet version over here is 4.9.4.

      We're experiencing intermittent compilation failures in nodes making using of the following modules:

      The snippet to reproduce the issue is pretty simple:

        Package<| tag == 'nova-support-package'|>
        -> Nova_network<||>
      

      and the error message as seen by the agent when requesting a catalog is the following:

      Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Virtual Query, Could not autoload puppet/type/nova_network: Could not autoload puppet/provider/nova_network/nova: no such file to load -- puppet/provider/openstack at somewhere/environments/fooenv/somemanifest.pp:171:6 on node foo.example.org
      

      The Package resouce collector is in principle irrelevant, the point is to force the parser to ask for the type called Nova_network.

      This error only happens when the master hasn't seen that type before. When we restart the puppetserver daemon the compilation failure only happens during the first run that a particular thread serves for that node, the rest succeed. This a bit annoying in production as the number of masters that could serve a given node is quite high and we recycle instances every 3000 requests.

      The chain of calls is the following:

      The nova provider for the Nova_network type is loaded, which loads another file using this statement:

      require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/nova')
      

      That path resolves to this file which requires another class from the openstacklib module:

      require 'puppet/provider/openstack'
      

      If I don't misread the error message that's the class that the master is unable to find:

      Could not autoload puppet/provider/nova_network/nova: no such file to load -- puppet/provider/openstack
      

      Are the aforementioned modules doing anything wrong? Could it be a misconfiguration of our masters? A bug in Puppet itself perhaps?

      We've got as well the full server-side backtrace so please don't hesitate to ask for it if you think that it might be useful. Any request to do extra debugging from our side is also more than welcome.

      Thanks!

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              thomas.hallgren Thomas Hallgren
              Reporter:
              nbarrientos Nacho Barrientos
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Zendesk Support