Prem Palanisamy
784babcf45
fix: address Greptile review on PR #12062
...
Three P1 issues flagged on the initial commit:
1. Lock key in updateProjectService used "platform:project:{id}" —
missing the "lock:" namespace prefix and using singular "project"
instead of the conventional plural collection name. The factory's
`lockTargetOf` extracts segment [2] as the telemetry target, so
the broken key was emitting the project ID itself as the target
attribute (cardinality blowup, broken dashboards). Fixed to
"lock:platform:projects:{id}" matching the convention used in
shared/api.php.
2. The 409 contention exception embedded the raw Redis lock key in
its user-facing message, leaking internal collection names and
the locking namespace to API clients. Removed the custom message
so the catalog default ("The requested resource is currently
being modified...") is used. Telemetry already carries the
target collection for operator-side observability.
3. _APP_LOCKING_ENABLED variable doc had `introduction: '1.10.0'`
on a 1.9.x-targeted PR. Corrected to '1.9.3' (next 1.9.x patch).
2026-04-27 17:24:50 +01:00
Prem Palanisamy
fb0d43daf3
feat: distributed locking for platform-database writes
...
Adds two DI factories and wires them where coordination is needed:
- distributedLock — skip on contention, void return. For idempotent
fan-out where N pods doing the same write is wasteful but losing
the race is correct.
- distributedLockOrFail — blocking acquire (3s default) then throws
GENERAL_RESOURCE_LOCKED (HTTP 409) on contention. For
read-modify-write on shared mutable state where a silent skip
would drop a user's change.
Both factories: _APP_LOCKING_ENABLED kill switch (set 'disabled' for
fail-open), fail-open on Redis-unreachable, and a lock.attempts
telemetry counter sliced by outcome and target collection.
Wired sites:
- shared/api.php × 3 (distributedLock): keys.accessedAt + sdks,
projects.accessedAt, users.accessedAt. Reduces redundant writes
and cache-purge fan-out under request bursts on the same project.
- Project/Services/Update.php × 1 (distributedLockOrFail): the
services map toggle. Re-reads inside the lock so the baseline
reflects concurrent updates. Two simultaneous toggles to
different services no longer lose one of them.
Lock key namespace: lock:platform:{collection}:{id}.
Dep: premtsd-code/lock pinned to a specific commit as a development
preview. Migration to utopia-php/lock is a follow-up once that
package is published.
2026-04-27 07:54:56 +01:00
loks0n
2807d6cd9a
feat: increase default build timeout to 45 minutes
...
Raises _APP_COMPUTE_BUILD_TIMEOUT default from 900s (15 min) to
2700s (45 min) to support longer-running builds.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 09:57:27 +01:00
Jake Barnby
1dcee3edbf
Fxx variables
2026-02-13 01:40:37 +00:00
Jake Barnby
c8db0c6dcc
Apply suggestions from code review
2026-02-13 14:34:02 +13:00
Jake Barnby
5590f0bcd0
Merge remote-tracking branch 'origin/1.8.x' into feat-mongodb
...
# Conflicts:
# .env
# .github/workflows/tests.yml
# app/controllers/api/projects.php
# app/controllers/api/teams.php
# app/init/registers.php
# app/views/install/compose.phtml
# composer.json
# composer.lock
# docker-compose.yml
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Create.php
# src/Appwrite/Platform/Tasks/Install.php
# src/Appwrite/Platform/Tasks/Upgrade.php
# tests/e2e/Services/Databases/Legacy/DatabasesBase.php
# tests/e2e/Services/Databases/TablesDB/DatabasesBase.php
2026-02-12 23:35:21 +13:00
Jake Barnby
b08e0ad8ac
Update app/config/variables.php
2026-02-11 19:34:38 +13:00
ArnabChatterjee20k
e3aaac7f9f
Merge remote-tracking branch 'origin/1.8.x' into pg-adapter
2026-02-06 11:35:38 +05:30
Jake Barnby
e70739a3c0
Merge remote-tracking branch 'origin/1.8.x' into feat-mongodb
...
# Conflicts:
# Dockerfile
# app/controllers/api/account.php
# app/controllers/api/avatars.php
# app/controllers/api/console.php
# app/controllers/api/projects.php
# app/controllers/api/storage.php
# app/controllers/api/teams.php
# app/http.php
# app/init/database/filters.php
# app/init/registers.php
# app/init/resources.php
# app/views/install/compose.phtml
# composer.json
# composer.lock
# docker-compose.yml
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Integer/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Bulk/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Update.php
# src/Appwrite/Platform/Modules/Functions/Http/Deployments/XList.php
# src/Appwrite/Platform/Tasks/Install.php
# tests/e2e/Services/Projects/ProjectsConsoleClientTest.php
2026-02-05 01:01:03 +13:00
Jake Barnby
5d24b51421
Allow separately enabling graphql introspection
2026-01-19 19:26:17 +13:00
ArnabChatterjee20k
ee35322db6
Merge remote-tracking branch 'upstream/1.8.x' into pg-adapter
2025-12-29 16:56:02 +05:30
Jake Barnby
4fb43c6e69
Fix install flow
2025-12-17 16:14:20 +13:00
Levi van Noort
90fb5b6321
feat: improved reference client ip through _APP_TRUSTED_HEADERS
2025-12-12 08:42:49 +01:00
loks0n
50c6a35079
feat: multiple app domains
2025-12-11 09:01:31 +00:00
Jake Barnby
d8d970e03e
Merge remote-tracking branch 'origin/1.8.x' into feat-mongodb
...
# Conflicts:
# app/controllers/api/account.php
# app/controllers/api/messaging.php
# app/controllers/api/projects.php
# app/controllers/api/storage.php
# app/controllers/api/teams.php
# app/controllers/api/users.php
# composer.lock
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Boolean/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Datetime/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Email/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Enum/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Float/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/IP/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Integer/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Line/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Point/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Polygon/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Create.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/Relationship/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/String/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Attributes/URL/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Decrement.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Attribute/Increment.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Delete.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Bulk/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Create.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Delete.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Get.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/Databases/Collections/Documents/XList.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Boolean/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Datetime/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Email/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Enum/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Float/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/IP/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Integer/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Line/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Point/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Polygon/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Relationship/Create.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/Relationship/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/String/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/URL/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Bulk/Delete.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Bulk/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Bulk/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Column/Decrement.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Column/Increment.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Create.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Delete.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Get.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Update.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Upsert.php
# src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/XList.php
# src/Appwrite/Platform/Modules/Functions/Http/Deployments/Create.php
# src/Appwrite/Platform/Modules/Sites/Http/Deployments/Create.php
# src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Buckets/Files/Create.php
# src/Appwrite/Platform/Modules/Tokens/Http/Tokens/Update.php
2025-11-20 17:46:19 +13:00
eldadfux
61f4c7957a
Add new configuration variable '_APP_BROWSER_HOST' for browser service communication; update avatar screenshot API to use System::getEnv for environment variable retrieval
2025-10-25 10:22:53 +01:00
shimon
40e36e23dd
Merge remote-tracking branch 'origin/1.8.x' into feat-mongodb
2025-08-10 18:16:03 +03:00
Matej Bačo
2d4e99cb1a
Revert revert of CAA validation
2025-08-05 13:44:06 +02:00
Matej Bačo
9c320f9c71
Revert "Check CAA record before issuing certificate"
2025-08-05 10:23:39 +02:00
Matej Bačo
4cafd2e07d
Improve PR quality
2025-08-04 14:28:50 +02:00
Khushboo Verma
484ebb5059
Check CAA record in DNSTest
2025-08-04 00:42:00 +05:30
shimon
b3e1a3415a
Merge branch '1.8.x' of github.com:appwrite/appwrite into feat-mongodb
...
# Conflicts:
# app/init/resources.php
# composer.json
# composer.lock
2025-08-03 18:33:27 +03:00
shimon
46965135a4
Update Docker Compose and application configuration to support MongoDB as the primary database, replacing all instances of MariaDB. Introduce a new environment variable for database selection and adjust database schemes in the application initialization.
2025-07-31 17:17:08 +03:00
Chirag Aggarwal
f2a3369131
chore: use config.json
2025-07-27 10:18:51 +05:30
ArnabChatterjee20k
cce830e103
added _APP_DB_ADAPTER
2025-06-18 18:09:52 +05:30
ArnabChatterjee20k
0452ed4605
added changes
2025-06-18 18:09:29 +05:30
Steven Nguyen
d2b0048a7f
fix: add _APP_DOMAIN_SITES variables.php so the env is initialized
...
Without this, API calls to Appwrite can result in rule_not_found errors.
2025-05-19 16:04:04 -07:00
Matej Bačo
af0c872999
Merge branch '1.6.x' into 1.7.x
2025-05-13 10:11:39 +02:00
Chirag Aggarwal
2c8e1e1731
chore: deprecate delay
2025-05-08 13:44:58 +00:00
Chirag Aggarwal
fea58c2bc9
refactor: maintenance task to run at a specific time
2025-05-08 07:49:27 +00:00
Matej Bačo
d8103cb57e
Merge branch '1.7.x' into 1.6.x
2025-04-25 12:18:04 +02:00
Steven Nguyen
928f535800
chore(functions): update desc for CPU and mem env vars
...
Clarify that 0 for _APP_FUNCTIONS_CPUS and _APP_FUNCTIONS_MEMORY means
unlimited.
2025-04-24 17:30:03 -07:00
Matej Bačo
87d14a88d2
AI-recommended changes
2025-04-16 12:45:58 +02:00
Shimon Newman
c4a506445d
Revert "Revert "Multi region support""
2025-04-11 17:52:19 +03:00
Christy Jacob
ffe153630d
Revert "Multi region support"
2025-04-10 22:19:23 +05:30
shimon
ff89da513f
addressing comments
2025-04-10 17:20:05 +03:00
Matej Baco
2689cceb71
Implement A/AAAA custom domain support
2025-04-08 14:48:50 +00:00
Chirag Aggarwal
13750f7dbd
feat: introduce new env
2025-03-21 07:42:10 +00:00
Chirag Aggarwal
ac84de7645
chore: updated variable descriptions
2025-02-18 10:38:13 +00:00
loks0n
40f16fab50
docs: add compression vars to documentation
2025-01-17 10:17:49 +00:00
Jake Barnby
8bc37026cd
Revert "Feat adding coroutines"
2024-10-08 20:54:40 +13:00
Binyamin Yawitz
d14edf4207
reverting: to set coroutines as head
2024-10-01 10:30:47 -04:00
Binyamin Yawitz
5512340cdd
Revert "Feat eldad4 coroutines"
2024-09-20 12:30:05 -04:00
Binyamin Yawitz
1581a8c654
chore: merge
2024-09-18 09:28:55 -04:00
Steven Nguyen
bde1ad9b05
fix: missing question for _APP_EMAIL_CERTIFICATES during install
...
Because the variable is required and there is no default, the user is
prompted to supply a value, but because there is no question set, the
user won't know what to fill in.
2024-09-17 22:35:07 -07:00
Binyamin Yawitz
7d6eac4ddb
Merge branch '1.6.x' into feat-eldad4-coroutines
...
# Conflicts:
# app/cli.php
# app/controllers/api/account.php
# app/controllers/api/functions.php
# app/controllers/api/projects.php
# app/controllers/general.php
# app/controllers/shared/api.php
# app/http.php
# app/init.php
# app/realtime.php
# app/worker.php
# composer.json
# composer.lock
# src/Appwrite/Migration/Migration.php
# src/Appwrite/Platform/Tasks/Migrate.php
# src/Appwrite/Platform/Tasks/ScheduleExecutions.php
# src/Appwrite/Platform/Workers/Builds.php
# src/Appwrite/Platform/Workers/Deletes.php
# src/Appwrite/Specification/Format/Swagger2.php
# src/Appwrite/Utopia/Response.php
2024-09-03 19:06:48 -04:00
Christy Jacob
856abeb76b
Merge pull request #8466 from appwrite/feat-adding-email
...
Feat changing emails
2024-08-12 19:01:33 +04:00
Binyamin Yawitz
c0770621cf
fix: reviews
2024-08-12 07:36:15 -04:00
loks0n
da2c2e6f1d
chore: update desc
2024-08-07 17:30:56 +01:00
Binyamin Yawitz
18a519f32d
typo
...
Co-authored-by: Steven Nguyen <1477010+stnguyen90@users.noreply.github.com >
2024-08-05 15:46:23 -04:00