[FIX] Multi instance error message (#27243)

pull/27261/head
Diego Sampaio 3 years ago committed by Guilherme Gazzo
parent 7a8cef8cff
commit b8b653a6e0
  1. 7
      apps/meteor/client/views/admin/info/InformationPage.tsx
  2. 4
      apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json
  3. 4
      apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json
  4. 9
      apps/meteor/server/startup/instance.ts
  5. 17
      apps/meteor/server/stream/streamBroadcast.js

@ -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({
<Page.ScrollableContentWithShadow>
<Box marginBlock='none' marginInline='auto' width='full'>
{warningMultipleInstances && (
<Callout type='danger' title={t('Multiple_monolith_instances_alert')} marginBlockEnd='x16'></Callout>
<Callout type='warning' title={t('Multiple_monolith_instances_alert')} marginBlockEnd='x16'></Callout>
)}
{alertOplogForMultipleInstances && (
<Callout

@ -3357,7 +3357,7 @@
"Msgs": "Msgs",
"multi": "multi",
"multi_line": "multi line",
"Multiple_monolith_instances_alert": "You are operating multiple instances... some features will not behave as designed.",
"Multiple_monolith_instances_alert": "You are operating multiple instances without an active enterprise license - some features may not behave as designed",
"Mute": "Mute",
"Mute_and_dismiss": "Mute and dismiss",
"Mute_all_notifications": "Mute all notifications",
@ -5466,4 +5466,4 @@
"onboarding.form.standaloneServerForm.manuallyIntegrate": "Need to manually integrate with external services",
"Something_Went_Wrong": "Something went wrong",
"Toolbox_room_actions": "Primary Room actions"
}
}

@ -3315,7 +3315,7 @@
"Msgs": "Wiadomości",
"multi": "multi",
"multi_line": "linia multi",
"Multiple_monolith_instances_alert": "Obsługujesz wiele instancji... niektóre funkcje nie będą zachowywać się zgodnie z projektem.",
"Multiple_monolith_instances_alert": null,
"Mute": "Wyciszenie",
"Mute_and_dismiss": "Wycisz i odrzuć",
"Mute_all_notifications": "Wycisz wszystkie powiadomienia",
@ -5386,4 +5386,4 @@
"onboarding.form.standaloneServerForm.publishOwnApp": "W celu wysyłania powiadomień push należy skompilować i opublikować własną aplikację w Google Play i App Store",
"onboarding.form.standaloneServerForm.manuallyIntegrate": "Konieczność ręcznej integracji z usługami zewnętrznymi",
"Something_Went_Wrong": "Coś poszło nie tak"
}
}

@ -2,13 +2,8 @@ import os from 'os';
import { Meteor } from 'meteor/meteor';
import { InstanceStatus } from 'meteor/konecty:multiple-instances-status';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { InstanceStatus as InstanceStatusRaw } from '@rocket.chat/models';
import { startStreamBroadcast } from '../stream/streamBroadcast';
import { Logger } from '../lib/logger/Logger';
const logger = new Logger('InstanceStartup');
Meteor.startup(function () {
const instance = {
@ -30,9 +25,5 @@ Meteor.startup(function () {
InstanceStatus.registerInstance('rocket.chat', instance);
if (Promise.await(InstanceStatusRaw.getActiveInstanceCount()) > 1) {
logger.warn(TAPi18n.__('Multiple_monolith_instances_alert'));
}
return startStreamBroadcast();
});

@ -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) {

Loading…
Cancel
Save