Commit Graph

32142 Commits

Author SHA1 Message Date
eldadfux 79d219bf50 fix cache duplication 2026-02-26 07:50:51 +01:00
eldadfux 9b2143a2a5 Fixed cache duplication 2026-02-26 07:44:35 +01:00
eldadfux b7e4f78c56 fix 2026-02-26 00:00:10 +01:00
eldadfux 159da8ba31 Fix 500 errors where we don't report duplication properly 2026-02-25 23:58:22 +01:00
eldadfux 2b5307715a Merge remote 1.8.x
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	composer.lock
2026-02-24 14:25:56 +01:00
Jake Barnby aa7dfd0bd1 Merge pull request #11312 from appwrite/feat-mongodb 2026-02-24 09:32:22 +00:00
Jake Barnby 8dfc4abfe0 fix: cache DatabasesStringTypesTest setup before waiting
Same cache-before-wait pattern as DatabasesBase to prevent
cascading 409 failures when attribute polling times out.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:47:56 +13:00
Damodar Lohani b3f7256156 Merge pull request #11387 from appwrite/feat-update-project-usage
Fix: add missing sites bandwidth to project usage
2026-02-24 12:51:39 +05:45
Jake Barnby 3b3177722b fix: cache setup data before waiting to prevent 409 on retry
When setupAttributes() or setupIndexes() timed out during
waitForAllAttributes/waitForAllIndexes, the cache was never populated.
Subsequent test methods calling setup again would find empty cache,
reuse the same collection IDs (from collection cache), and attempt to
re-create existing attributes/indexes, resulting in 409 Conflict errors.

Fix: populate the static cache immediately after successful creation
(202 assertions), before the wait calls. This ensures retries skip
creation and go straight to waiting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:06:20 +13:00
Damodar Lohani 2898d57243 Fix: Add missing sites bandwidth in the project usage 2026-02-24 06:26:52 +00:00
Jake Barnby 3306a03e8e chore: add 5-minute retry wait to reduce CI resource contention
With 120+ jobs starting simultaneously, transient failures are common
due to resource contention. Adding retry_wait_seconds: 300 to all
php-retry action usages gives the CI environment time to settle
before retrying failed tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:07:42 +13:00
Jake Barnby e1791e17c3 fix: increase attribute/index polling timeouts to 240s for shared mode CI
Shared tables mode experiences significant worker queue contention during
parallel test execution. 120s was insufficient for attribute processing
in Shared V1 mode and occasionally for PostgreSQL under load.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:50:46 +13:00
Jake Barnby e69c1ddc7f fix: add executor readiness check to Site Screenshots CI jobs
The Site Screenshots CI jobs were missing the "Wait for Open Runtimes"
step that other E2E test jobs have, causing deployments to fail with
"Failed to connect to exc1 port 80" when the executor wasn't ready yet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 17:37:15 +13:00
Jake Barnby 9a97694a19 fix: resolve flaky E2E tests for realtime, avatars, migrations, and GraphQL
- Realtime: Use getLastEmailByAddress with userId probe instead of getLastEmail
  to prevent email race conditions in parallel execution; add status assertions
  on verification/recovery PUT responses for clearer failure diagnostics
- Avatars: Wrap external URL image fetches in assertEventually to retry
  transient network failures from appwrite.io
- Migrations: Increase performMigrationSync timeout from 10s to 60s
- GraphQL: Increase attribute polling timeouts from 60s to 120s with 500ms
  intervals to accommodate PostgreSQL under CI load

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:51:22 +13:00
Jake Barnby 7df86a3838 fix: cast attribute defaults after queue deserialization and improve test robustness
- Fix float/int/bool attribute creation failures caused by type loss
  during queue serialization in the Databases worker
- Rework session limit test to retry session creation for cache
  propagation in shared mode
- Increase GraphQL attribute polling timeouts from 30s to 60s
- Increase SchemaPolling waitForAllAttributes timeout to 180s
- Increase Realtime WebSocket client timeout from 30s to 45s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:02:23 +13:00
Jake Barnby 07dc088e4e fix: improve E2E test probes and enable function webhook events
- Fix testPasswordRecoveryUrlParams: use URL-based probes instead of
  userId-based probes to distinguish between test cases that share the
  same user
