PDO ATTR_TIMEOUT does not control connection timeout for the pgsql driver.
Without connect_timeout in the DSN, the PDO constructor blocks indefinitely
if PostgreSQL isn't ready, which blocks the Swoole master process event loop
(since coroutine hooks are not enabled in http.php) and prevents all HTTP
request dispatching.
Also add appwrite server logs to CI failure output for debugging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Docker Compose doesn't support variable interpolation in depends_on map
keys (expanded form with condition). Use simple list form like all other
services.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Four services (worker-screenshots, worker-executions, task-maintenance,
task-interval) had hardcoded `depends_on: mariadb` instead of using
`${_APP_DB_HOST:-mongodb}` like all other services. This caused ALL
PostgreSQL E2E tests to fail because those services couldn't start.
Also fix Storage test assertion that incorrectly used
getSupportForRelationships() as proxy for max UID length - the UID
validator always limits to 36 chars regardless of adapter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The WhiteList validator was used at lines 486 and 1090 but never imported,
causing a "Class not found" error and 500 response instead of proper validation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The console variables endpoint was using model defaults (all true) for
supportForRelationships, supportForOperators, supportForSpatials, and
maxIndexLength instead of reading from the actual database adapter.
This caused tests to run unsupported operations on MongoDB.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MongoDB adapter returns 0 from getLimitForAttributes() meaning unlimited,
but Query::limit(0) fails validation since minimum valid limit is 1.
Fall back to APP_LIMIT_SUBQUERY (1000) when adapter reports unlimited.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The .env defaults were changed to mongodb, but tests that don't
explicitly set a DB adapter (general, shared mode, abuse, screenshots)
were implicitly using the default. These tests need MariaDB since
shared tables mode is not supported with MongoDB yet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The TablesDB Columns XList::action() method was missing the
Authorization $authorization parameter that exists in the parent
Attributes XList class, causing a PHP fatal error that prevented
the appwrite service from starting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Under heavy parallel CI load, VCS deployments take longer to build
and activate. Increased from 200s to 300s.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Under parallel CI load with MariaDB, attribute processing frequently
exceeds the previous 5-minute default timeout. Increased all polling
defaults (waitForAttribute, waitForAttributes, waitForAttributeCount,
waitForAllAttributes, waitForIndex, waitForAllIndexes) to 10 minutes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The 'integers' attribute was getting stuck in 'processing' status under
MariaDB parallel CI load, exceeding the default 5-minute timeout.
Increased to 10 minutes, matching the spatial test timeout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix testListProjectKey: use dynamic key counts instead of hardcoded 5
(parallel workers don't share state from testCreateProjectKey)
- Fix testGetProjectKey: expect 'Key Test' from setupProjectWithKey(),
not 'Key Custom' from a previously-dependent test
- Handle 404 in Executor::deleteRuntime() (runtime already gone)
- Make cancel deployment cleanup best-effort (status already updated)
- Apply same fix to Sites cancel endpoint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove `return $data` from testListProjectKey() which is declared void,
causing fatal PHP error that crashed Projects and Abuse test suites
- Increase waitForAllAttributes timeout to 10min for spatial column test
to handle MariaDB slowness under parallel CI load
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>