shlinkio / shlink

The definitive self-hosted URL shortener
https://shlink.io
MIT License
3.23k stars 259 forks source link

Doctrine\ORM\ORMException: The EntityManager is closed #423

Closed ahmadalli closed 5 years ago

ahmadalli commented 5 years ago

Hi :)

my shlink instance (hosted on docker on a kubernetes cluster) becomes unstable after a while and returns 500 for all of the requests (except for 404s on / route) with this error on stdout:

Doctrine\ORM\ORMException: The EntityManager is closed. in /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:144
Stack trace:
#0 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(756): Doctrine\ORM\ORMException::entityManagerClosed()
#1 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(589): Doctrine\ORM\EntityManager->errorIfClosed()
#2 /etc/shlink/module/Core/src/Service/VisitsTracker.php(42): Doctrine\ORM\EntityManager->persist(Object(Shlinkio\Shlink\Core\Entity\Visit))
#3 /etc/shlink/module/Core/src/Action/AbstractTrackingAction.php(64): Shlinkio\Shlink\Core\Service\VisitsTracker->track('dl', Object(Shlinkio\Shlink\Core\Model\Visitor))
#4 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Core\Action\AbstractTrackingAction->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#5 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#6 /etc/shlink/vendor/akrabat/ip-address-middleware/src/IpAddress.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#7 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): RKA\Middleware\IpAddress->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#8 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#9 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#10 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Route.php(100): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#11 /etc/shlink/vendor/zendframework/zend-expressive-router/src/RouteResult.php(110): Zend\Expressive\Router\Route->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/DispatchMiddleware.php(35): Zend\Expressive\Router\RouteResult->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#13 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\DispatchMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#15 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#16 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#17 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(42): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#18 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#19 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#20 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/RouteMiddleware.php(54): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\RouteMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#23 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#24 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#25 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(42): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#26 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#27 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#28 /etc/shlink/module/Common/src/Middleware/CloseDbConnectionMiddleware.php(28): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Common\Middleware\CloseDbConnectionMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#31 /etc/shlink/vendor/zendframework/zend-expressive-helpers/src/ContentLengthMiddleware.php(31): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#32 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\ContentLengthMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#33 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#34 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/ErrorHandler.php(143): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#35 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\ErrorHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#36 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#37 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#38 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#39 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#40 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#41 /etc/shlink/vendor/zendframework/zend-expressive-swoole/src/SwooleRequestHandlerRunner.php(244): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#42 {main}
ahmadalli commented 5 years ago

I found out that this happens after I get a request with log parameters, e.g. /sP57?utm_medium=native&utm_term=yn_item_00000&utm_campaign=adv_0000_0000000&utm_content=hmm.ok&utm_source=xxxxxxxxxxx&utm_yn=v2-OTM2ODk6MjQ0MzM6OTA3Mzo4Mg

then I get the error

