fix: Retention Policy cached settings not updated during upgrade procedure (#33237)

pull/33246/head^2
gabriellsh 2 years ago committed by GitHub
parent 18b1b992a1
commit 41a1816e2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      .changeset/pink-swans-teach.md
  2. 14
      apps/meteor/server/startup/migrations/xrun.ts

@ -0,0 +1,5 @@
---
"@rocket.chat/meteor": patch
---
fixed retention policy max age settings not being respected after upgrade

@ -2,6 +2,7 @@ import { Settings } from '@rocket.chat/models';
import type { UpdateResult } from 'mongodb';
import { upsertPermissions } from '../../../app/authorization/server/functions/upsertPermissions';
import { settings } from '../../../app/settings/server';
import { migrateDatabase, onServerVersionChange } from '../../lib/migrations';
import { ensureCloudWorkspaceRegistered } from '../cloudRegistration';
@ -23,10 +24,13 @@ const moveRetentionSetting = async () => {
{ _id: { $in: Array.from(maxAgeSettingMap.keys()) }, value: { $ne: -1 } },
{ projection: { _id: 1, value: 1 } },
).forEach(({ _id, value }) => {
if (!maxAgeSettingMap.has(_id)) {
const newSettingId = maxAgeSettingMap.get(_id);
if (!newSettingId) {
throw new Error(`moveRetentionSetting - Setting ${_id} equivalent does not exist`);
}
const newValue = convertDaysToMs(Number(value));
promises.push(
Settings.updateOne(
{
@ -34,11 +38,17 @@ const moveRetentionSetting = async () => {
},
{
$set: {
value: convertDaysToMs(Number(value)),
value: newValue,
},
},
),
);
const currentCache = settings.getSetting(newSettingId);
if (!currentCache) {
return;
}
settings.set({ ...currentCache, value: newValue });
});
await Promise.all(promises);

Loading…
Cancel
Save