fix(payment): handle silent PDO errors - #753
Ibochkarev wants to merge 4 commits into
Conversation
|
Спасибо. Проверил на dev сам сценарий из #752 — вызовы хранилища на
Первые две строки закрыты. Возвращаю из-за последних двух.
|
Co-authored-by: Bochkarev Ivan <ivanx86@gmail.com>
Co-authored-by: Bochkarev Ivan <ivanx86@gmail.com>
Co-authored-by: Bochkarev Ivan <ivanx86@gmail.com>
Co-authored-by: Bochkarev Ivan <ivanx86@gmail.com>
58c69b0 to
0469d64
Compare
Описание
PdoPaymentAttemptStoreтеперь проверяет результатPDOStatement::execute()и не проглатывает SQL-ошибки при подключении MODX сPDO::ERRMODE_SILENT.update()и параметризованные чтения выбрасывают исключение сerrorInfo();create()отличает ошибку уникальности и возвращает существующую попытку;LOCK IN SHARE MODE: оно видит конкурентно закоммиченную запись внутри старогоREPEATABLE READsnapshot и не повышает shared-lock до exclusive;ERRMODE_SILENT, включая snapshot и совместимость блокировок на нескольких PDO-соединениях.Тип изменений
Связанные Issues
Closes #752
Как это было протестировано?
MS3_TEST_MYSQL_DSN='mysql:host=127.0.0.1;port=3306;dbname=ms3_test;charset=utf8mb4' \ MS3_TEST_MYSQL_USER=ms3 MS3_TEST_MYSQL_PASSWORD=ms3 \ composer ci:php ./vendor/bin/phpstan analyse -c ../../../phpstan.neon --memory-limit=1G \ src/Services/Payment/PdoPaymentAttemptStore.php \ tests/support/MysqlTestConnection.php \ tests/Integration/Mysql/PdoPaymentAttemptStoreMysqlTest.phpРезультат после rebase: 113 smoke-тестов и 644 PHPUnit-теста (2426 assertions) прошли; PHPStan — без ошибок. В общем наборе остаётся 1 существующая deprecation.
composer ci:php/composer test,npm run lint:ci,composer stan/ GitHub Actions CI)Конфигурация тестирования:
ac8e267e)Скриншоты (если применимо)
Не применимо.
Чеклист
composer stan/ CI jobPHPStan)npm run lint:ciдля Vue) — Vue не изменялся