sitegeist / Sitegeist.LostInTranslation

Automatic Translations for Neos via DeeplApi
GNU General Public License v3.0
9 stars 9 forks source link

BUG: Optimistic lock on entity when using sync mode #33

Closed gradinarufelix closed 10 months ago

gradinarufelix commented 11 months ago

In one of our customer projects, this error happens from time to time. Unfortunately, it cannot be isolated or provoked. It looks like this comes from the @ORM\Version annotation in NodeData.

The stack trace:

Exception in line 531 of /application/Packages/Libraries/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php: The optimistic lock on an entity failed.

83 Doctrine\ORM\OptimisticLockException::lockFailed(Neos\ContentRepository\Domain\Model\NodeData)
82 Doctrine\ORM\Persisters\Entity\BasicEntityPersister::updateTable(Neos\ContentRepository\Domain\Model\NodeData, "neos_contentrepository_domain_model_nodedata", array|3|, true)
81 Doctrine\ORM\Persisters\Entity\BasicEntityPersister::update(Neos\ContentRepository\Domain\Model\NodeData)
80 Doctrine\ORM\UnitOfWork::executeUpdates()
79 Doctrine\ORM\UnitOfWork::commit(NULL)
78 Doctrine\ORM\EntityManager::flush()
77 Neos\ContentRepository\Domain\Repository\NodeDataRepository_Original::persistEntities()
76 Sitegeist\LostInTranslation\ContentRepository\NodeTranslationService_Original::syncNode(Neos\ContentRepository\Domain\Model\Node)
75 Sitegeist\LostInTranslation\ContentRepository\NodeTranslationService_Original::Sitegeist\LostInTranslation\ContentRepository\{closure}()
74 Closure::__invoke()
73 Neos\Flow\Security\Context_Original::withoutAuthorizationChecks(Closure)
72 Sitegeist\LostInTranslation\ContentRepository\NodeTranslationService_Original::afterNodePublish(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
71 call_user_func_array(array|2|, array|2|)
70 Neos\Flow\SignalSlot\Dispatcher::dispatch("Neos\ContentRepository\Domain\Model\Workspace", "afterNodePublishing", array|2|)
69 Neos\Flow\SignalSlot\SignalAspect_Original::forwardSignalToDispatcher(Neos\Flow\Aop\JoinPoint)
68 Neos\Flow\Aop\Advice\AbstractAdvice::invoke(Neos\Flow\Aop\JoinPoint)
67 Neos\ContentRepository\Domain\Model\Workspace::emitAfterNodePublishing(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
66 Neos\ContentRepository\Domain\Model\Workspace_Original::publishNode(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
65 Neos\ContentRepository\Domain\Model\Workspace::publishNode(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
64 Neos\ContentRepository\Domain\Model\Workspace::Flow_Aop_Proxy_invokeJoinPoint(Neos\Flow\Aop\JoinPoint)
63 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
62 Neos\Flow\Security\Aspect\PolicyEnforcementAspect_Original::enforcePolicy(Neos\Flow\Aop\JoinPoint)
61 Neos\Flow\Aop\Advice\AroundAdvice::invoke(Neos\Flow\Aop\JoinPoint)
60 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
59 Neos\ContentRepository\Domain\Model\Workspace::publishNode(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
58 Neos\ContentRepository\Domain\Model\Workspace_Original::publishNodes(array|1|, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
57 Neos\ContentRepository\Domain\Model\Workspace::publishNodes(array|1|, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
56 Neos\ContentRepository\Domain\Model\Workspace::Flow_Aop_Proxy_invokeJoinPoint(Neos\Flow\Aop\JoinPoint)
55 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
54 Neos\Flow\Security\Aspect\PolicyEnforcementAspect_Original::enforcePolicy(Neos\Flow\Aop\JoinPoint)
53 Neos\Flow\Aop\Advice\AroundAdvice::invoke(Neos\Flow\Aop\JoinPoint)
52 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
51 Neos\ContentRepository\Domain\Model\Workspace::publishNodes(array|1|, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
50 Neos\Neos\Service\PublishingService_Original::publishNode(Neos\ContentRepository\Domain\Model\Node, Neos\Flow\Persistence\Doctrine\Proxies\__CG__\Neos\ContentRepository\Domain\Model\Workspace)
49 Neos\ContentRepository\Domain\Service\PublishingService_Original::publishNodes(array|2|)
48 CodeQ\AdvancedPublish\Domain\Service\PublicationService_Original::CodeQ\AdvancedPublish\Domain\Service\{closure}()
47 Closure::__invoke()
46 Neos\Flow\Security\Context_Original::withoutAuthorizationChecks(Closure)
45 CodeQ\AdvancedPublish\Domain\Service\PublicationService_Original::publishAndClose(CodeQ\AdvancedPublish\Domain\Model\Publication)
44 CodeQ\AdvancedPublish\Controller\PublicationBackendModuleController_Original::createAndApproveAction(Neos\Neos\Domain\Model\User, "", true)
43 CodeQ\AdvancedPublish\Controller\PublicationBackendModuleController::createAndApproveAction(Neos\Neos\Domain\Model\User, "", true)
42 CodeQ\AdvancedPublish\Controller\PublicationBackendModuleController::Flow_Aop_Proxy_invokeJoinPoint(Neos\Flow\Aop\JoinPoint)
41 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
40 Neos\Flow\Security\Aspect\PolicyEnforcementAspect_Original::enforcePolicy(Neos\Flow\Aop\JoinPoint)
39 Neos\Flow\Aop\Advice\AroundAdvice::invoke(Neos\Flow\Aop\JoinPoint)
38 Neos\Flow\Aop\Advice\AdviceChain::proceed(Neos\Flow\Aop\JoinPoint)
37 CodeQ\AdvancedPublish\Controller\PublicationBackendModuleController::createAndApproveAction(Neos\Neos\Domain\Model\User, "", true)
36 Neos\Flow\Mvc\Controller\ActionController_Original::callActionMethod()
35 Neos\Flow\Mvc\Controller\ActionController_Original::processRequest(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse)
34 Neos\Flow\Mvc\Dispatcher_Original::initiateDispatchLoop(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse)
33 Neos\Flow\Mvc\Dispatcher_Original::dispatch(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse)
32 Neos\Flow\Mvc\DispatchMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
31 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
30 Sitegeist\Slipstream\Middleware\SlipstreamMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
29 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
28 Neos\Flow\Http\Middleware\SecurityEntryPointMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
27 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
26 Neos\Flow\Http\Middleware\RequestBodyParsingMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
25 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
24 Neos\Flow\Mvc\FlashMessage\FlashMessageMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
23 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
22 Neos\Flow\Http\Middleware\PoweredByMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
21 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
20 CodeQ\Site\RedirectMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
19 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
18 Neos\RedirectHandler\RedirectMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
17 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
16 Neos\Flow\Mvc\Routing\RoutingMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
15 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
14 Neos\Neos\Routing\RequestUriHostMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
13 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
12 Neos\FluidAdaptor\Core\Widget\AjaxWidgetMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
11 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
10 Neos\Flow\Http\Middleware\SessionMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
9 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
8 Neos\Flow\Http\Middleware\MethodOverrideMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
7 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
6 Neos\Flow\Http\Middleware\TrustedProxiesMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
5 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
4 Neos\Flow\Http\Middleware\StandardsComplianceMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
3 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
2 Neos\Flow\Http\RequestHandler::handleRequest()
1 Neos\Flow\Core\Bootstrap::run()

HTTP REQUEST:
target: /neos/advancedpublish/createandapprove
Cookie: Neos_Session=7Goi1L372B4ZD0OfYwAGJP7lNcMwcVvg
Accept-Language: de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Accept-Encoding: gzip, deflate, br
Referer: https://www.acme.de/neos/advancedpublish/new?inEmbedMode=true
Sec-Fetch-Dest: iframe
Sec-Fetch-User: ?1
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
Dnt: 1
Origin: https://www.acme.de
Cache-Control: max-age=0
Content-Length: 618
X-Scheme: https
X-Original-Uri: /neos/advancedpublish/createandapprove
X-Forwarded-Scheme: https
X-Forwarded-Proto: https
X-Forwarded-Port: 443
X-Forwarded-Host: www.acme.de
X-Request-Id: 2a062f8d814c657d76458748a50681dc
Host: www.acme.de

PHP PROCESS:
Inode: 693750
PID: 74917
UID: 1000
GID: 1000
User: beach