Shlink.ERROR - Error occurred while dispatching request:
PDOException: SQLSTATE[22001]: String data, right truncated: 7 ERROR: value too long for type character varying(256) in /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:117
Stack trace:
#0 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(117): PDOStatement->execute(NULL)
#1 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(153): Doctrine\DBAL\Driver\PDOStatement->execute(NULL)
#2 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(285): Doctrine\DBAL\Statement->execute()
#3 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1073): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
#4 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(386): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata))
#5 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(359): Doctrine\ORM\UnitOfWork->commit(Object(Shlinkio\Shlink\Core\Entity\Visit))
#6 /etc/shlink/module/Core/src/Service/VisitsTracker.php(43): Doctrine\ORM\EntityManager->flush(Object(Shlinkio\Shlink\Core\Entity\Visit))
#7 /etc/shlink/module/Core/src/Action/AbstractTrackingAction.php(64): Shlinkio\Shlink\Core\Service\VisitsTracker->track('3pit', Object(Shlinkio\Shlink\Core\Model\Visitor))
#8 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Core\Action\AbstractTrackingAction->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#9 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#10 /etc/shlink/vendor/akrabat/ip-address-middleware/src/IpAddress.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#11 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): RKA\Middleware\IpAddress->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#13 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#14 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Route.php(100): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#15 /etc/shlink/vendor/zendframework/zend-expressive-router/src/RouteResult.php(110): Zend\Expressive\Router\Route->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/DispatchMiddleware.php(35): Zend\Expressive\Router\RouteResult->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#17 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\DispatchMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#19 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#20 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#21 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#22 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#23 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#24 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/RouteMiddleware.php(54): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\RouteMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#27 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#28 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#29 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#30 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#31 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#32 /etc/shlink/module/Common/src/Middleware/CloseDbConnectionMiddleware.php(28): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#33 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Common\Middleware\CloseDbConnectionMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#34 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#35 /etc/shlink/vendor/zendframework/zend-expressive-helpers/src/ContentLengthMiddleware.php(31): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#36 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\ContentLengthMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#37 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#38 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/ErrorHandler.php(143): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#39 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\ErrorHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#40 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#41 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#42 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#43 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#44 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#45 /etc/shlink/vendor/zendframework/zend-expressive-swoole/src/SwooleRequestHandlerRunner.php(244): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#46 {main}
Next Doctrine\DBAL\Driver\PDOException: SQLSTATE[22001]: String data, right truncated: 7 ERROR: value too long for type character varying(256) in /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:119
Stack trace:
#0 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(153): Doctrine\DBAL\Driver\PDOStatement->execute(NULL)
#1 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(285): Doctrine\DBAL\Statement->execute()
#2 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1073): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
#3 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(386): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata))
#4 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(359): Doctrine\ORM\UnitOfWork->commit(Object(Shlinkio\Shlink\Core\Entity\Visit))
#5 /etc/shlink/module/Core/src/Service/VisitsTracker.php(43): Doctrine\ORM\EntityManager->flush(Object(Shlinkio\Shlink\Core\Entity\Visit))
#6 /etc/shlink/module/Core/src/Action/AbstractTrackingAction.php(64): Shlinkio\Shlink\Core\Service\VisitsTracker->track('3pit', Object(Shlinkio\Shlink\Core\Model\Visitor))
#7 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Core\Action\AbstractTrackingAction->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#8 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#9 /etc/shlink/vendor/akrabat/ip-address-middleware/src/IpAddress.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#10 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): RKA\Middleware\IpAddress->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#11 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#13 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Route.php(100): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /etc/shlink/vendor/zendframework/zend-expressive-router/src/RouteResult.php(110): Zend\Expressive\Router\Route->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#15 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/DispatchMiddleware.php(35): Zend\Expressive\Router\RouteResult->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\DispatchMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#17 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#19 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/RouteMiddleware.php(54): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#24 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\RouteMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#25 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#27 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /etc/shlink/module/Common/src/Middleware/CloseDbConnectionMiddleware.php(28): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#32 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Common\Middleware\CloseDbConnectionMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#33 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#34 /etc/shlink/vendor/zendframework/zend-expressive-helpers/src/ContentLengthMiddleware.php(31): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#35 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\ContentLengthMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#36 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#37 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/ErrorHandler.php(143): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#38 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\ErrorHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#39 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#40 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#41 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#42 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#43 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#44 /etc/shlink/vendor/zendframework/zend-expressive-swoole/src/SwooleRequestHandlerRunner.php(244): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#45 {main}
Next Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'INSERT INTO visits (referer, "date", remote_addr, user_agent, short_url_id, visit_location_id) VALUES (?, ?, ?, ?, ?, ?)' with params ["https:\/\/fararu.com\/fa\/news\/407486\/%D8%A8%D8%A7%D9%84%D8%A3%D8%AE%D8%B1%D9%87-%DB%8C%DA%A9-%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A7%D9%BE%D9%84-%D9%81%D8%B1%D8%A7%D9%87%D9%85-%D8%B4%D8%AF", "2019-07-31 07:37:15", "198.20.116.0", "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/75.0.3770.142 Safari\/537.36", "45", null]:
SQLSTATE[22001]: String data, right truncated: 7 ERROR: value too long for type character varying(256) in /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php:79
Stack trace:
#0 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(169): Doctrine\DBAL\Driver\AbstractPostgreSQLDriver->convertException('An exception oc...', Object(Doctrine\DBAL\Driver\PDOException))
#1 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(145): Doctrine\DBAL\DBALException::wrapException(Object(Doctrine\DBAL\Driver\PDOPgSql\Driver), Object(Doctrine\DBAL\Driver\PDOException), 'An exception oc...')
#2 /etc/shlink/vendor/doctrine/dbal/lib/Doctrine/DBAL/Statement.php(162): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOPgSql\Driver), Object(Doctrine\DBAL\Driver\PDOException), 'INSERT INTO vis...', Array)
#3 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php(285): Doctrine\DBAL\Statement->execute()
#4 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1073): Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts()
#5 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(386): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata))
#6 /etc/shlink/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(359): Doctrine\ORM\UnitOfWork->commit(Object(Shlinkio\Shlink\Core\Entity\Visit))
#7 /etc/shlink/module/Core/src/Service/VisitsTracker.php(43): Doctrine\ORM\EntityManager->flush(Object(Shlinkio\Shlink\Core\Entity\Visit))
#8 /etc/shlink/module/Core/src/Action/AbstractTrackingAction.php(64): Shlinkio\Shlink\Core\Service\VisitsTracker->track('3pit', Object(Shlinkio\Shlink\Core\Model\Visitor))
#9 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Core\Action\AbstractTrackingAction->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#10 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#11 /etc/shlink/vendor/akrabat/ip-address-middleware/src/IpAddress.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#12 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): RKA\Middleware\IpAddress->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#13 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#15 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Route.php(100): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /etc/shlink/vendor/zendframework/zend-expressive-router/src/RouteResult.php(110): Zend\Expressive\Router\Route->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#17 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/DispatchMiddleware.php(35): Zend\Expressive\Router\RouteResult->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\DispatchMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#19 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#24 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /etc/shlink/vendor/zendframework/zend-expressive-router/src/Middleware/RouteMiddleware.php(54): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#26 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Router\Middleware\RouteMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#27 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/PathMiddlewareDecorator.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\Middleware\PathMiddlewareDecorator->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#32 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(47): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#33 /etc/shlink/module/Common/src/Middleware/CloseDbConnectionMiddleware.php(28): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#34 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Shlinkio\Shlink\Common\Middleware\CloseDbConnectionMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#35 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#36 /etc/shlink/vendor/zendframework/zend-expressive-helpers/src/ContentLengthMiddleware.php(31): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#37 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Expressive\Helper\ContentLengthMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#38 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#39 /etc/shlink/vendor/zendframework/zend-stratigility/src/Middleware/ErrorHandler.php(143): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#40 /etc/shlink/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php(46): Zend\Stratigility\Middleware\ErrorHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#41 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Expressive\Middleware\LazyLoadingMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#42 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#43 /etc/shlink/vendor/zendframework/zend-stratigility/src/Next.php(52): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#44 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#45 /etc/shlink/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#46 /etc/shlink/vendor/zendframework/zend-expressive-swoole/src/SwooleRequestHandlerRunner.php(244): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#47 {main}
ahmadalli commented 5 years ago

