Fixes two linked production banking-sync issues. ## PHP-LARAVEL-W — `cURL error 28: timed out` in `EnableBankingProvider::getBalances` (8 events, 4 users, High) `getBalances` called `$response->throw()` raw, so a connection timeout (or ASPSP error) escaped as an **unhandled** `ConnectionException`/`RequestException` and crashed the sync. `getTransactions` already wraps these in `TransientBankingProviderException` (which `implements ShouldntReport` and is handled as a transient, retryable error in `SyncBankingConnectionJob`). → `getBalances` now follows the exact same pattern. Genuine validation errors (non-ASPSP 4xx) stay reportable. ## PHP-LARAVEL-2D — `SyncBankingConnectionJob has been attempted too many times` (High, regressed) The hanging balance call above pushed the job past its 120s `timeout`, the worker was killed mid-job, and the retry tripped a `MaxAttemptsExceededException`. That exception is thrown by the queue worker (not catchable in `handle()`), and the job's `failed()` handler **already** records the terminal `Error` state on the connection — so the Sentry report is redundant operational noise. → Fixing W removes the main cause of the timeout. Additionally, `MaxAttemptsExceededException` is no longer reported **for this job only** (scoped via `dontReportWhen` on `$e->job?->resolveName()`); other jobs still report it. ## Tests - `getBalances` wraps connection failures and ASPSP errors as non-reportable transient errors; keeps non-ASPSP client errors reportable. - `MaxAttemptsExceededException` is not reported for `SyncBankingConnectionJob`, but still reported for other jobs. Fixes PHP-LARAVEL-W, PHP-LARAVEL-2D. |
||
|---|---|---|
| .. | ||
| .pest | ||
| Browser | ||
| Feature | ||
| Performance | ||
| Unit | ||
| Pest.php | ||
| TestCase.php | ||
| bootstrap.php | ||