From b8b653a6e08d4ac7c8c6483bd31497d4877f247d Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Fri, 11 Nov 2022 17:36:25 -0300 Subject: [PATCH] [FIX] Multi instance error message (#27243) --- .../client/views/admin/info/InformationPage.tsx | 7 +++++-- .../packages/rocketchat-i18n/i18n/en.i18n.json | 4 ++-- .../packages/rocketchat-i18n/i18n/pl.i18n.json | 4 ++-- apps/meteor/server/startup/instance.ts | 9 --------- apps/meteor/server/stream/streamBroadcast.js | 17 +++++++++++++---- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/apps/meteor/client/views/admin/info/InformationPage.tsx b/apps/meteor/client/views/admin/info/InformationPage.tsx index 5048fa4732a..981f540a4f5 100644 --- a/apps/meteor/client/views/admin/info/InformationPage.tsx +++ b/apps/meteor/client/views/admin/info/InformationPage.tsx @@ -5,6 +5,7 @@ import React, { memo } from 'react'; import SeatsCard from '../../../../ee/client/views/admin/info/SeatsCard'; import Page from '../../../components/Page'; +import { useIsEnterprise } from '../../../hooks/useIsEnterprise'; import DeploymentCard from './DeploymentCard'; import FederationCard from './FederationCard'; import LicenseCard from './LicenseCard'; @@ -29,11 +30,13 @@ const InformationPage = memo(function InformationPage({ }: InformationPageProps) { const t = useTranslation(); + const isEnterprise = useIsEnterprise(); + if (!info) { return null; } - const warningMultipleInstances = !statistics?.msEnabled && statistics?.instanceCount > 1; + const warningMultipleInstances = !isEnterprise && !statistics?.msEnabled && statistics?.instanceCount > 1; const alertOplogForMultipleInstances = warningMultipleInstances && !statistics.oplogEnabled; return ( @@ -54,7 +57,7 @@ const InformationPage = memo(function InformationPage({ {warningMultipleInstances && ( - + )} {alertOplogForMultipleInstances && ( 1) { - logger.warn(TAPi18n.__('Multiple_monolith_instances_alert')); - } - return startStreamBroadcast(); }); diff --git a/apps/meteor/server/stream/streamBroadcast.js b/apps/meteor/server/stream/streamBroadcast.js index 0eb744e04dd..74a2784e5f5 100644 --- a/apps/meteor/server/stream/streamBroadcast.js +++ b/apps/meteor/server/stream/streamBroadcast.js @@ -1,3 +1,4 @@ +import debounce from 'lodash.debounce'; import { Meteor } from 'meteor/meteor'; import { InstanceStatus } from 'meteor/konecty:multiple-instances-status'; import { check } from 'meteor/check'; @@ -10,6 +11,7 @@ import { hasPermission } from '../../app/authorization/server'; import { settings } from '../../app/settings/server'; import { isDocker, getURL } from '../../app/utils/server'; import { StreamerCentral } from '../modules/streamer/streamer.module'; +import { isEnterprise } from '../../ee/app/license/server/license'; process.env.PORT = String(process.env.PORT).trim(); process.env.INSTANCE_IP = String(process.env.INSTANCE_IP).trim(); @@ -23,6 +25,13 @@ export const connLogger = logger.section('Connection'); export const authLogger = logger.section('Auth'); export const streamLogger = logger.section('Stream'); +// show warning debounced, giving an extra time for a license to be fetched +const showMonolithWarning = debounce(function () { + if (!isEnterprise()) { + logger.warn(TAPi18n.__('Multiple_monolith_instances_alert')); + } +}, 10000); + function _authorizeConnection(instance) { authLogger.info(`Authorizing with ${instance}`); @@ -60,10 +69,6 @@ function startMatrixBroadcast() { added: Meteor.bindEnvironment((record) => { cache.set(record._id, record); - if (cache.size > 1) { - logger.warn(TAPi18n.__('Multiple_monolith_instances_alert')); - } - const subPath = getURL('', { cdn: false, full: false }); let instance = `${record.extraInformation.host}:${record.extraInformation.port}${subPath}`; @@ -100,6 +105,10 @@ function startMatrixBroadcast() { connections[instance].onReconnect = function () { return authorizeConnection(instance); }; + + if (cache.size > 1) { + showMonolithWarning(); + } }), removed(id) {