Skip to content

Commit 04ee939

Browse files
committed
optimize clearcach
1 parent ffce8a9 commit 04ee939

2 files changed

Lines changed: 30 additions & 12 deletions

File tree

OpenFlow/src/DBHelper.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { Auth } from "./Auth";
77
import { WebSocketServerClient } from "./WebSocketServerClient";
88
import { BaseObserver } from "@opentelemetry/api-metrics"
99
import { LoginProvider } from "./LoginProvider";
10-
var cacheManager = require('cache-manager');
10+
import * as cacheManager from "cache-manager";
11+
// var cacheManager = require('cache-manager');
1112
var redisStore = require('cache-manager-ioredis');
1213

1314
export class DBHelper {
@@ -85,7 +86,7 @@ export class DBHelper {
8586
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
8687
try {
8788
if (NoderedUtil.IsNullEmpty(_id)) return null;
88-
let item = await this.memoryCache.wrap("user" + _id, () => {
89+
let item = await this.memoryCache.wrap("users" + _id, () => {
8990
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
9091
if (Config.log_cache) Logger.instanse.debug("Add user to cache : " + _id);
9192
return Config.db.getbyid<User>(_id, "users", jwt, true, span);;
@@ -130,7 +131,7 @@ export class DBHelper {
130131
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
131132
try {
132133
if (NoderedUtil.IsNullEmpty(_id)) return null;
133-
let item = await this.memoryCache.wrap("queue" + _id, () => {
134+
let item = await this.memoryCache.wrap("mq" + _id, () => {
134135
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
135136
if (Config.log_cache) Logger.instanse.debug("Add queue to cache : " + _id);
136137
return Config.db.getbyid<User>(_id, "mq", jwt, true, span);
@@ -149,7 +150,7 @@ export class DBHelper {
149150
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
150151
try {
151152
if (NoderedUtil.IsNullEmpty(name)) return null;
152-
let item = await this.memoryCache.wrap("queue" + name, () => {
153+
let item = await this.memoryCache.wrap("mq" + name, () => {
153154
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
154155
if (Config.log_cache) Logger.instanse.debug("Add queue to cache : " + name);
155156
return Config.db.getbyname<User>(name, "mq", jwt, true, span);
@@ -168,7 +169,7 @@ export class DBHelper {
168169
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
169170
try {
170171
if (NoderedUtil.IsNullEmpty(_id)) return null;
171-
let item = await this.memoryCache.wrap("exchange" + _id, () => {
172+
let item = await this.memoryCache.wrap("mq" + _id, () => {
172173
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
173174
if (Config.log_cache) Logger.instanse.debug("Add exchange to cache : " + _id);
174175
return Config.db.getbyid<User>(_id, "mq", jwt, true, span);
@@ -187,7 +188,7 @@ export class DBHelper {
187188
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
188189
try {
189190
if (NoderedUtil.IsNullEmpty(name)) return null;
190-
let item = await this.memoryCache.wrap("exchange" + name, () => {
191+
let item = await this.memoryCache.wrap("mq" + name, () => {
191192
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
192193
if (Config.log_cache) Logger.instanse.debug("Add exchange to cache : " + name);
193194
return Config.db.getbyname<User>(name, "mq", jwt, true, span);
@@ -206,7 +207,7 @@ export class DBHelper {
206207
const span: Span = Logger.otel.startSubSpan("dbhelper.FindById", parent);
207208
try {
208209
if (NoderedUtil.IsNullEmpty(_id)) return null;
209-
let item = await this.memoryCache.wrap("role" + _id, () => {
210+
let item = await this.memoryCache.wrap("users" + _id, () => {
210211
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
211212
if (Config.log_cache) Logger.instanse.debug("Add role to cache : " + _id);
212213
return Config.db.getbyid<User>(_id, "users", jwt, true, span);
@@ -225,7 +226,7 @@ export class DBHelper {
225226
const span: Span = Logger.otel.startSubSpan("dbhelper.FindByUsername", parent);
226227
try {
227228
if (NoderedUtil.IsNullEmpty(username)) return null;
228-
let item = await this.memoryCache.wrap("username" + username, () => {
229+
let item = await this.memoryCache.wrap("username_" + username, () => {
229230
if (jwt === null || jwt == undefined || jwt == "") { jwt = Crypt.rootToken(); }
230231
if (Config.log_cache) Logger.instanse.debug("Add user to cache : " + username);
231232
return Config.db.getbyusername<User>(username, jwt, true, span);
@@ -264,7 +265,7 @@ export class DBHelper {
264265
if (NoderedUtil.IsNullUndefinded(user)) return null;
265266
if (!Config.decorate_roles_fetching_all_roles) {
266267
if (!user.roles) user.roles = [];
267-
const results = await this.memoryCache.wrap("userroles" + user._id, () => {
268+
const results = await this.memoryCache.wrap("userroles_" + user._id, () => {
268269
if (Config.log_cache) Logger.instanse.debug("Add userroles to cache : " + user.name);
269270
const pipe: any = [{ "$match": { "_id": user._id } },
270271
{
@@ -391,7 +392,7 @@ export class DBHelper {
391392
this.init();
392393
const span: Span = Logger.otel.startSubSpan("dbhelper.FindByUsername", parent);
393394
try {
394-
let item = await this.memoryCache.wrap("rolename" + name, async () => {
395+
let item = await this.memoryCache.wrap("rolename_" + name, async () => {
395396
const items: Role[] = await Config.db.query<Role>({ query: { name: name, "_type": "role" }, top: 1, collectionname: "users", jwt: Crypt.rootToken() }, parent);
396397
if (items === null || items === undefined || items.length === 0) { return null; }
397398
if (Config.log_cache) Logger.instanse.debug("Add role to cache : " + name);

OpenFlow/src/DatabaseConnection.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,27 @@ export class DatabaseConnection extends events.EventEmitter {
312312
_type = item._type;
313313

314314
if (collectionname == "mq") {
315-
DBHelper.clearCache("watch detected change in " + collectionname + " collection for a " + _type + " " + item.name);
315+
// DBHelper.clearCache("watch detected change in " + collectionname + " collection for a " + _type + " " + item.name);
316+
await DBHelper.memoryCache.del("mq" + item._id);
316317
}
317318
if (collectionname == "users" && (_type == "user" || _type == "role" || _type == "customer")) {
318-
DBHelper.clearCache("watch detected change in " + collectionname + " collection for a " + _type + " " + item.name);
319+
// DBHelper.clearCache("watch detected change in " + collectionname + " collection for a " + _type + " " + item.name);
320+
await DBHelper.memoryCache.del("users" + item._id);
321+
if (_type == "role") {
322+
var role: Role = item as Role;
323+
await DBHelper.memoryCache.del("rolename_" + item.name);
324+
// this.WellknownIdsArray.indexOf(item._id) == -1
325+
if (!NoderedUtil.IsNullUndefinded(role.members) && role.members.length > 0 && item._id != WellknownIds.users) {
326+
for (let i = 0; i < role.members.length; i++) {
327+
let member = role.members[i];
328+
await DBHelper.memoryCache.del("users" + member._id);
329+
await DBHelper.memoryCache.del("username_" + member.name);
330+
await DBHelper.memoryCache.del("rolename_" + member.name);
331+
}
332+
}
333+
} else {
334+
await DBHelper.memoryCache.del("username_" + item.name);
335+
}
319336
}
320337
if (collectionname == "config" && (_type == "provider" || _type == "restriction" || _type == "resource")) {
321338
DBHelper.clearCache("watch detected change in " + collectionname + " collection for a " + _type + " " + item.name);

0 commit comments

Comments
 (0)