Skip to content

Commit

Permalink
Merge pull request #5443 from kurozumi/fix-no-active-transaction
Browse files Browse the repository at this point in the history
PHP8とMySQLでプラグインアップデートコマンドを実行すると no active transaction になるのを修正
  • Loading branch information
chihiro-adachi authored Jul 22, 2022
2 parents 1575c8b + 917d164 commit 92aa48c
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 9 deletions.
28 changes: 24 additions & 4 deletions .github/workflows/plugin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -35,9 +35,11 @@ jobs:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
database_server_version: 14
database_charset: utf8
- db: mysql
database_url: mysql://root:[email protected]:3306/eccube_db
database_server_version: 5
database_charset: utf8mb4

services:
mysql:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 &
Expand All @@ -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'
Expand All @@ -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
Expand All @@ -177,9 +182,11 @@ jobs:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
database_server_version: 14
database_charset: utf8
- db: mysql
database_url: mysql://root:[email protected]:3306/eccube_db
database_server_version: 5
database_charset: utf8mb4

services:
mysql:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 &
Expand All @@ -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'
Expand All @@ -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
Expand All @@ -319,9 +329,11 @@ jobs:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
database_server_version: 14
database_charset: utf8
- db: mysql
database_url: mysql://root:[email protected]:3306/eccube_db
database_server_version: 5
database_charset: utf8mb4

services:
mysql:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 &
Expand All @@ -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'
Expand All @@ -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
Expand All @@ -461,9 +476,11 @@ jobs:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
database_server_version: 14
database_charset: utf8
- db: mysql
database_url: mysql://root:[email protected]:3306/eccube_db
database_server_version: 5
database_charset: utf8mb4
exclude:
- db: mysql
method: test_dependency_plugin_update
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 &
Expand All @@ -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'
Expand Down
8 changes: 5 additions & 3 deletions src/Eccube/EventListener/TransactionListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.');
Expand All @@ -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.');
Expand Down
10 changes: 8 additions & 2 deletions src/Eccube/Service/PluginService.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand Down

0 comments on commit 92aa48c

Please sign in to comment.