it looks like it's like https://github.com/shlinkio/shlink/issues/253. I've changed length of visits.referer to 4096, the issue was resolved. Since the referrer urls I was getting contained url encoded utf8 characters, the length would be more than 256 characters. I set it to 4096 just to be on the safe side

ahmadalli commented 5 years ago

Also I think database errors mustn't make system useless and unrecoverable and it's better to have a solution for it.

Thank you for developing shlink btw. it's a useful product

acelaya commented 5 years ago

Hey @ahmadalli.

Thanks for reporting these two issues. None of them should be super hard to fix, so I'll add them to the roadmap.

acelaya commented 5 years ago

By the way, if you are using kubernetes, maybe you want to use this endpoint as the liveness prove. That way, it will generate new pods if this error happens.

ahmadalli commented 5 years ago

@acelaya great! thanks for the endpoint :)

acelaya commented 5 years ago

Hey @ahmadalli

Yesterday I released shlink 1.18, which includes a mitigation to the issue making shlink unusable after an error when using swoole.

I will address the field length issue next.

acelaya commented 5 years ago

@ahmadalli I have just released shlink 1.18.1, which includes a fix for this bug.

The size of the field has been increased from 256 to 1024, but also some logic has been put in place to crop the value before trying to persist it, in order to avoid a failure in the database.