@riddix/hamh 2.1.0-alpha.518 → 2.1.0-alpha.519
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/backend/cli.js
CHANGED
|
@@ -166866,7 +166866,7 @@ function ensureCommissioningConfig(server) {
|
|
|
166866
166866
|
|
|
166867
166867
|
// src/services/bridges/bridge.ts
|
|
166868
166868
|
var AUTO_FORCE_SYNC_INTERVAL_MS = 9e4;
|
|
166869
|
-
var DEAD_SESSION_TIMEOUT_MS =
|
|
166869
|
+
var DEAD_SESSION_TIMEOUT_MS = 6e4;
|
|
166870
166870
|
var Bridge = class {
|
|
166871
166871
|
constructor(env, logger203, dataProvider, endpointManager) {
|
|
166872
166872
|
this.dataProvider = dataProvider;
|
|
@@ -166890,6 +166890,7 @@ var Bridge = class {
|
|
|
166890
166890
|
onStatusChange;
|
|
166891
166891
|
autoForceSyncTimer = null;
|
|
166892
166892
|
deadSessionTimer = null;
|
|
166893
|
+
staleSessionTimers = /* @__PURE__ */ new Map();
|
|
166893
166894
|
// Tracks the last synced state JSON per entity to avoid pushing unchanged states.
|
|
166894
166895
|
// Key: entity_id, Value: JSON.stringify of entity.state
|
|
166895
166896
|
lastSyncedStates = /* @__PURE__ */ new Map();
|
|
@@ -167082,6 +167083,18 @@ ${e?.toString()}`);
|
|
|
167082
167083
|
"Subscriptions recovered, canceled dead session cleanup"
|
|
167083
167084
|
);
|
|
167084
167085
|
}
|
|
167086
|
+
if (session.subscriptions.size === 0 && !this.staleSessionTimers.has(session.id)) {
|
|
167087
|
+
this.staleSessionTimers.set(
|
|
167088
|
+
session.id,
|
|
167089
|
+
setTimeout(() => {
|
|
167090
|
+
this.staleSessionTimers.delete(session.id);
|
|
167091
|
+
this.closeStaleSession(session.id);
|
|
167092
|
+
}, DEAD_SESSION_TIMEOUT_MS)
|
|
167093
|
+
);
|
|
167094
|
+
} else if (session.subscriptions.size > 0 && this.staleSessionTimers.has(session.id)) {
|
|
167095
|
+
clearTimeout(this.staleSessionTimers.get(session.id));
|
|
167096
|
+
this.staleSessionTimers.delete(session.id);
|
|
167097
|
+
}
|
|
167085
167098
|
};
|
|
167086
167099
|
sessionManager.subscriptionsChanged.on(this.sessionDiagHandler);
|
|
167087
167100
|
this.sessionAddedHandler = (newSession) => {
|
|
@@ -167109,6 +167122,22 @@ ${e?.toString()}`);
|
|
|
167109
167122
|
} catch {
|
|
167110
167123
|
}
|
|
167111
167124
|
}
|
|
167125
|
+
closeStaleSession(sessionId) {
|
|
167126
|
+
try {
|
|
167127
|
+
const sessionManager = this.server.env.get(SessionManager);
|
|
167128
|
+
for (const s of [...sessionManager.sessions]) {
|
|
167129
|
+
if (s.id === sessionId && !s.isClosing && s.subscriptions.size === 0) {
|
|
167130
|
+
this.log.warn(
|
|
167131
|
+
`Force-closing stale session ${s.id} (peer ${s.peerNodeId}, no subscriptions for ${DEAD_SESSION_TIMEOUT_MS / 1e3}s)`
|
|
167132
|
+
);
|
|
167133
|
+
s.initiateForceClose().catch(() => {
|
|
167134
|
+
});
|
|
167135
|
+
break;
|
|
167136
|
+
}
|
|
167137
|
+
}
|
|
167138
|
+
} catch {
|
|
167139
|
+
}
|
|
167140
|
+
}
|
|
167112
167141
|
closeDeadSessions() {
|
|
167113
167142
|
try {
|
|
167114
167143
|
const sessionManager = this.server.env.get(SessionManager);
|
|
@@ -167146,6 +167175,10 @@ ${e?.toString()}`);
|
|
|
167146
167175
|
clearTimeout(this.deadSessionTimer);
|
|
167147
167176
|
this.deadSessionTimer = null;
|
|
167148
167177
|
}
|
|
167178
|
+
for (const timer of this.staleSessionTimers.values()) {
|
|
167179
|
+
clearTimeout(timer);
|
|
167180
|
+
}
|
|
167181
|
+
this.staleSessionTimers.clear();
|
|
167149
167182
|
}
|
|
167150
167183
|
stopAutoForceSync() {
|
|
167151
167184
|
if (this.autoForceSyncTimer) {
|
|
@@ -179545,7 +179578,7 @@ function hashAreaId(areaId) {
|
|
|
179545
179578
|
// src/services/bridges/server-mode-bridge.ts
|
|
179546
179579
|
init_dist();
|
|
179547
179580
|
var AUTO_FORCE_SYNC_INTERVAL_MS2 = 9e4;
|
|
179548
|
-
var DEAD_SESSION_TIMEOUT_MS2 =
|
|
179581
|
+
var DEAD_SESSION_TIMEOUT_MS2 = 6e4;
|
|
179549
179582
|
var ServerModeBridge = class {
|
|
179550
179583
|
constructor(logger203, dataProvider, endpointManager, server) {
|
|
179551
179584
|
this.dataProvider = dataProvider;
|
|
@@ -179563,6 +179596,7 @@ var ServerModeBridge = class {
|
|
|
179563
179596
|
onStatusChange;
|
|
179564
179597
|
autoForceSyncTimer = null;
|
|
179565
179598
|
deadSessionTimer = null;
|
|
179599
|
+
staleSessionTimers = /* @__PURE__ */ new Map();
|
|
179566
179600
|
warmStartTimer = null;
|
|
179567
179601
|
// Tracks the last synced state JSON per entity to avoid pushing unchanged states.
|
|
179568
179602
|
lastSyncedState;
|
|
@@ -179760,6 +179794,18 @@ ${e?.toString()}`);
|
|
|
179760
179794
|
"Subscriptions recovered, canceled dead session cleanup"
|
|
179761
179795
|
);
|
|
179762
179796
|
}
|
|
179797
|
+
if (session.subscriptions.size === 0 && !this.staleSessionTimers.has(session.id)) {
|
|
179798
|
+
this.staleSessionTimers.set(
|
|
179799
|
+
session.id,
|
|
179800
|
+
setTimeout(() => {
|
|
179801
|
+
this.staleSessionTimers.delete(session.id);
|
|
179802
|
+
this.closeStaleSession(session.id);
|
|
179803
|
+
}, DEAD_SESSION_TIMEOUT_MS2)
|
|
179804
|
+
);
|
|
179805
|
+
} else if (session.subscriptions.size > 0 && this.staleSessionTimers.has(session.id)) {
|
|
179806
|
+
clearTimeout(this.staleSessionTimers.get(session.id));
|
|
179807
|
+
this.staleSessionTimers.delete(session.id);
|
|
179808
|
+
}
|
|
179763
179809
|
};
|
|
179764
179810
|
sessionManager.subscriptionsChanged.on(this.sessionDiagHandler);
|
|
179765
179811
|
this.sessionAddedHandler = (newSession) => {
|
|
@@ -179787,6 +179833,22 @@ ${e?.toString()}`);
|
|
|
179787
179833
|
} catch {
|
|
179788
179834
|
}
|
|
179789
179835
|
}
|
|
179836
|
+
closeStaleSession(sessionId) {
|
|
179837
|
+
try {
|
|
179838
|
+
const sessionManager = this.server.env.get(SessionManager);
|
|
179839
|
+
for (const s of [...sessionManager.sessions]) {
|
|
179840
|
+
if (s.id === sessionId && !s.isClosing && s.subscriptions.size === 0) {
|
|
179841
|
+
this.log.warn(
|
|
179842
|
+
`Force-closing stale session ${s.id} (peer ${s.peerNodeId}, no subscriptions for ${DEAD_SESSION_TIMEOUT_MS2 / 1e3}s)`
|
|
179843
|
+
);
|
|
179844
|
+
s.initiateForceClose().catch(() => {
|
|
179845
|
+
});
|
|
179846
|
+
break;
|
|
179847
|
+
}
|
|
179848
|
+
}
|
|
179849
|
+
} catch {
|
|
179850
|
+
}
|
|
179851
|
+
}
|
|
179790
179852
|
closeDeadSessions() {
|
|
179791
179853
|
try {
|
|
179792
179854
|
const sessionManager = this.server.env.get(SessionManager);
|
|
@@ -179824,6 +179886,10 @@ ${e?.toString()}`);
|
|
|
179824
179886
|
clearTimeout(this.deadSessionTimer);
|
|
179825
179887
|
this.deadSessionTimer = null;
|
|
179826
179888
|
}
|
|
179889
|
+
for (const timer of this.staleSessionTimers.values()) {
|
|
179890
|
+
clearTimeout(timer);
|
|
179891
|
+
}
|
|
179892
|
+
this.staleSessionTimers.clear();
|
|
179827
179893
|
}
|
|
179828
179894
|
stopAutoForceSync() {
|
|
179829
179895
|
if (this.autoForceSyncTimer) {
|