mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: als (#9749)
* feat: als * fix: up test timeout * fix: don't overwrite caller if it already exists * fix: up test timeout for psql
This commit is contained in:
committed by
GitHub
parent
156ba0958e
commit
e59d357533
7
src/als.js
Normal file
7
src/als.js
Normal file
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const { AsyncLocalStorage } = require('async_hooks');
|
||||
|
||||
const asyncLocalStorage = new AsyncLocalStorage();
|
||||
|
||||
module.exports = asyncLocalStorage;
|
||||
@@ -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') {
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -359,7 +359,7 @@ describe('Notifications', () => {
|
||||
assert(nids.includes(nid));
|
||||
done();
|
||||
});
|
||||
}, 1500);
|
||||
}, 3000);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user