Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2210

PHP warning in ProxyFactory when renaming proxy file

    Details

    • Type: Improvement Improvement
    • Status: Reopened
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Windows

      Description

      Getting a PHP Warning:

      rename(**/models/Proxies_CGAF_Model_Component_Group.php.50d2dd2c079bb9.35271255,**/models/Proxies__CG_AF_Model_Component_Group.php):

      in ProxyFactory line 194.

      I haven't more information in the warning.

      This is the moment when the ProxyFactory writes the proxy to a temporary file and then tries to rename the temp file to the correct file.

      This warning appears randomly, but mostly on pages with lots of concurrent AJAX requests. I guess this happens because several requests try to write the proxy file at the same time. I get this warning but the app works fine.

      This happens in dev environment, on a Windows machine.

      I don't know why rename generates a warning, it should just return false... The doc doesn't say anything about warnings (except for long file names, but I checked even with the full path this is around 135 characters, not 255).

        Activity

        Hide
        Doctrine Bot added a comment -

        A related Github Pull-Request [GH-269] was closed:
        https://github.com/doctrine/common/pull/269

        Show
        Doctrine Bot added a comment - A related Github Pull-Request [GH-269] was closed: https://github.com/doctrine/common/pull/269
        Hide
        Oleg Namaka added a comment -

        Thats why you shouldn't generate proxies at runtime. The problem happens on windows, because the atomic rename operation doesn't work as perfectly there as on linux.

        • In my case that is observed on a Linux machine (see http://www.doctrine-project.org/jira/browse/DDC-2613). If the rename operation is atomic then why it still happens? As I indicated in the description it's because of the way uniqid function works.
        • Is there a plan to merge the PR in this ticket? The fix in it would eliminate my issue whatsoever.
        Show
        Oleg Namaka added a comment - Thats why you shouldn't generate proxies at runtime. The problem happens on windows, because the atomic rename operation doesn't work as perfectly there as on linux. In my case that is observed on a Linux machine (see http://www.doctrine-project.org/jira/browse/DDC-2613 ). If the rename operation is atomic then why it still happens? As I indicated in the description it's because of the way uniqid function works. Is there a plan to merge the PR in this ticket? The fix in it would eliminate my issue whatsoever.
        Hide
        Matthieu Napoli added a comment -
        Show
        Matthieu Napoli added a comment - I've opened a PR: https://github.com/doctrine/common/pull/269
        Hide
        Marco Pivetta added a comment -

        Re-opening: the proxy factory could directly `eval()` the produced proxy code. The ProxyGenerator should no longer write the generated files to disk automatically.

        Show
        Marco Pivetta added a comment - Re-opening: the proxy factory could directly `eval()` the produced proxy code. The ProxyGenerator should no longer write the generated files to disk automatically.
        Hide
        Marco Pivetta added a comment -

        Matthieu Napoli I'd go with `eval` then. Needs refactoring of the abstract proxy factory and of the proxy generator (proxy generator should no longer write files).

        Show
        Marco Pivetta added a comment - Matthieu Napoli I'd go with `eval` then. Needs refactoring of the abstract proxy factory and of the proxy generator (proxy generator should no longer write files).

          People

          • Assignee:
            Marco Pivetta
            Reporter:
            Matthieu Napoli
          • Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated: