[DDC-2159] [GH-519] Bug in UnitOfWork::executeDeletions when at least two entities have to b... Created: 21/Nov/12  Updated: 28/Jan/14  Resolved: 21/Nov/12

Status: Resolved
Project: Doctrine 2 - ORM
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: All

Type: Bug Priority: Major
Reporter: Benjamin Eberlei Assignee: Benjamin Eberlei
Resolution: Invalid Votes: 0
Labels: None


 Description   

This issue is created automatically through a Github pull request on behalf of maryo:

Url: https://github.com/doctrine/doctrine2/pull/519

Message:

Bug in UnitOfWork::executeDeletions.

There is a foreach on line 1012 and dispatchEvent on line 1038.
When at least two entities have to be deleted and a listener listening to postRemove event is attached to them and there is also EntityManager::flush in that listener.

  • EntityManager::remove
  • EntityManager::remove
  • EntityManager::flush
  • UnitOfWork::commit
  • UnitOfWork::executeDeletions
  • BasicEntityPersister::delete // FOR THE FIRST REMOVED ENTITY
    ...
  • EventManager::dispatchEvent
  • PostRemoveListener::postRemove
  • EntityManager::flush
  • UnitOfWork::commit
  • UnitOfWork::executeDeletions
  • BasicEntityPersister::delete // FOR THE SECOND REMOVED ENTITY
  • BasicEntityPersister::delete // FOR THE SECOND REMOVED ENTITY AGAIN because that foreach operates with array "copies" and that unset on line 1020 in UnitOfWork doesnt affact to the array copy
  • UnitOfWork::getEntityIdentifier // line 2735 - NOTICE, because the entity is already deleted from the array

Tests passed (those tests which are not skipped in my environment).

PHPUnit 3.7.9 by Sebastian Bergmann.

Configuration read from D:\Www\doctrine2\phpunit.xml.dist

.....................SSSSSS.................................. 61 / 1783 ( 3%)
............................................................. 122 / 1783 ( 6%)
......S.....SSSS............................................. 183 / 1783 ( 10%)
......................................................SS..... 244 / 1783 ( 13%)
............................................................. 305 / 1783 ( 17%)
............................................................. 366 / 1783 ( 20%)
......S...................................................... 427 / 1783 ( 23%)
............................................................. 488 / 1783 ( 27%)
....................SSSSSSSSSSSSS...........S................ 549 / 1783 ( 30%)
...........S...S...........S............................S.... 610 / 1783 ( 34%)
............................................................. 671 / 1783 ( 37%)
..............................................SS............. 732 / 1783 ( 41%)
....................S........................................ 793 / 1783 ( 44%)
............................................................. 854 / 1783 ( 47%)
............................................................. 915 / 1783 ( 51%)
............................................................. 976 / 1783 ( 54%)
...........................................................S. 1037 / 1783 ( 58%)
........................................S.................... 1098 / 1783 ( 61%)
............................................................. 1159 / 1783 ( 65%)
............................................................. 1220 / 1783 ( 68%)
............................................................. 1281 / 1783 ( 71%)
............................................................. 1342 / 1783 ( 75%)
............................................................. 1403 / 1783 ( 78%)
............................................................. 1464 / 1783 ( 82%)
............................................................. 1525 / 1783 ( 85%)
............................................................. 1586 / 1783 ( 88%)
............................................................. 1647 / 1783 ( 92%)
................S.............S.............................. 1708 / 1783 ( 95%)
.....................................................

Time: 14 seconds, Memory: 97.75Mb

OK, but incomplete or skipped tests!
Tests: 1761, Assertions: 5932, Skipped: 39.



 Comments   
Comment by Benjamin Eberlei [ 21/Nov/12 ]

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

Comment by Doctrine Bot [ 28/Jan/14 ]

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

Generated at Wed Apr 16 04:59:09 UTC 2014 using JIRA 5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5.