Skip to content

Loading…

DDC-2613: Proxy generation in multiprocess environment #3345

Closed
doctrinebot opened this Issue · 5 comments

2 participants

@doctrinebot

Jira issue originally created by user deatheriam:

{panel}
\Doctrine\ORM\Proxy\ProxyFactory::generateProxyClass fails to rename temporary proxy files when proxies are generated on demand in multiprocess environment using Process Control extension under Linux (http://www.php.net/manual/en/book.pcntl.php). 'Message: rename(../cache/Proxy/Dlayer/__CG__DlayerEntityInventory.php.520d1708631ed2.21378588,/../cache/Proxy/Dlayer/__CG_\DlayerEntityInventory.php): No such file or directory' message is given.
{panel}

  • It seems that when two parallel processes are trying to generate a proxy for the same entity, the uniqid function does not create unique temporary file names per process.
  • Also the check should be made at the time of renaming to make sure that the proxy with the same name was not already created in a parallel process.
@doctrinebot

Comment created by @ocramius:

The "dev" settings are not meant to be used for high concurrency environments at the moment.

@doctrinebot

Comment created by @ocramius:

Duplicate of DDC-2210

@doctrinebot

Issue was closed with resolution "Duplicate"

@doctrinebot

Comment created by deatheriam:

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. (http://www.doctrine-project.org/jira/browse/[DDC-2210](http://www.doctrine-project.org/jira/browse/DDC-2210)?focusedCommentId=19171&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-19171)

@doctrinebot

Comment created by @ocramius:

[~deatheriam] please continue on the issue that this one is duplicating.

@Ocramius Ocramius was assigned by doctrinebot
@doctrinebot doctrinebot closed this
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.