Compare commits

..

1 Commits

Author SHA1 Message Date
Barış Soner Uşaklı
013d6c1584 feat: als (#9749)
* feat: als

* fix: up test timeout

* fix: don't overwrite caller if it already exists

* fix: up test timeout for psql
2021-08-30 10:24:55 -04:00
7 changed files with 20 additions and 4 deletions

View File

@@ -88,7 +88,7 @@
"nodebb-plugin-dbsearch": "5.0.2",
"nodebb-plugin-emoji": "^3.5.0",
"nodebb-plugin-emoji-android": "2.0.5",
"nodebb-plugin-markdown": "8.14.1",
"nodebb-plugin-markdown": "8.14.0",
"nodebb-plugin-mentions": "2.13.11",
"nodebb-plugin-spam-be-gone": "0.7.9",
"nodebb-rewards-essentials": "0.1.5",

7
src/als.js Normal file
View File

@@ -0,0 +1,7 @@
'use strict';
const { AsyncLocalStorage } = require('async_hooks');
const asyncLocalStorage = new AsyncLocalStorage();
module.exports = asyncLocalStorage;

View File

@@ -96,6 +96,10 @@ Hooks.fire = async function (hook, params) {
winston.warn(`[plugins] Unknown hookType: ${hookType}, hook : ${hook}`);
return;
}
if (params && typeof params === 'object' && !params.hasOwnProperty('caller')) {
const als = require('../als');
params.caller = als.getStore();
}
const result = await hookTypeToMethod[hookType](hook, hookList, params);
if (hook !== 'action:plugins.firehook' && hook !== 'filter:plugins.firehook') {

View File

@@ -73,7 +73,8 @@ function onConnection(socket) {
onConnect(socket);
socket.onAny((event, ...args) => {
const payload = { data: [event].concat(args) };
onMessage(socket, payload);
const als = require('../als');
als.run({ uid: socket.uid }, onMessage, socket, payload);
});
socket.on('disconnect', () => {

View File

@@ -171,6 +171,10 @@ function setupExpressApp(app) {
app.use(middleware.addHeaders);
app.use(middleware.processRender);
auth.initialize(app, middleware);
const als = require('./als');
app.use((req, res, next) => {
als.run({ uid: req.uid }, next);
});
app.use(middleware.autoLocale); // must be added after auth middlewares are added
const toobusy = require('toobusy-js');

View File

@@ -334,7 +334,7 @@ describe('Sorted Set methods', () => {
});
it('should work with big arrays (length > 100) ', async function () {
this.timeout(50000);
this.timeout(100000);
const keys = [];
for (let i = 0; i < 400; i++) {
/* eslint-disable no-await-in-loop */

View File

@@ -359,7 +359,7 @@ describe('Notifications', () => {
assert(nids.includes(nid));
done();
});
}, 1500);
}, 3000);
});
});
});