- Enable functions.* webhook events in ProjectCustom for function
  webhook tests that were silently passing by matching stale events
- Fix setupTeamMembership: add email address probe to getLastEmail to
  prevent picking up wrong invitation email
- Fix getLastEmail multi-email race: assert count inside assertEventually
  when requesting multiple emails

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:15:59 +13:00
Jake Barnby 5cb36a0a3a fix: resolve E2E test race conditions in parallel execution
- Add probe callback support to getLastEmail(), getLastEmailByAddress(),
  and getLastRequest() to filter results by content before accepting
- Fix variable name typo in TeamsCustomClientTest ($email vs $lastEmail)
- Add event probes to all 56 webhook test getLastRequest() calls to
  filter by specific event pattern (resource ID + action)
- Add email probes to Account OTP/recovery/magic-url tests to wait for
  the correct email (security phrase, Password Reset subject, etc.)
- Add email probes to Projects tests for recovery email URL matching
- Increase FunctionsSchedule future time from 1min to 2min to avoid
  timing issues when seconds are zeroed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 14:43:15 +13:00
Jake Barnby 811a759a8f Update lock 2026-02-24 14:14:14 +13:00
Jake Barnby 1c457c3a80 Merge branch 'feat-mongodb' of github.com:appwrite/appwrite into feat-mongodb 2026-02-24 14:07:14 +13:00
Jake Barnby 1cb7c4b3f6 Merge remote-tracking branch 'origin/1.8.x' into feat-mongodb
# Conflicts:
#	.gitignore
#	composer.lock
#	tests/e2e/Services/Teams/TeamsCustomClientTest.php
2026-02-24 14:06:57 +13:00
Jake Barnby bada1a7c05 Timing updates 2026-02-24 14:00:07 +13:00
Luke B. Silver 850b35d73c Merge pull request #11385 from appwrite/fix/missing-span-import
hotfix/ incorrect span import
2026-02-23 23:35:55 +00:00
loks0n 8a365b781d Fix incorrect Span import in StatsResources worker
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 23:04:52 +00:00
eldadfux fb8a1057af Update composer.lock 2026-02-23 19:47:22 +01:00
eldadfux ae4c02221f Merge remote 1.8.x
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	composer.lock
2026-02-23 19:46:48 +01:00
eldadfux 3b1b7bd611 Update composer.lock and enhance error logging in HTTP requests
- Updated versions for several dependencies in composer.lock, including utopia-php/database (5.3.3), utopia-php/detector (0.2.4), utopia-php/dns (1.6.5), utopia-php/framework (0.33.40), utopia-php/queue (0.15.6), and utopia-php/storage (1.0.1).
- Improved error logging in app/http.php and app/controllers/general.php to handle null routes gracefully, ensuring that the HTTP method and request URI are logged correctly even when the route is not defined.
2026-02-23 19:35:52 +01:00
Matej Bačo f97e893238 Merge pull request #11369 from appwrite/fix-email-url-params-encoding
Fix: url params in redirect URLs
2026-02-23 16:52:44 +01:00
Matej Bačo f8783faf1e Merge branch '1.8.x' into fix-email-url-params-encoding 2026-02-23 16:52:32 +01:00
Matej Bačo f0c8f7e00e Update tests/e2e/Services/Projects/ProjectsConsoleClientTest.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-23 16:49:17 +01:00
Matej Bačo 8946d3b7ee AI review fixes 2026-02-23 16:19:19 +01:00
Jake Barnby e92b80b3cb Merge branch '1.8.x' into feat-mongodb 2026-02-24 02:53:40 +13:00
Chirag Aggarwal 99df4c4d02 Merge pull request #11360 from appwrite/feat/assistant-sdk-release-automation
feat(sdks): automate AI SDK release version and changelog updates
2026-02-23 18:30:58 +05:30
Luke B. Silver 8c48c764a9 Merge pull request #11383 from appwrite/telemetry/better-stats-logging
Remove superfluous logs from StatsResources worker
2026-02-23 12:21:44 +00:00
Chirag Aggarwal f9d6594955 composer 2026-02-23 17:43:11 +05:30
Chirag Aggarwal 40d5a9e43b Merge branch '1.8.x' into feat/assistant-sdk-release-automation 2026-02-23 17:42:52 +05:30
Matej Bačo f4ee6488ac Add tests for custom url schema in redirects 2026-02-23 13:09:26 +01:00
Matej Bačo 5414cc67ab Finalize html encoding rework 2026-02-23 12:54:20 +01:00
Chirag Aggarwal cf9148f0ac Merge pull request #11381 from appwrite/chore/fix-specs-generation
chore: remove examples from repo after migration to specs repo
2026-02-23 17:22:51 +05:30
Matej Bačo 2b6b66d8a4 Remove html encoding for urls 2026-02-23 12:45:18 +01:00
loks0n 44cd5bb7f0 Remove superfluous Console logs from StatsResources worker
Replace redundant Console::info/error/success logs with Span::add
for document count — all other details (project ID, sequence, region,
database, duration) are already captured by the telemetry span.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:36:11 +00:00
Jake Barnby 95c67ea155 fix: resolve merge conflict markers in composer.lock
The merge of 1.8.x into feat-mongodb left unresolved conflict markers
in composer.lock, breaking all CI checks. Resolved in favor of
feat-mongodb values (minimum-stability: dev, prefer-stable: true)
to match composer.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 22:17:55 +13:00
Jake Barnby 0019f01492 Merge branch '1.8.x' into feat-mongodb 2026-02-23 21:21:26 +13:00
Chirag Aggarwal c07a7b0ea4 fix: auto-create specs directory and improve SDK error messages
- Auto-create specs directory in Specs.php if it doesn't exist

