diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index 72543d23d88..af096c21ee0 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-18.04 ] - php: [ 7.4 ] + php: [ '7.4', '8.0', '8.1' ] db: [ pgsql, mysql ] method: - test_install_enable_disable_remove_store @@ -35,9 +35,11 @@ jobs: - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db database_server_version: 14 + database_charset: utf8 - db: mysql database_url: mysql://root:password@127.0.0.1:3306/eccube_db database_server_version: 5 + database_charset: utf8mb4 services: mysql: @@ -90,6 +92,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} run: | echo "APP_ENV=${APP_ENV}" > .env bin/console doctrine:database:create --env=dev @@ -124,6 +127,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' run: php -S 127.0.0.1:8000 codeception/router.php & @@ -139,6 +143,7 @@ jobs: APP_ENV: ${{ matrix.app_env }} DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' @@ -164,7 +169,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-18.04 ] - php: [ 7.4 ] + php: [ '7.4', '8.0', '8.1' ] db: [ pgsql, mysql ] method: - test_install_update_remove_store @@ -177,9 +182,11 @@ jobs: - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db database_server_version: 14 + database_charset: utf8 - db: mysql database_url: mysql://root:password@127.0.0.1:3306/eccube_db database_server_version: 5 + database_charset: utf8mb4 services: mysql: @@ -232,6 +239,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} run: | echo "APP_ENV=${APP_ENV}" > .env bin/console doctrine:database:create --env=dev @@ -266,6 +274,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' run: php -S 127.0.0.1:8000 codeception/router.php & @@ -281,6 +290,7 @@ jobs: APP_ENV: ${{ matrix.app_env }} DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' @@ -306,7 +316,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-18.04 ] - php: [ 7.4 ] + php: [ '7.4', '8.0', '8.1' ] db: [ pgsql, mysql ] method: - test_extend_same_table_store @@ -319,9 +329,11 @@ jobs: - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db database_server_version: 14 + database_charset: utf8 - db: mysql database_url: mysql://root:password@127.0.0.1:3306/eccube_db database_server_version: 5 + database_charset: utf8mb4 services: mysql: @@ -374,6 +386,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} run: | echo "APP_ENV=${APP_ENV}" > .env bin/console doctrine:database:create --env=dev @@ -408,6 +421,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' run: php -S 127.0.0.1:8000 codeception/router.php & @@ -423,6 +437,7 @@ jobs: APP_ENV: ${{ matrix.app_env }} DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' @@ -448,7 +463,7 @@ jobs: fail-fast: false matrix: operating-system: [ ubuntu-18.04 ] - php: [ 7.4 ] + php: [ '7.4', '8.0', '8.1' ] db: [ pgsql, mysql ] method: - test_dependency_each_install_plugin @@ -461,9 +476,11 @@ jobs: - db: pgsql database_url: postgres://postgres:password@127.0.0.1:5432/eccube_db database_server_version: 14 + database_charset: utf8 - db: mysql database_url: mysql://root:password@127.0.0.1:3306/eccube_db database_server_version: 5 + database_charset: utf8mb4 exclude: - db: mysql method: test_dependency_plugin_update @@ -519,6 +536,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} run: | echo "APP_ENV=${APP_ENV}" > .env bin/console doctrine:database:create --env=dev @@ -553,6 +571,7 @@ jobs: APP_ENV: 'codeception' DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' run: php -S 127.0.0.1:8000 codeception/router.php & @@ -568,6 +587,7 @@ jobs: APP_ENV: ${{ matrix.app_env }} DATABASE_URL: ${{ matrix.database_url }} DATABASE_SERVER_VERSION: ${{ matrix.database_server_version }} + DATABASE_CHARSET: ${{ matrix.database_charset }} MAILER_URL: 'smtp://127.0.0.1:1025' METHOD: ${{ matrix.method }} ECCUBE_PACKAGE_API_URL: 'http://127.0.0.1:8080' diff --git a/src/Eccube/EventListener/TransactionListener.php b/src/Eccube/EventListener/TransactionListener.php index 4e0b4dcac6c..d75b4ac9a5c 100644 --- a/src/Eccube/EventListener/TransactionListener.php +++ b/src/Eccube/EventListener/TransactionListener.php @@ -103,8 +103,10 @@ public function onKernelException(ExceptionEvent $event) return; } - if ($this->em->getConnection()->isTransactionActive()) { - $this->em->rollback(); + if ($this->em->getConnection()->getNativeConnection()->inTransaction()) { + if ($this->em->getConnection()->isRollbackOnly()) { + $this->em->rollback(); + } log_debug('Rollback executed.'); } else { log_debug('Transaction is not active. Rollback skipped.'); @@ -123,7 +125,7 @@ public function onKernelTerminate(TerminateEvent $event) return; } - if ($this->em->getConnection()->isTransactionActive()) { + if ($this->em->getConnection()->getNativeConnection()->inTransaction()) { if ($this->em->getConnection()->isRollbackOnly()) { $this->em->rollback(); log_debug('Rollback executed.'); diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index f44d90de33f..fe3757a4344 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -779,9 +779,15 @@ public function updatePlugin(Plugin $plugin, $meta) } $this->copyAssets($plugin->getCode()); $em->flush(); - $em->getConnection()->commit(); + if ($em->getConnection()->getNativeConnection()->inTransaction()) { + $em->getConnection()->commit(); + } } catch (\Exception $e) { - $em->getConnection()->rollback(); + if ($em->getConnection()->getNativeConnection()->inTransaction()) { + if ($em->getConnection()->isRollbackOnly()) { + $em->getConnection()->rollback(); + } + } throw $e; } }