FIX PDO transaction in PHP 8, add GitHub Actions CI (#10360)

This commit is contained in:
Steve Boyd 2022-06-27 15:30:03 +12:00 committed by GitHub
parent ad581d9673
commit c80e10f892
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 3 deletions

18
.github/workflows/ci.yml vendored Normal file
View File

@ -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

15
.github/workflows/keepalive.yml vendored Normal file
View File

@ -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

View File

@ -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)

View File

@ -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",

View File

@ -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()