- Add helpful error message in SDKs.php when specs are missing

- Remove docs/examples from git tracking (added to .gitignore)
2026-02-23 11:06:21 +05:30
Chirag Aggarwal e2d6b76a88 Merge pull request #11368 from appwrite/feat/assistant-sdk-release-artifacts
chore: split sdk release artifacts from automation
2026-02-23 09:53:03 +05:30
Jake Barnby f2759cb65a fix: remove file caching, disable --functional for Databases/Functions/Realtime
Services that depend on shared static state between test methods
(Databases, Functions, Realtime) now run without --functional flag,
so test methods execute sequentially within each class while classes
still run in parallel. All other services keep --functional mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 03:44:28 +13:00
Jake Barnby 32c84ae869 fix: retry on TCP connection errors in callWithAuthRetry for Functions tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 03:29:31 +13:00
Jake Barnby 48698f40ba fix: add polling and delay for testSSRLogs logging config propagation
After setting logging=false, the site runtime may not immediately pick up
the config change. Add a 5s delay and poll for the NEW log entry (filtering
out the old one by $id) to avoid picking up stale log entries with content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 03:12:44 +13:00
Jake Barnby 8d18a33072 fix: call ensureSharedProject() in all setup methods, not just setupDatabase
When setupAttributes/setupIndexes/etc hit the file cache, they return
immediately without calling setupDatabase(), so ensureSharedProject()
was never called. This left self::$project empty, causing getProject()
to create a new project that didn't match the cached database IDs (404s).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 03:11:50 +13:00
Jake Barnby a0b8437f08 fix: scope file caching to Database tests only, revert for non-Database tests
The previous file caching approach cached getRoot(), getUser(), getProject(),
and getConsoleVariables() globally. This caused all test methods in a class
to share the same project, breaking non-Database tests that expect isolated
state (Account 401s, Storage 500s, Users 404s, etc.).

Now file caching is only applied in Database/Transaction test setup chains:
- ensureSharedProject() in DatabasesBase, TransactionsBase, TransactionPermissionsBase
  creates and file-caches both the project AND user so all methods share
  consistent project + user state (needed for collection permissions)
- Non-Database tests (Account, Storage, Users, etc.) create their own
  isolated projects per-process as before

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 02:46:56 +13:00
Jake Barnby 3ea1e8e59f fix: add file-based cross-process caching for ParaTest --functional mode
With --functional mode, each test method runs in its own process so
static caches are empty. This causes every method to recreate projects,
databases, collections, attributes, and indexes - flooding the serial
database worker queue and causing attribute polling timeouts.

File-based caching with file locks ensures resources are created once
per test class, then shared across all method processes. This restores
--functional mode and dramatically reduces worker queue load.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 01:47:20 +13:00