[NEW] Skip Export Operations that haven't been updated in over a day (#16135)

pull/15595/head^2
pierre-lehnen-rc 5 years ago committed by GitHub
parent 05290be00b
commit ae90799288
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      app/models/server/models/ExportOperations.js
  2. 10
      app/user-data-download/server/cronProcessDownloads.js

@ -31,7 +31,7 @@ export class ExportOperations extends Base {
const query = {
userId,
status: {
$nin: ['completed'],
$nin: ['completed', 'skipped'],
},
};
@ -40,7 +40,7 @@ export class ExportOperations extends Base {
findAllPending(options) {
const query = {
status: { $nin: ['completed'] },
status: { $nin: ['completed', 'skipped'] },
};
return this.find(query, options);
@ -48,7 +48,7 @@ export class ExportOperations extends Base {
findOnePending(options) {
const query = {
status: { $nin: ['completed'] },
status: { $nin: ['completed', 'skipped'] },
};
return this.findOne(query, options);
@ -56,7 +56,7 @@ export class ExportOperations extends Base {
findAllPendingBeforeMyRequest(requestDay, options) {
const query = {
status: { $nin: ['completed'] },
status: { $nin: ['completed', 'skipped'] },
createdAt: { $lt: requestDay },
};

@ -6,6 +6,7 @@ import { Meteor } from 'meteor/meteor';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { SyncedCron } from 'meteor/littledata:synced-cron';
import archiver from 'archiver';
import moment from 'moment';
import { settings } from '../../settings';
import { Subscriptions, Rooms, Users, Uploads, Messages, UserDataFiles, ExportOperations, Avatars } from '../../models';
@ -564,6 +565,15 @@ async function processDataDownloads() {
return;
}
if (operation.status !== 'pending') {
// If the operation has started but was not updated in over a day, then skip it
if (operation._updatedAt && moment().diff(moment(operation._updatedAt), 'days') > 1) {
operation.status = 'skipped';
await ExportOperations.updateOperation(operation);
return processDataDownloads();
}
}
await continueExportOperation(operation);
await ExportOperations.updateOperation(operation);

Loading…
Cancel
Save