Skip to content

Commit 22255df

Browse files
committed
Add custom ping interval
1 parent 40283b0 commit 22255df

6 files changed

Lines changed: 27 additions & 6 deletions

File tree

OpenFlow/src/Config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export class Config {
6363
Config.auto_create_user_from_jwt = Config.parseBoolean(Config.getEnv("auto_create_user_from_jwt", "false"));
6464
Config.auto_create_domains = Config.parseArray(Config.getEnv("auto_create_domains", ""));
6565
Config.persist_user_impersonation = Config.parseBoolean(Config.getEnv("persist_user_impersonation", "true"));
66+
Config.ping_clients_interval = parseInt(Config.getEnv("ping_clients_interval", (10000).toString())); // 12 seconds
6667
Config.allow_personal_nodered = Config.parseBoolean(Config.getEnv("allow_personal_nodered", "false"));
6768
Config.use_ingress_beta1_syntax = Config.parseBoolean(Config.getEnv("use_ingress_beta1_syntax", "true"));
6869
Config.auto_create_personal_nodered_group = Config.parseBoolean(Config.getEnv("auto_create_personal_nodered_group", "false"));
@@ -236,6 +237,8 @@ export class Config {
236237
public static auto_create_user_from_jwt: boolean = Config.parseBoolean(Config.getEnv("auto_create_user_from_jwt", "false"));
237238
public static auto_create_domains: string[] = Config.parseArray(Config.getEnv("auto_create_domains", ""));
238239
public static persist_user_impersonation: boolean = Config.parseBoolean(Config.getEnv("persist_user_impersonation", "true"));
240+
public static ping_clients_interval: number = parseInt(Config.getEnv("ping_clients_interval", (10000).toString())); // 12 seconds
241+
239242
public static allow_personal_nodered: boolean = Config.parseBoolean(Config.getEnv("allow_personal_nodered", "false"));
240243
public static use_ingress_beta1_syntax: boolean = Config.parseBoolean(Config.getEnv("use_ingress_beta1_syntax", "true"));
241244
public static auto_create_personal_nodered_group: boolean = Config.parseBoolean(Config.getEnv("auto_create_personal_nodered_group", "false"));

OpenFlow/src/DatabaseConnection.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ export class DatabaseConnection extends events.EventEmitter {
8080
public static mongodb_query: ValueRecorder;
8181
public static mongodb_aggregate: ValueRecorder;
8282
public static mongodb_insert: ValueRecorder;
83+
public static mongodb_insertmany: ValueRecorder;
8384
public static mongodb_update: ValueRecorder;
85+
public static mongodb_updatemany: ValueRecorder;
8486
public static mongodb_replace: ValueRecorder;
8587
public static mongodb_delete: ValueRecorder;
8688
public static mongodb_deletemany: ValueRecorder;
@@ -103,10 +105,18 @@ export class DatabaseConnection extends events.EventEmitter {
103105
description: 'Duration for mongodb inserts',
104106
boundaries: Logger.otel.default_boundaries
105107
});
108+
DatabaseConnection.mongodb_insertmany = Logger.otel.meter.createValueRecorder('openflow_mongodb_insertmany_seconds', {
109+
description: 'Duration for mongodb insert many',
110+
boundaries: Logger.otel.default_boundaries
111+
});
106112
DatabaseConnection.mongodb_update = Logger.otel.meter.createValueRecorder('openflow_mongodb_update_seconds', {
107113
description: 'Duration for mongodb updates',
108114
boundaries: Logger.otel.default_boundaries
109115
});
116+
DatabaseConnection.mongodb_updatemany = Logger.otel.meter.createValueRecorder('openflow_mongodb_updatemany_seconds', {
117+
description: 'Duration for mongodb update many',
118+
boundaries: Logger.otel.default_boundaries
119+
});
110120
DatabaseConnection.mongodb_replace = Logger.otel.meter.createValueRecorder('openflow_mongodb_replace_seconds', {
111121
description: 'Duration for mongodb replaces',
112122
boundaries: Logger.otel.default_boundaries
@@ -1456,15 +1466,15 @@ export class DatabaseConnection extends events.EventEmitter {
14561466
const mongodbspan_inner: Span = Logger.otel.startSubSpan("mongodb.bulkexecute", span);
14571467
tempresult = tempresult.concat(bulkInsert.execute())
14581468
Logger.otel.endSpan(mongodbspan_inner);
1459-
Logger.otel.endTimer(ot_end_inner, DatabaseConnection.mongodb_insert, { collection: collectionname });
1469+
Logger.otel.endTimer(ot_end_inner, DatabaseConnection.mongodb_insertmany, { collection: collectionname });
14601470
bulkInsert = this.db.collection(collectionname).initializeUnorderedBulkOp()
14611471
}
14621472
}
14631473
const ot_end = Logger.otel.startTimer();
14641474
const mongodbspan: Span = Logger.otel.startSubSpan("mongodb.bulkexecute", span);
14651475
tempresult = tempresult.concat(bulkInsert.execute())
14661476
Logger.otel.endSpan(mongodbspan);
1467-
Logger.otel.endTimer(ot_end, DatabaseConnection.mongodb_insert, { collection: collectionname });
1477+
Logger.otel.endTimer(ot_end, DatabaseConnection.mongodb_insertmany, { collection: collectionname });
14681478

14691479
for (let y = 0; y < items.length; y++) {
14701480
let item = items[y];

OpenFlow/src/LoginProvider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@ export class LoginProvider {
422422
enable_web_tours: Config.enable_web_tours,
423423
collections_with_text_index: DatabaseConnection.collections_with_text_index,
424424
timeseries_collections: DatabaseConnection.timeseries_collections,
425+
ping_clients_interval: Config.ping_clients_interval,
425426
}
426427
res.end(JSON.stringify(res2));
427428
} catch (error) {

OpenFlow/src/WebSocketServer.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export class WebSocketServer {
7979
}) // "agent", "clientid"
8080
}
8181
// setInterval(this.pingClients, 10000);
82-
setTimeout(this.pingClients.bind(this), 10000);
82+
setTimeout(this.pingClients.bind(this), Config.ping_clients_interval);
8383
} catch (error) {
8484
span?.recordException(error);
8585
Logger.instanse.error(error);
@@ -89,6 +89,7 @@ export class WebSocketServer {
8989
}
9090

9191
}
92+
private static lastUserUpdate = Date.now();
9293
private static async pingClients(): Promise<void> {
9394
const span: Span = (Config.otel_trace_pingclients ? Logger.otel.startSpan("WebSocketServer.pingClients") : null);
9495
try {
@@ -183,10 +184,12 @@ export class WebSocketServer {
183184
console.error(error);
184185
}
185186
}
187+
186188
if (bulkUpdates.length > 0) {
189+
this.lastUserUpdate = Date.now();
187190
let ot_end: any = Logger.otel.startTimer();
188191
var bulkresult = await Config.db.db.collection("users").bulkWrite(bulkUpdates);
189-
Logger.otel.endTimer(ot_end, DatabaseConnection.mongodb_update, { collection: "users" });
192+
Logger.otel.endTimer(ot_end, DatabaseConnection.mongodb_updatemany, { collection: "users" });
190193
}
191194

192195
if (!NoderedUtil.IsNullUndefinded(WebSocketServer.p_all)) {
@@ -201,7 +204,7 @@ export class WebSocketServer {
201204
Logger.instanse.error(error);
202205
} finally {
203206
Logger.otel.endSpan(span);
204-
setTimeout(this.pingClients.bind(this), 10000);
207+
setTimeout(this.pingClients.bind(this), Config.ping_clients_interval);
205208
}
206209
}
207210
}

OpenFlow/src/public/Controllers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4638,7 +4638,7 @@ export class ClientsCtrl extends entitiesCtrl<unattendedclient> {
46384638
if (this.show == "webapp") this.basequery = { "_webheartbeat": { "$exists": true } };
46394639
if (this.show == "all") this.basequery = { _heartbeat: { "$exists": true } };
46404640
} else {
4641-
dt.setMinutes(dt.getMinutes() - 1);
4641+
dt.setMilliseconds(dt.getMilliseconds() - (WebSocketClientService.ping_clients_interval + 20000));
46424642
this.basequery = { "$or": [] };
46434643
if (this.show == "openrpa") this.basequery = { "_rpaheartbeat": { "$gte": dt } };
46444644
if (this.show == "nodered") this.basequery = { "_noderedheartbeat": { "$gte": dt } };

OpenFlow/src/public/WebSocketClientService.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export class WebSocketClientService {
4343
if (data.collections_with_text_index) this.collections_with_text_index = data.collections_with_text_index;
4444
if (data.timeseries_collections) this.timeseries_collections = data.timeseries_collections;
4545

46+
this.ping_clients_interval = data.ping_clients_interval;
47+
48+
4649

4750
if (NoderedUtil.IsNullUndefinded(WebSocketClient.instance)) {
4851
const cli: WebSocketClient = new WebSocketClient(this.logger, wsurl);
@@ -182,6 +185,7 @@ export class WebSocketClientService {
182185
public enable_web_tours: boolean;
183186
public collections_with_text_index: string[] = [];
184187
public timeseries_collections: string[] = [];
188+
public ping_clients_interval: number = 10000;
185189

186190
getJSON(url: string, callback: any): void {
187191
const xhr: XMLHttpRequest = new XMLHttpRequest();

0 commit comments

Comments
 (0)