Skip to content

Commit

Permalink
Perform processing that does not use the database before connecting t…
Browse files Browse the repository at this point in the history
…o the database (#7168)
  • Loading branch information
abcang authored and Gargron committed Apr 17, 2018
1 parent 3c722fe commit 609bf93
Showing 1 changed file with 41 additions and 40 deletions.
81 changes: 41 additions & 40 deletions streaming/index.js
Expand Up @@ -329,52 +329,53 @@ const startWorker = (workerId) => {

// Only messages that may require filtering are statuses, since notifications
// are already personalized and deletes do not matter
if (needsFiltering && event === 'update') {
pgPool.connect((err, client, done) => {
if (err) {
log.error(err);
return;
}
if (!needsFiltering || event !== 'update') {
transmit();
return;
}

const unpackedPayload = payload;
const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id));
const accountDomain = unpackedPayload.account.acct.split('@')[1];
const unpackedPayload = payload;
const targetAccountIds = [unpackedPayload.account.id].concat(unpackedPayload.mentions.map(item => item.id));
const accountDomain = unpackedPayload.account.acct.split('@')[1];

if (Array.isArray(req.filteredLanguages) && req.filteredLanguages.indexOf(unpackedPayload.language) !== -1) {
log.silly(req.requestId, `Message ${unpackedPayload.id} filtered by language (${unpackedPayload.language})`);
done();
if (Array.isArray(req.filteredLanguages) && req.filteredLanguages.indexOf(unpackedPayload.language) !== -1) {
log.silly(req.requestId, `Message ${unpackedPayload.id} filtered by language (${unpackedPayload.language})`);
return;
}

// When the account is not logged in, it is not necessary to confirm the block or mute
if (!req.accountId) {
transmit();
return;
}

pgPool.connect((err, client, done) => {
if (err) {
log.error(err);
return;
}

const queries = [
client.query(`SELECT 1 FROM blocks WHERE (account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 2)})) OR (account_id = $2 AND target_account_id = $1) UNION SELECT 1 FROM mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 2)})`, [req.accountId, unpackedPayload.account.id].concat(targetAccountIds)),
];

if (accountDomain) {
queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain]));
}

Promise.all(queries).then(values => {
done();

if (values[0].rows.length > 0 || (values.length > 1 && values[1].rows.length > 0)) {
return;
}

if (req.accountId) {
const queries = [
client.query(`SELECT 1 FROM blocks WHERE (account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 2)})) OR (account_id = $2 AND target_account_id = $1) UNION SELECT 1 FROM mutes WHERE account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 2)})`, [req.accountId, unpackedPayload.account.id].concat(targetAccountIds)),
];

if (accountDomain) {
queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain]));
}

Promise.all(queries).then(values => {
done();

if (values[0].rows.length > 0 || (values.length > 1 && values[1].rows.length > 0)) {
return;
}

transmit();
}).catch(err => {
done();
log.error(err);
});
} else {
done();
transmit();
}
transmit();
}).catch(err => {
done();
log.error(err);
});
} else {
transmit();
}
});
};

subscribe(`${redisPrefix}${id}`, listener);
Expand Down

0 comments on commit 609bf93

Please sign in to comment.