diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..d5bcaf3c7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,18 @@ +name: CI + +on: + push: + pull_request: + workflow_dispatch: + # Every Tuesday at 2:20pm UTC + schedule: + - cron: '20 14 * * 2' + +jobs: + ci: + uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1 + with: + # Turn phpcoverage off because it causes a segfault + phpcoverage_force_off: true + # There is a strange behat.yml file in framework that runs behat tests in the admin module + endtoend: false diff --git a/.github/workflows/keepalive.yml b/.github/workflows/keepalive.yml new file mode 100644 index 000000000..ff47ec0dc --- /dev/null +++ b/.github/workflows/keepalive.yml @@ -0,0 +1,15 @@ +name: Keepalive + +on: + # The 4th of every month at 10:50am UTC + schedule: + - cron: '50 10 4 * *' + workflow_dispatch: + +jobs: + keepalive: + name: Keepalive + runs-on: ubuntu-latest + steps: + - name: Keepalive + uses: silverstripe/gha-keepalive@v1 diff --git a/README.md b/README.md index 6414f3310..ea474ce83 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## Silverstripe Framework -[![Build Status](https://api.travis-ci.com/silverstripe/silverstripe-framework.svg?branch=4)](https://travis-ci.com/silverstripe/silverstripe-framework) +[![CI](https://github.com/silverstripe/silverstripe-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/silverstripe/silverstripe-framework/actions/workflows/ci.yml) [![Build Docs](https://github.com/silverstripe/silverstripe-framework/workflows/Build%20Docs/badge.svg)](https://docs.silverstripe.org/) [![Latest Stable Version](https://poser.pugx.org/silverstripe/framework/version.svg)](https://www.silverstripe.org/stable-download/) [![Latest Unstable Version](https://poser.pugx.org/silverstripe/framework/v/unstable.svg)](https://packagist.org/packages/silverstripe/framework) diff --git a/composer.json b/composer.json index d04e46b48..347cf9a71 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ "psr/container": "^1", "silverstripe/config": "^1@dev", "silverstripe/assets": "^1@dev", - "silverstripe/vendor-plugin": "^1.4", + "silverstripe/vendor-plugin": "^1.6", "sminnee/callbacklist": "^0.1", "swiftmailer/swiftmailer": "^6.2", "symfony/cache": "^3.4 || ^4.0", diff --git a/src/ORM/Connect/PDOConnector.php b/src/ORM/Connect/PDOConnector.php index 4a5c81f01..37eed7444 100644 --- a/src/ORM/Connect/PDOConnector.php +++ b/src/ORM/Connect/PDOConnector.php @@ -7,6 +7,7 @@ use SilverStripe\Dev\Deprecation; use PDO; use PDOStatement; use InvalidArgumentException; +use PDOException; /** * PDO driver database connector @@ -558,7 +559,15 @@ class PDOConnector extends DBConnector implements TransactionManager } $this->inTransaction = false; - return $this->pdoConnection->rollBack(); + try { + return $this->pdoConnection->rollBack(); + } catch (PDOException $e) { + // A PDOException will be thrown if there is no active transaction in PHP 8+ + // Prior to PHP 8, this failed silently, so returning false here is backwards compatible + // Note: $this->inTransaction may not match the 'in-transaction' state in PDO + // https://www.php.net/manual/en/pdo.rollback.php + return false; + } } public function transactionDepth()