Uploaded image for project: 'Ibexa IBX'
  1. Ibexa IBX
  2. IBX-3977

[Taxonomy Rest API] Assigning the same content second time using taxonomy Rest API endpoint causes an error 500

    XMLWordPrintable

Details

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Medium Medium
    • None
    • 4.2.x-dev, 4.2.1
    • None

    Description

      Preconditions:{}

      • Generate CSRF authentication token code
      • Add new newtaxonomy tag in Content / Tags

      Steps to reproduce:

      1. Assign random content to taxonomy tag using Assign entry / content endpoint (curl to import):
      curl --location --request POST 'http://flex30.com/api/ibexa/v2/taxonomy/newtaxonomy/entry-assignments/assign-to-content' \
      --header 'Accept: application/vnd.ibexa.api.TaxonomyEntryAssignToContent+json' \
      --header 'Content-Type: application/vnd.ibexa.api.TaxonomyEntryAssignToContent+json' \
      --header 'Authorization: Bearer eZSESSID98defd6ee70dfb1dea416cecdf391f58' \
      --data-raw '{
          "TaxonomyEntryAssignToContent": {
              "content": 147,
              "entries": 
              [
                  2, 3
              ]
          }
      }' 
      1. After assigning the content to tag and receiving status code 204, send the same request one more time.
      2. Verify status code and response message.

      Actual result:
      See attached screenshots:

      Assigning the same content second time using taxonomy Rest API endpoint causes an error 500.

           "ErrorMessage": {        "_media-type": "application/vnd.ibexa.api.ErrorMessage+json",        "errorCode": 500,        "errorMessage": "Internal Server Error",        "errorDescription": "An exception occurred while executing 'INSERT INTO ibexa_taxonomy_assignments (content_id, version_no, entry_id) VALUES (?, ?, ?)' with params [147, 1, 2]:\n\nSQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-147-1' for key 'ibexa_taxonomy_assignments.ibexa_taxonomy_assignments_unique_entry_content_idx'",        "trace": "#0 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(182): Doctrine\\DBAL\\Driver\\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\\DBAL\\Driver\\PDO\\Exception))\n#1 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(159): Doctrine\\DBAL\\DBALException::wrapException(Object(Doctrine\\DBAL\\Driver\\PDO\\MySQL\\Driver), Object(Doctrine\\DBAL\\Driver\\PDO\\Exception), 'An exception oc...')\n#2 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(2226): Doctrine\\DBAL\\DBALException::driverExceptionDuringQuery(Object(Doctrine\\DBAL\\Driver\\PDO\\MySQL\\Driver), Object(Doctrine\\DBAL\\Driver\\PDO\\Exception), 'INSERT INTO ibe...', Array)\n#3 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(185): Doctrine\\DBAL\\Connection->handleExceptionDuringQuery(Object(Doctrine\\DBAL\\Driver\\PDO\\Exception), 'INSERT INTO ibe...', Array, Array)\n#4 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(226): Doctrine\\DBAL\\Statement->execute(NULL)\n#5 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(278): Doctrine\\DBAL\\Statement->executeStatement()\n#6 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1129): Doctrine\\ORM\\Persisters\\Entity\\BasicEntityPersister->executeInserts()\n#7 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(430): Doctrine\\ORM\\UnitOfWork->executeInserts(Object(Doctrine\\ORM\\Mapping\\ClassMetadata))\n#8 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(403): Doctrine\\ORM\\UnitOfWork->commit(NULL)\n#9 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): Doctrine\\ORM\\EntityManager->flush(NULL)\n#10 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): ContainerRX7F6FU\\EntityManager_9a5be93->flush(NULL)\n#11 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/TaxonomyEntryAssignmentService.php(137): ContainerRX7F6FU\\EntityManager_9a5be93->flush()\n#12 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/AbstractTaxonomyEntryAssignmentServiceDecorator.php(48): Ibexa\\Taxonomy\\Service\\TaxonomyEntryAssignmentService->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#13 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator.php(50): Ibexa\\Taxonomy\\Service\\Decorator\\AbstractTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#14 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/bundle/Controller/REST/TaxonomyEntryAssignmentController.php(46): Ibexa\\Taxonomy\\Service\\Decorator\\SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#15 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(153): Ibexa\\Bundle\\Taxonomy\\Controller\\REST\\TaxonomyEntryAssignmentController->assignToContentAction(Object(Symfony\\Component\\HttpFoundation\\Request))\n#16 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#17 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/Kernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#18 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#19 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/autoload_runtime.php(35): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()\n#20 /Users/bogdanmazur/flex/flexCommerceMaster42/public/index.php(5): require_once('/Users/bogdanma...')\n#21 {main}",        "file": "/Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php",        "line": 74,        "Previous": {            "_media-type": "application/vnd.ibexa.api.ErrorMessage+json",            "ErrorMessage": {                "_media-type": "application/vnd.ibexa.api.ErrorMessage+json",                "errorCode": 500,                "errorMessage": "Internal Server Error",                "errorDescription": "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-147-1' for key 'ibexa_taxonomy_assignments.ibexa_taxonomy_assignments_unique_entry_content_idx'",                "trace": "#0 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(119): Doctrine\\DBAL\\Driver\\PDO\\Exception::new(Object(PDOException))\n#1 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(179): Doctrine\\DBAL\\Driver\\PDOStatement->execute(NULL)\n#2 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(226): Doctrine\\DBAL\\Statement->execute(NULL)\n#3 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(278): Doctrine\\DBAL\\Statement->executeStatement()\n#4 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1129): Doctrine\\ORM\\Persisters\\Entity\\BasicEntityPersister->executeInserts()\n#5 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(430): Doctrine\\ORM\\UnitOfWork->executeInserts(Object(Doctrine\\ORM\\Mapping\\ClassMetadata))\n#6 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(403): Doctrine\\ORM\\UnitOfWork->commit(NULL)\n#7 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): Doctrine\\ORM\\EntityManager->flush(NULL)\n#8 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): ContainerRX7F6FU\\EntityManager_9a5be93->flush(NULL)\n#9 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/TaxonomyEntryAssignmentService.php(137): ContainerRX7F6FU\\EntityManager_9a5be93->flush()\n#10 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/AbstractTaxonomyEntryAssignmentServiceDecorator.php(48): Ibexa\\Taxonomy\\Service\\TaxonomyEntryAssignmentService->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#11 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator.php(50): Ibexa\\Taxonomy\\Service\\Decorator\\AbstractTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#12 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/bundle/Controller/REST/TaxonomyEntryAssignmentController.php(46): Ibexa\\Taxonomy\\Service\\Decorator\\SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#13 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(153): Ibexa\\Bundle\\Taxonomy\\Controller\\REST\\TaxonomyEntryAssignmentController->assignToContentAction(Object(Symfony\\Component\\HttpFoundation\\Request))\n#14 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#15 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/Kernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#16 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#17 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/autoload_runtime.php(35): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()\n#18 /Users/bogdanmazur/flex/flexCommerceMaster42/public/index.php(5): require_once('/Users/bogdanma...')\n#19 {main}",                "file": "/Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php",                "line": 18,                "Previous": {                    "_media-type": "application/vnd.ibexa.api.ErrorMessage+json",                    "ErrorMessage": {                        "_media-type": "application/vnd.ibexa.api.ErrorMessage+json",                        "errorCode": 500,                        "errorMessage": "Internal Server Error",                        "errorDescription": "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-147-1' for key 'ibexa_taxonomy_assignments.ibexa_taxonomy_assignments_unique_entry_content_idx'",                        "trace": "#0 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(117): PDOStatement->execute(NULL)\n#1 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(179): Doctrine\\DBAL\\Driver\\PDOStatement->execute(NULL)\n#2 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(226): Doctrine\\DBAL\\Statement->execute(NULL)\n#3 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(278): Doctrine\\DBAL\\Statement->executeStatement()\n#4 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1129): Doctrine\\ORM\\Persisters\\Entity\\BasicEntityPersister->executeInserts()\n#5 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(430): Doctrine\\ORM\\UnitOfWork->executeInserts(Object(Doctrine\\ORM\\Mapping\\ClassMetadata))\n#6 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(403): Doctrine\\ORM\\UnitOfWork->commit(NULL)\n#7 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): Doctrine\\ORM\\EntityManager->flush(NULL)\n#8 /Users/bogdanmazur/flex/flexCommerceMaster42/var/cache/behat/ContainerRX7F6FU/EntityManager_9a5be93.php(136): ContainerRX7F6FU\\EntityManager_9a5be93->flush(NULL)\n#9 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/TaxonomyEntryAssignmentService.php(137): ContainerRX7F6FU\\EntityManager_9a5be93->flush()\n#10 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/AbstractTaxonomyEntryAssignmentServiceDecorator.php(48): Ibexa\\Taxonomy\\Service\\TaxonomyEntryAssignmentService->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#11 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/lib/Service/Decorator/SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator.php(50): Ibexa\\Taxonomy\\Service\\Decorator\\AbstractTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#12 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/ibexa/taxonomy/src/bundle/Controller/REST/TaxonomyEntryAssignmentController.php(46): Ibexa\\Taxonomy\\Service\\Decorator\\SearchEngineIndexerTaxonomyEntryAssignmentServiceDecorator->assignMultipleToContent(Object(Ibexa\\Core\\Repository\\Values\\Content\\Content), Array, 1)\n#13 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(153): Ibexa\\Bundle\\Taxonomy\\Controller\\REST\\TaxonomyEntryAssignmentController->assignToContentAction(Object(Symfony\\Component\\HttpFoundation\\Request))\n#14 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#15 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/http-kernel/Kernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#16 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#17 /Users/bogdanmazur/flex/flexCommerceMaster42/vendor/autoload_runtime.php(35): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()\n#18 /Users/bogdanmazur/flex/flexCommerceMaster42/public/index.php(5): require_once('/Users/bogdanma...')\n#19 {main}",                        "file": "/Users/bogdanmazur/flex/flexCommerceMaster42/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php",                        "line": 117                    }                }            }        }    }}

      Expected result:

      User receives correct response status and message that content is already assigned to taxonomy tag.

      NOTE:

      Link to documentation that might be helpful: https://doc.ibexa.co/en/master/api/rest_api/rest_api_reference/rest_api_reference.html#taxonomy-assign-entry 

      Designs

        Attachments

          Activity

            People

              Unassigned Unassigned
              bogdan.mazur@ibexa.co Bogdan Mazur
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: