Skip to content

Commit

Permalink
Prune precision defined by cron job expression
Browse files Browse the repository at this point in the history
  • Loading branch information
ggazzo committed Sep 21, 2020
1 parent f26fce7 commit 54fc88b
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 12 deletions.
7 changes: 5 additions & 2 deletions app/retention-policy/server/cronPruneMessages.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function getSchedule(precision) {
const pruneCronName = 'Prune old messages by retention policy';

function deployCron(precision) {
const schedule = (parser) => parser.cron(getSchedule(precision), true);
const schedule = (parser) => parser.cron(precision, true);

SyncedCron.remove(pruneCronName);
SyncedCron.add({
Expand Down Expand Up @@ -101,7 +101,10 @@ function reloadPolicy() {
maxTimes.p = settings.get('RetentionPolicy_MaxAge_Groups');
maxTimes.d = settings.get('RetentionPolicy_MaxAge_DMs');

return deployCron(settings.get('RetentionPolicy_Precision'));

const precision = (settings.get('RetentionPolicy_Advanced_Precision') && settings.get('RetentionPolicy_Advanced_Precision_Cron')) || getSchedule(settings.get('RetentionPolicy_Precision'));

return deployCron(precision);
}

Meteor.startup(function() {
Expand Down
38 changes: 29 additions & 9 deletions app/retention-policy/server/startup/settings.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { settings } from '../../../settings';

settings.addGroup('RetentionPolicy', function() {

const globalQuery = {
_id: 'RetentionPolicy_Enabled',
value: true,
};

this.add('RetentionPolicy_Enabled', false, {
type: 'boolean',
public: true,
Expand Down Expand Up @@ -28,18 +34,30 @@ settings.addGroup('RetentionPolicy', function() {
public: true,
i18nLabel: 'RetentionPolicy_Precision',
i18nDescription: 'RetentionPolicy_Precision_Description',
enableQuery: {
_id: 'RetentionPolicy_Enabled',
value: true,
},
enableQuery: [globalQuery, {
_id: 'RetentionPolicy_Advanced_Precision',
value: false,
}],
});

this.section('Global Policy', function() {
const globalQuery = {
_id: 'RetentionPolicy_Enabled',
value: true,
};
this.add('RetentionPolicy_Advanced_Precision', false, {
type: 'boolean',
public: true,
i18nLabel: 'RetentionPolicy_Advanced_Precision',
i18nDescription: 'RetentionPolicy_Advanced_Precision_Description',
enableQuery: globalQuery,
});

this.add('RetentionPolicy_Advanced_Precision_Cron', '*/30 * * * *', {
type: 'string',
public: true,
i18nLabel: 'RetentionPolicy_Advanced_Precision_Cron',
i18nDescription: 'RetentionPolicy_Advanced_Precision_Cron_Description',
enableQuery: [globalQuery, { _id: 'RetentionPolicy_Advanced_Precision', value: true }],
});


this.section('Global Policy', function() {
this.add('RetentionPolicy_AppliesToChannels', false, {
type: 'boolean',
public: true,
Expand Down Expand Up @@ -80,6 +98,7 @@ settings.addGroup('RetentionPolicy', function() {
i18nLabel: 'RetentionPolicy_AppliesToDMs',
enableQuery: globalQuery,
});

this.add('RetentionPolicy_MaxAge_DMs', 30, {
type: 'int',
public: true,
Expand All @@ -97,6 +116,7 @@ settings.addGroup('RetentionPolicy', function() {
i18nLabel: 'RetentionPolicy_DoNotPrunePinned',
enableQuery: globalQuery,
});

this.add('RetentionPolicy_FilesOnly', false, {
type: 'boolean',
public: true,
Expand Down
5 changes: 4 additions & 1 deletion packages/rocketchat-i18n/i18n/en.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -2689,7 +2689,6 @@
"Office_Hours": "Office Hours",
"Office_hours_enabled": "Office Hours Enabled",
"Office_hours_updated": "Office hours updated",
"RetentionPolicy_ExcludePinned": "Exclude pinned messages",
"Offline": "Offline",
"Offline_DM_Email": "Direct Message Email Subject",
"Offline_Email_Subject_Description": "You may use the following placeholders:<br/><ul><li>[Site_Name], [Site_URL], [User] & [Room] for the Application Name, URL, Username & Roomname respectively.<li/></ul>",
Expand Down Expand Up @@ -3013,8 +3012,12 @@
"Retail": "Retail",
"Retention_setting_changed_successfully": "Retention policy setting changed successfully",
"RetentionPolicy": "Retention Policy",
"RetentionPolicy_Advanced_Precision": "Use Advanced Retention Policy configuration",
"RetentionPolicy_Advanced_Precision_Cron": "Use Advanced Retention Policy Cron",
"RetentionPolicy_Advanced_Precision_Cron_Description": "How often the prune timer should run defined by cron job expression. Setting this to a more precise value makes channels with fast retention timers work better, but might cost extra processing power on large communities.",
"RetentionPolicy_DoNotPruneDiscussion": "Do not prune discussion messages",
"RetentionPolicy_DoNotPruneThreads": "Do not prune Threads",
"RetentionPolicy_ExcludePinned": "Exclude pinned messages",
"RetentionPolicy_RoomWarning": "Messages older than __time__ are automatically pruned here",
"RetentionPolicy_RoomWarning_Unpinned": "Unpinned messages older than __time__ are automatically pruned here",
"RetentionPolicy_RoomWarning_FilesOnly": "Files older than __time__ are automatically pruned here (messages stay intact)",
Expand Down

0 comments on commit 54fc88b

Please sign in to comment.