diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0add3236ba4..7a56326e334 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -138,7 +138,7 @@ jobs: yarn datadog-ci sourcemaps upload ./dist \ --service=web \ --release-version=${{env.ACTION_VERSION}} \ - --minified-path-prefix="/parabol/dist/" + --minified-path-prefix="/home/node/parabol/dist/" - name: Report Status if: failure() uses: ravsamhq/notify-slack-action@v2 diff --git a/packages/server/graphql/private/mutations/disconnectSocket.ts b/packages/server/graphql/private/mutations/disconnectSocket.ts index 083ef863269..9c62122875d 100644 --- a/packages/server/graphql/private/mutations/disconnectSocket.ts +++ b/packages/server/graphql/private/mutations/disconnectSocket.ts @@ -8,14 +8,11 @@ import {MutationResolvers} from '../resolverTypes' const disconnectSocket: MutationResolvers['disconnectSocket'] = async ( _source, - {userId}, - {dataLoader, socketId} + {userId, socketId}, + {dataLoader} ) => { const redis = getRedis() - // AUTH - if (!socketId) return null - // RESOLUTION const [user, userPresence] = await Promise.all([ dataLoader.get('users').load(userId), diff --git a/packages/server/graphql/private/typeDefs/Mutation.graphql b/packages/server/graphql/private/typeDefs/Mutation.graphql index 8fbaa365bd3..c68cdf06e4c 100644 --- a/packages/server/graphql/private/typeDefs/Mutation.graphql +++ b/packages/server/graphql/private/typeDefs/Mutation.graphql @@ -149,6 +149,10 @@ type Mutation { the userId to disconnect """ userId: ID! + """ + the socketId of the user that disconnected + """ + socketId: ID! ): DisconnectSocketPayload """ diff --git a/packages/server/server.ts b/packages/server/server.ts index e1dbda0dcef..1dd4e3a1577 100644 --- a/packages/server/server.ts +++ b/packages/server/server.ts @@ -30,7 +30,12 @@ tracer.init({ plugins: false, version: __APP_VERSION__ }) -tracer.use('ioredis').use('http').use('pg') +tracer + .use('ioredis') + .use('http', { + blocklist: ['/health', '/ready'] + }) + .use('pg') process.on('SIGTERM', async (signal) => { Logger.log( diff --git a/packages/server/utils/serverHealthChecker.ts b/packages/server/utils/serverHealthChecker.ts index 69308d294fe..f5a1a373ea7 100644 --- a/packages/server/utils/serverHealthChecker.ts +++ b/packages/server/utils/serverHealthChecker.ts @@ -71,7 +71,7 @@ class ServerHealthChecker { if (socketServers.includes(socketInstanceId)) return // let GQL handle the disconnect logic so it can do special handling like notify team memers Logger.log(`serverHealthChecker: ${socketId} is on dead instace ${socketInstanceId}`) - await callGQL(disconnectQuery, {userId}) + await callGQL(disconnectQuery, {userId, socketId}) }) }) ) diff --git a/packages/server/wsHandler.ts b/packages/server/wsHandler.ts index acc835d3f69..43f5358532f 100644 --- a/packages/server/wsHandler.ts +++ b/packages/server/wsHandler.ts @@ -49,8 +49,8 @@ mutation ConnectSocket($socketInstanceId: ID!) { }` export const disconnectQuery = ` -mutation DisconnectSocket($userId: ID!) { - disconnectSocket(userId: $userId) { +mutation DisconnectSocket($userId: ID!, $socketId: ID!) { + disconnectSocket(userId: $userId, socketId: $socketId) { user { id } @@ -212,7 +212,7 @@ export const wsHandler = makeBehavior<{token?: string}>({ const dataLoader = getNewDataLoader() await execute({ document: parse(disconnectQuery), - variableValues: {userId}, + variableValues: {userId, socketId}, schema: privateSchema, contextValue: {dataLoader, ip: extra.ip, authToken, socketId} })