Loading ...
Sorry, an error occurred while loading the content.

Re: Apache2::Reload problem (ModPerl::Util bug)

Expand Messages
  • Mark
    ... That works. Thanks.
    Message 1 of 5 , Jun 5, 2005
    • 0 Attachment
      Philippe M. Chiasson wrote:
      > Mark wrote:
      >
      >>Mark wrote:
      >>
      >>
      >>>In 2.0.0, if there are heirarchical packages, and Apache2::Reload is
      >>>configured to reload the 'parent', it blows away the 'children' package
      >>>namespaces (and doesn't reload the children.) For example, if @INC has:
      >>>
      >>>Fubar.pm
      >>>Fubar/Child.pm
      >>>
      >>>And Apache2::Reload reloads package Fubar, it blows away
      >>>Fubar::Child::* and only reloads file Fubar.pm. Only a server
      >>>restart can recover from this point.
      >>>
      >>>The actual unloading work is done by ModPerl::Util::unload_package(),
      >>>whose behavior is contrary to the docs, which say:
      >>>
      >>> "unload_package()" takes care to leave sub-stashes intact while
      >>> deleting the requested stash. So for example if "CGI" and "CGI::Carp"
      >>> are loaded, calling "unload_package('CGI')" won't affect "CGI::Carp".
      >
      >
      > This is clearly a bug.
      >
      >
      >>>I only partly understand how unload_package() works, but it seems to
      >>>just iterate over symbols in the package and blow them away, without
      >>>regard for the actual file from which the symbol was instantiated.
      >
      >
      > Yup, it's that simple and there is a slightly smarter version in XS
      > that does check the source of the symbols from.
      >
      >
      >>>I tried modifying the code to skip over symbols that correspond
      >>>to a key in %INC, which seems logical and works correctly in my tests,
      >>>but may not be a complete or perfect solution for reasons beyond
      >>>my current testing/thinking. However, in my tests, it works correctly
      >>>if either the parent package, child package, or both are modified.
      >>>
      >>>Comments/suggestions about the correctness of this patch requested.
      >>
      >>Correction. Ignore previous patch. It only worked one level of
      >>heirarchy. Correct patch is:
      >
      >
      > Much simpler patch to just skip stashes has been checked in in rev 179448.
      >
      > If you can try latest-svn and confirm your problem goes away, that would be
      > fantastic.

      That works. Thanks.
    Your message has been successfully submitted and would be delivered to recipients shortly.