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}`);
|
winston.warn(`[plugins] Unknown hookType: ${hookType}, hook : ${hook}`);
|
||||||
return;
|
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);
|
const result = await hookTypeToMethod[hookType](hook, hookList, params);
|
||||||
|
|
||||||
if (hook !== 'action:plugins.firehook' && hook !== 'filter:plugins.firehook') {
|
if (hook !== 'action:plugins.firehook' && hook !== 'filter:plugins.firehook') {
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ function onConnection(socket) {
|
|||||||
onConnect(socket);
|
onConnect(socket);
|
||||||
socket.onAny((event, ...args) => {
|
socket.onAny((event, ...args) => {
|
||||||
const payload = { data: [event].concat(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', () => {
|
socket.on('disconnect', () => {
|
||||||
|
|||||||
@@ -171,6 +171,10 @@ function setupExpressApp(app) {
|
|||||||
app.use(middleware.addHeaders);
|
app.use(middleware.addHeaders);
|
||||||
app.use(middleware.processRender);
|
app.use(middleware.processRender);
|
||||||
auth.initialize(app, middleware);
|
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
|
app.use(middleware.autoLocale); // must be added after auth middlewares are added
|
||||||
|
|
||||||
const toobusy = require('toobusy-js');
|
const toobusy = require('toobusy-js');
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ describe('Sorted Set methods', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should work with big arrays (length > 100) ', async function () {
|
it('should work with big arrays (length > 100) ', async function () {
|
||||||
this.timeout(50000);
|
this.timeout(100000);
|
||||||
const keys = [];
|
const keys = [];
|
||||||
for (let i = 0; i < 400; i++) {
|
for (let i = 0; i < 400; i++) {
|
||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ describe('Notifications', () => {
|
|||||||
assert(nids.includes(nid));
|
assert(nids.includes(nid));
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
}, 1500);
|
}, 3000);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user