Skip to content

Fail imi-swoole-pgsql-raw with PHP 8.3 in Techempower benchmark #661

Closed
@joanhey

Description

@joanhey

image

VERIFYING QUERY COUNT FOR http://tfb-server:8080/pgUpdateRaw?queries=20
--------------------------------------------------------------------------------
imi-swoole-pgsql-raw: [2023-11-29 18:19:31] imi.ERROR: PDOException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR:  deadlock detected
imi-swoole-pgsql-raw: DETAIL:  Process 369 waits for ShareLock on transaction 1128; blocked by process 491.
imi-swoole-pgsql-raw: Process 491 waits for ShareLock on transaction 1132; blocked by process 403.
imi-swoole-pgsql-raw: Process 403 waits for ShareLock on transaction 999; blocked by process 259.
imi-swoole-pgsql-raw: Process 259 waits for ExclusiveLock on tuple (13,50) of relation 16416 of database 16384; blocked by process 418.
imi-swoole-pgsql-raw: Process 418 waits for ShareLock on transaction 1112; blocked by process 309.
imi-swoole-pgsql-raw: Process 309 waits for ShareLock on transaction 1134; blocked by process 347.
imi-swoole-pgsql-raw: Process 347 waits for ShareLock on transaction 1049; blocked by process 369.
imi-swoole-pgsql-raw: HINT:  See server log for query details.
imi-swoole-pgsql-raw: CONTEXT:  while updating tuple (23,199) in relation "world" in /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php:146
imi-swoole-pgsql-raw: Stack trace:
imi-swoole-pgsql-raw: #0 /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php(146): PDOStatement->execute()
imi-swoole-pgsql-raw: #1 /imi/ApiServer/Controller/PgController.php(194): Imi\Pgsql\Db\Drivers\PdoPgsql\Statement->execute(Array)
imi-swoole-pgsql-raw: #2 /imi/vendor/imiphp/imi/src/Util/DelayServerBeanCallable.php(86): ImiApp\ApiServer\Controller\PgController->pgUpdateRaw(20)
imi-swoole-pgsql-raw: #3 /imi/vendor/imiphp/imi/src/Server/Http/Middleware/ActionMiddleware.php(79): Imi\Util\DelayServerBeanCallable->__invoke('20')
imi-swoole-pgsql-raw: #4 /imi/vendor/imiphp/imi/src/Server/Http/Dispatcher.php(68): Imi\Server\Http\Middleware\ActionMiddleware->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest), Object(Imi\Swoole\Http\Message\SwooleResponse))
imi-swoole-pgsql-raw: #5 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Listener/BeforeRequest.php(49): Imi\Server\Http\Dispatcher->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest))
imi-swoole-pgsql-raw: #6 /imi/vendor/imiphp/imi/src/Event/TEvent.php(202): Imi\Swoole\Server\Http\Listener\BeforeRequest->handle(Object(Imi\Swoole\Server\Event\Param\RequestEventParam))
imi-swoole-pgsql-raw: #7 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Server.php(125): Imi\Server\Contract\BaseServer->trigger('request', Array, Object(Server__Bean__29), 'Imi\\Swoole\\Serv...')
imi-swoole-pgsql-raw: #8 [internal function]: Imi\Swoole\Server\Http\Server->Imi\Swoole\Server\Http\{closure}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
imi-swoole-pgsql-raw: #9 {main}  
imi-swoole-pgsql-raw: [2023-11-29 18:19:31] imi.ERROR: PDOException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR:  deadlock detected
imi-swoole-pgsql-raw: DETAIL:  Process 423 waits for ShareLock on transaction 1089; blocked by process 125.
imi-swoole-pgsql-raw: Process 125 waits for ShareLock on transaction 1190; blocked by process 117.
imi-swoole-pgsql-raw: Process 117 waits for ShareLock on transaction 1106; blocked by process 297.
imi-swoole-pgsql-raw: Process 297 waits for ShareLock on transaction 1145; blocked by process 353.
imi-swoole-pgsql-raw: Process 353 waits for ShareLock on transaction 1129; blocked by process 423.
imi-swoole-pgsql-raw: HINT:  See server log for query details.
imi-swoole-pgsql-raw: CONTEXT:  while updating tuple (82,125) in relation "world" in /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php:146
imi-swoole-pgsql-raw: Stack trace:
imi-swoole-pgsql-raw: #0 /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php(146): PDOStatement->execute()
imi-swoole-pgsql-raw: #1 /imi/ApiServer/Controller/PgController.php(194): Imi\Pgsql\Db\Drivers\PdoPgsql\Statement->execute(Array)
imi-swoole-pgsql-raw: #2 /imi/vendor/imiphp/imi/src/Util/DelayServerBeanCallable.php(86): ImiApp\ApiServer\Controller\PgController->pgUpdateRaw(20)
imi-swoole-pgsql-raw: #3 /imi/vendor/imiphp/imi/src/Server/Http/Middleware/ActionMiddleware.php(79): Imi\Util\DelayServerBeanCallable->__invoke('20')
imi-swoole-pgsql-raw: #4 /imi/vendor/imiphp/imi/src/Server/Http/Dispatcher.php(68): Imi\Server\Http\Middleware\ActionMiddleware->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest), Object(Imi\Swoole\Http\Message\SwooleResponse))
imi-swoole-pgsql-raw: #5 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Listener/BeforeRequest.php(49): Imi\Server\Http\Dispatcher->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest))
imi-swoole-pgsql-raw: #6 /imi/vendor/imiphp/imi/src/Event/TEvent.php(202): Imi\Swoole\Server\Http\Listener\BeforeRequest->handle(Object(Imi\Swoole\Server\Event\Param\RequestEventParam))
imi-swoole-pgsql-raw: #7 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Server.php(125): Imi\Server\Contract\BaseServer->trigger('request', Array, Object(Server__Bean__29), 'Imi\\Swoole\\Serv...')
imi-swoole-pgsql-raw: #8 [internal function]: Imi\Swoole\Server\Http\Server->Imi\Swoole\Server\Http\{closure}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
imi-swoole-pgsql-raw: #9 {main}  
imi-swoole-pgsql-raw: [2023-11-29 18:19:32] imi.ERROR: PDOException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR:  deadlock detected
imi-swoole-pgsql-raw: DETAIL:  Process 403 waits for ShareLock on transaction 999; blocked by process 259.
imi-swoole-pgsql-raw: Process 259 waits for ShareLock on transaction 1031; blocked by process 418.
imi-swoole-pgsql-raw: Process 418 waits for ShareLock on transaction 1179; blocked by process 122.
imi-swoole-pgsql-raw: Process 122 waits for ShareLock on transaction 1128; blocked by process 491.
imi-swoole-pgsql-raw: Process 491 waits for ShareLock on transaction 1132; blocked by process 403.
imi-swoole-pgsql-raw: HINT:  See server log for query details.
imi-swoole-pgsql-raw: CONTEXT:  while updating tuple (77,90) in relation "world" in /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php:146
imi-swoole-pgsql-raw: Stack trace:
imi-swoole-pgsql-raw: #0 /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php(146): PDOStatement->execute()
imi-swoole-pgsql-raw: #1 /imi/ApiServer/Controller/PgController.php(194): Imi\Pgsql\Db\Drivers\PdoPgsql\Statement->execute(Array)
imi-swoole-pgsql-raw: #2 /imi/vendor/imiphp/imi/src/Util/DelayServerBeanCallable.php(86): ImiApp\ApiServer\Controller\PgController->pgUpdateRaw(20)
imi-swoole-pgsql-raw: #3 /imi/vendor/imiphp/imi/src/Server/Http/Middleware/ActionMiddleware.php(79): Imi\Util\DelayServerBeanCallable->__invoke('20')
imi-swoole-pgsql-raw: #4 /imi/vendor/imiphp/imi/src/Server/Http/Dispatcher.php(68): Imi\Server\Http\Middleware\ActionMiddleware->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest), Object(Imi\Swoole\Http\Message\SwooleResponse))
imi-swoole-pgsql-raw: #5 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Listener/BeforeRequest.php(49): Imi\Server\Http\Dispatcher->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest))
imi-swoole-pgsql-raw: #6 /imi/vendor/imiphp/imi/src/Event/TEvent.php(202): Imi\Swoole\Server\Http\Listener\BeforeRequest->handle(Object(Imi\Swoole\Server\Event\Param\RequestEventParam))
imi-swoole-pgsql-raw: #7 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Server.php(125): Imi\Server\Contract\BaseServer->trigger('request', Array, Object(Server__Bean__29), 'Imi\\Swoole\\Serv...')
imi-swoole-pgsql-raw: #8 [internal function]: Imi\Swoole\Server\Http\Server->Imi\Swoole\Server\Http\{closure}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
imi-swoole-pgsql-raw: #9 {main}  
imi-swoole-pgsql-raw: [2023-11-29 18:19:32] imi.ERROR: PDOException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR:  deadlock detected
imi-swoole-pgsql-raw: DETAIL:  Process 341 waits for ShareLock on transaction 1037; blocked by process 313.
imi-swoole-pgsql-raw: Process 313 waits for ExclusiveLock on tuple (7,70) of relation 16416 of database 16384; blocked by process 370.
imi-swoole-pgsql-raw: Process 370 waits for ShareLock on transaction 1028; blocked by process 440.
imi-swoole-pgsql-raw: Process 440 waits for ShareLock on transaction 1170; blocked by process 106.
imi-swoole-pgsql-raw: Process 106 waits for ShareLock on transaction 1149; blocked by process 110.
imi-swoole-pgsql-raw: Process 110 waits for ShareLock on transaction 1072; blocked by process 260.
imi-swoole-pgsql-raw: Process 260 waits for ShareLock on transaction 1036; blocked by process 371.
imi-swoole-pgsql-raw: Process 371 waits for ShareLock on transaction 1085; blocked by process 237.
imi-swoole-pgsql-raw: Process 237 waits for ShareLock on transaction 1108; blocked by process 341.
imi-swoole-pgsql-raw: HINT:  See server log for query details.
imi-swoole-pgsql-raw: CONTEXT:  while rechecking updated tuple (127,2) in relation "world" in /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php:146
imi-swoole-pgsql-raw: Stack trace:
imi-swoole-pgsql-raw: #0 /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php(146): PDOStatement->execute()
imi-swoole-pgsql-raw: #1 /imi/ApiServer/Controller/PgController.php(194): Imi\Pgsql\Db\Drivers\PdoPgsql\Statement->execute(Array)
imi-swoole-pgsql-raw: #2 /imi/vendor/imiphp/imi/src/Util/DelayServerBeanCallable.php(86): ImiApp\ApiServer\Controller\PgController->pgUpdateRaw(20)
imi-swoole-pgsql-raw: #3 /imi/vendor/imiphp/imi/src/Server/Http/Middleware/ActionMiddleware.php(79): Imi\Util\DelayServerBeanCallable->__invoke('20')
imi-swoole-pgsql-raw: #4 /imi/vendor/imiphp/imi/src/Server/Http/Dispatcher.php(68): Imi\Server\Http\Middleware\ActionMiddleware->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest), Object(Imi\Swoole\Http\Message\SwooleResponse))
imi-swoole-pgsql-raw: #5 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Listener/BeforeRequest.php(49): Imi\Server\Http\Dispatcher->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest))
imi-swoole-pgsql-raw: #6 /imi/vendor/imiphp/imi/src/Event/TEvent.php(202): Imi\Swoole\Server\Http\Listener\BeforeRequest->handle(Object(Imi\Swoole\Server\Event\Param\RequestEventParam))
imi-swoole-pgsql-raw: #7 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Server.php(125): Imi\Server\Contract\BaseServer->trigger('request', Array, Object(Server__Bean__29), 'Imi\\Swoole\\Serv...')
imi-swoole-pgsql-raw: #8 [internal function]: Imi\Swoole\Server\Http\Server->Imi\Swoole\Server\Http\{closure}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
imi-swoole-pgsql-raw: #9 {main}  
imi-swoole-pgsql-raw: [2023-11-29 18:19:33] imi.ERROR: PDOException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR:  deadlock detected
imi-swoole-pgsql-raw: DETAIL:  Process 313 waits for ExclusiveLock on tuple (7,70) of relation 16416 of database 16384; blocked by process 370.
imi-swoole-pgsql-raw: Process 370 waits for ShareLock on transaction 1028; blocked by process 440.
imi-swoole-pgsql-raw: Process 440 waits for ShareLock on transaction 1170; blocked by process 106.
imi-swoole-pgsql-raw: Process 106 waits for ShareLock on transaction 1149; blocked by process 110.
imi-swoole-pgsql-raw: Process 110 waits for ShareLock on transaction 1096; blocked by process 244.
imi-swoole-pgsql-raw: Process 244 waits for ShareLock on transaction 1189; blocked by process 236.
imi-swoole-pgsql-raw: Process 236 waits for ShareLock on transaction 1037; blocked by process 313.
imi-swoole-pgsql-raw: HINT:  See server log for query details. in /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php:146
imi-swoole-pgsql-raw: Stack trace:
imi-swoole-pgsql-raw: #0 /imi/vendor/imiphp/imi/src/Db/Drivers/TPdoStatement.php(146): PDOStatement->execute()
imi-swoole-pgsql-raw: #1 /imi/ApiServer/Controller/PgController.php(194): Imi\Pgsql\Db\Drivers\PdoPgsql\Statement->execute(Array)
imi-swoole-pgsql-raw: #2 /imi/vendor/imiphp/imi/src/Util/DelayServerBeanCallable.php(86): ImiApp\ApiServer\Controller\PgController->pgUpdateRaw(20)
imi-swoole-pgsql-raw: #3 /imi/vendor/imiphp/imi/src/Server/Http/Middleware/ActionMiddleware.php(79): Imi\Util\DelayServerBeanCallable->__invoke('20')
imi-swoole-pgsql-raw: #4 /imi/vendor/imiphp/imi/src/Server/Http/Dispatcher.php(68): Imi\Server\Http\Middleware\ActionMiddleware->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest), Object(Imi\Swoole\Http\Message\SwooleResponse))
imi-swoole-pgsql-raw: #5 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Listener/BeforeRequest.php(49): Imi\Server\Http\Dispatcher->dispatch(Object(Imi\Swoole\Http\Message\SwooleRequest))
imi-swoole-pgsql-raw: #6 /imi/vendor/imiphp/imi/src/Event/TEvent.php(202): Imi\Swoole\Server\Http\Listener\BeforeRequest->handle(Object(Imi\Swoole\Server\Event\Param\RequestEventParam))
imi-swoole-pgsql-raw: #7 /imi/vendor/imiphp/imi-swoole/src/Server/Http/Server.php(125): Imi\Server\Contract\BaseServer->trigger('request', Array, Object(Server__Bean__29), 'Imi\\Swoole\\Serv...')
imi-swoole-pgsql-raw: #8 [internal function]: Imi\Swoole\Server\Http\Server->Imi\Swoole\Server\Http\{closure}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
imi-swoole-pgsql-raw: #9 {main}  

  • Please execute the following command to get environment information.

php -v & php --ri swoole & composer info | grep -a imi

# Use dockerfile
FROM php:8.3-cli

ENV SWOOLE_VERSION 5.1.1
ARG TFB_TEST_DATABASE
ENV TFB_TEST_DATABASE=${TFB_TEST_DATABASE}

RUN apt -yqq update && \
    apt upgrade -y && \
    apt -yqq install git unzip libpq-dev

RUN docker-php-ext-install -j$(nproc) pdo_pgsql opcache mysqli

RUN cd /tmp && curl -sSL "https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz" | tar xzf - \
        && cd swoole-src-${SWOOLE_VERSION} \
        && phpize && ./configure --enable-swoole-pgsql && make -j install \
        && docker-php-ext-enable swoole

COPY . /imi
COPY php.ini /usr/local/etc/php/

RUN chmod -R ug+rwx /imi/.runtime

WORKDIR /imi

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN composer install --no-dev --classmap-authoritative --quiet
RUN composer require imiphp/imi-swoole:~2.1.0 -W
RUN composer dumpautoload -o

EXPOSE 8080

CMD ./run-swoole.sh

  • Provide the smallest reproducible code: (Optional)
    Run the techempower test locally
// Your code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions