diff --git a/.github/workflows/ci-breaking-changes.yaml b/.github/workflows/ci-breaking-changes.yaml index 1560e644f48..fa131ba60f0 100644 --- a/.github/workflows/ci-breaking-changes.yaml +++ b/.github/workflows/ci-breaking-changes.yaml @@ -36,6 +36,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -50,10 +53,16 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 clickhouse: image: clickhouse/clickhouse-server:25.8.8 + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: CLICKHOUSE_PASSWORD: clickhousePassword CLICKHOUSE_URL: "http://default:clickhousePassword@localhost:8123/twenty" @@ -393,6 +402,12 @@ jobs: # Clean up temp directory rm -rf /tmp/current-branch-files + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Install OpenAPI Diff Tool run: | # Using the Java-based OpenAPITools/openapi-diff via Docker diff --git a/.github/workflows/ci-create-app-e2e.yaml b/.github/workflows/ci-create-app-e2e.yaml index 3818cc4ef9e..4a974ac9530 100644 --- a/.github/workflows/ci-create-app-e2e.yaml +++ b/.github/workflows/ci-create-app-e2e.yaml @@ -37,6 +37,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -51,6 +54,9 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 env: diff --git a/.github/workflows/ci-merge-queue.yaml b/.github/workflows/ci-merge-queue.yaml index ed4787f6d28..a7ef6b96d9c 100644 --- a/.github/workflows/ci-merge-queue.yaml +++ b/.github/workflows/ci-merge-queue.yaml @@ -26,6 +26,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -40,6 +43,9 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 steps: diff --git a/.github/workflows/ci-sdk.yaml b/.github/workflows/ci-sdk.yaml index e9e22ece6cc..df3b30e1596 100644 --- a/.github/workflows/ci-sdk.yaml +++ b/.github/workflows/ci-sdk.yaml @@ -57,6 +57,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -71,6 +74,9 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 env: diff --git a/.github/workflows/ci-server.yaml b/.github/workflows/ci-server.yaml index 24ec00daace..b2d625a2b99 100644 --- a/.github/workflows/ci-server.yaml +++ b/.github/workflows/ci-server.yaml @@ -84,6 +84,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -98,6 +101,9 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 steps: @@ -226,6 +232,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -240,10 +249,16 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 clickhouse: image: clickhouse/clickhouse-server:25.8.8 + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: CLICKHOUSE_PASSWORD: clickhousePassword CLICKHOUSE_URL: "http://default:clickhousePassword@localhost:8123/twenty" diff --git a/.github/workflows/ci-test-docker-compose.yaml b/.github/workflows/ci-test-docker-compose.yaml index e996c12d8dd..8503312b241 100644 --- a/.github/workflows/ci-test-docker-compose.yaml +++ b/.github/workflows/ci-test-docker-compose.yaml @@ -27,6 +27,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Run compose run: | echo "Patching docker-compose.yml..." @@ -97,6 +102,11 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Create frontend placeholder run: | mkdir -p packages/twenty-front/build diff --git a/.github/workflows/ci-website.yaml b/.github/workflows/ci-website.yaml index 3878b24f0f6..a1e32d49c46 100644 --- a/.github/workflows/ci-website.yaml +++ b/.github/workflows/ci-website.yaml @@ -27,6 +27,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres diff --git a/.github/workflows/ci-zapier.yaml b/.github/workflows/ci-zapier.yaml index b314217293f..175d92ef0dc 100644 --- a/.github/workflows/ci-zapier.yaml +++ b/.github/workflows/ci-zapier.yaml @@ -30,6 +30,9 @@ jobs: services: postgres: image: twentycrm/twenty-postgres-spilo + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} env: PGUSER_SUPERUSER: postgres PGPASSWORD_SUPERUSER: postgres @@ -44,6 +47,9 @@ jobs: --health-retries 5 redis: image: redis + credentials: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} ports: - 6379:6379 steps: diff --git a/.github/workflows/preview-env-keepalive.yaml b/.github/workflows/preview-env-keepalive.yaml index cb7beb87cdd..590c33073ed 100644 --- a/.github/workflows/preview-env-keepalive.yaml +++ b/.github/workflows/preview-env-keepalive.yaml @@ -17,6 +17,12 @@ jobs: with: ref: ${{ github.event.client_payload.pr_head_sha }} + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Run compose setup run: | echo "Patching docker-compose.yml..." diff --git a/packages/twenty-server/src/engine/workspace-cache/services/workspace-cache.service.ts b/packages/twenty-server/src/engine/workspace-cache/services/workspace-cache.service.ts index cfa88d2090c..d67246f4a73 100644 --- a/packages/twenty-server/src/engine/workspace-cache/services/workspace-cache.service.ts +++ b/packages/twenty-server/src/engine/workspace-cache/services/workspace-cache.service.ts @@ -168,6 +168,10 @@ export class WorkspaceCacheService implements OnModuleInit { await this.flush(workspaceId, cacheKeyNames); await this.recomputeDataFromProvider(workspaceId, cacheKeyNames); + + // Clear memoizer again after recomputation to evict any stale entries + // cached by concurrent getOrRecompute calls during the flush window. + await this.memoizer.clearKeys(`${workspaceId}-`); } public async getCacheHashes( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts index 096700186bb..ce56b531042 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts @@ -85,9 +85,15 @@ export class WorkspaceMigrationRunnerService { flatMapsKeysSet.has('flatRoleMaps') || flatMapsKeysSet.has('flatRoleTargetMaps'); + const shouldInvalidateRolesPermissionsCache = + flatMapsKeysSet.has('flatObjectPermissionMaps') || + flatMapsKeysSet.has('flatFieldPermissionMaps') || + flatMapsKeysSet.has('flatPermissionFlagMaps'); + if ( shouldIncrementMetadataGraphqlSchemaVersion || - shouldInvalidateRoleMapCache + shouldInvalidateRoleMapCache || + shouldInvalidateRolesPermissionsCache ) { asyncOperations.push( this.workspaceCacheService.invalidateAndRecompute(workspaceId, [