Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-1984

ORM tries to fetch an already deleted versioned entity and fails with spl_object_hash error

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.2.2
    • Fix Version/s: 2.3.4
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None

      Description

      This is a nasty bug, it doesn't always happen, and i can't seem to reproduce it consistently.

      It sometimes happens when trying to fetch a versioned entity which doesn't exist anymore in the database.

      Setup:
      PHP 5.4.5
      PostgreSQL 9.1
      Doctrine 2.2.2 with array cache, XML mapping driver

      Entity config: BaseEntity mapped as mapped-superclass, User entity extending the base entity:

      Mapping file:

      <mapped-superclass name="Specula\Entities\BaseEntity">

      <field name="updatedOn" type="datetime" column="updated_on" />
      <field name="version" version="true" type="integer" column="version" />

      <many-to-one field="updatedBy" target-entity="User">
      <join-column name="updated_by" referenced-column-name="user_id" />
      </many-to-one>

      </mapped-superclass>

      User entity:

      <entity name="Specula\Entities\User" table="users">
      <id name="id" type="integer" column="user_id">
      <generator strategy="AUTO" />
      </id>

      <field name="userName" type="string" column="username" length="20" />
      <field name="passwordHash" type="string" column="password_hash" length="40" />
      <field name="fullName" type="string" column="fullname" length="45" />
      <field name="isAdmin" type="boolean" column="is_admin" />
      <field name="isActive" type="boolean" column="is_active" />

      </entity>

      Relevant part of stack trace:

      PHP Error [2]

      spl_object_hash() expects parameter 1 to be object, null given (/var/www/html/repository/Doctrine/ORM/UnitOfWork.php:1318)

      #0 unknown(0): CWebApplication->handleError()
      #1 /var/www/html/repository/Doctrine/ORM/UnitOfWork.php(1318): spl_object_hash()
      #2 /var/www/html/repository/Doctrine/ORM/UnitOfWork.php(2141): Doctrine\ORM\UnitOfWork->getEntityState()
      #3 /var/www/html/repository/Doctrine/ORM/EntityRepository.php(145): Doctrine\ORM\UnitOfWork->lock()
      #4 /var/www/html/repository/Doctrine/ORM/EntityManager.php(371): Doctrine\ORM\EntityRepository->find()
      #5 /var/www/html/repository/Specula/Dao/BaseDao.php(103): Doctrine\ORM\EntityManager->find()
      #6 /var/www/html/repository/Specula/Dao/UserDao.php(33): Specula\Dao\UserDao->findEntityById()
      #7 /var/www/html/repository/Specula/Managers/UserManager.php(91): Specula\Dao\UserDao->findById()
      #8 /var/www/html/repository/Doctrine/ORM/EntityManager.php(220): Specula\Managers\UserManager->Specula\Managers{closure}()
      #9 /var/www/html/repository/Specula/Managers/UserManager.php(93): Doctrine\ORM\EntityManager->transactional()

      Deleting the proxy, restarting webserver, restarting database server doesn't help. i'm using the array cache and apc is disabled.

      If you need more information let me know i'm currently experiencing this bug so i can provide more information.

      Best regards,

      Jaco

        Activity

        jaco Jaco Stienstra created issue -
        Hide
        beberlei Benjamin Eberlei added a comment -

        Fixed in 2.3.4

        Show
        beberlei Benjamin Eberlei added a comment - Fixed in 2.3.4
        beberlei Benjamin Eberlei made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 2.3.4 [ 10420 ]
        Resolution Fixed [ 1 ]

        This list may be incomplete, as errors occurred whilst retrieving source from linked applications:

        • Request to http://www.doctrine-project.org/fisheye/ failed: Error in remote call to 'FishEye 0 (http://www.doctrine-project.org/fisheye/)' (http://www.doctrine-project.org/fisheye) [AbstractRestCommand{path='/rest-service-fe/search-v1/crossRepositoryQuery', params={expand=changesets[0:20].revisions[0:29],reviews, query=DDC-1984}, methodType=GET}] : Received status code 503 (Service Temporarily Unavailable)

          People

          • Assignee:
            beberlei Benjamin Eberlei
            Reporter:
            jaco Jaco Stienstra
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: