Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/sync/node_modules/ioredis/built/connectors/SentinelConnector/ drwxr-xr-x | |
| Viewing file: Select action/file-type: "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FailoverDetector = void 0;
const utils_1 = require("../../utils");
const debug = (0, utils_1.Debug)("FailoverDetector");
const CHANNEL_NAME = "+switch-master";
class FailoverDetector {
// sentinels can't be used for regular commands after this
constructor(connector, sentinels) {
this.isDisconnected = false;
this.connector = connector;
this.sentinels = sentinels;
}
cleanup() {
this.isDisconnected = true;
for (const sentinel of this.sentinels) {
sentinel.client.disconnect();
}
}
async subscribe() {
debug("Starting FailoverDetector");
const promises = [];
for (const sentinel of this.sentinels) {
const promise = sentinel.client.subscribe(CHANNEL_NAME).catch((err) => {
debug("Failed to subscribe to failover messages on sentinel %s:%s (%s)", sentinel.address.host || "127.0.0.1", sentinel.address.port || 26739, err.message);
});
promises.push(promise);
sentinel.client.on("message", (channel) => {
if (!this.isDisconnected && channel === CHANNEL_NAME) {
this.disconnect();
}
});
}
await Promise.all(promises);
}
disconnect() {
// Avoid disconnecting more than once per failover.
// A new FailoverDetector will be created after reconnecting.
this.isDisconnected = true;
debug("Failover detected, disconnecting");
// Will call this.cleanup()
this.connector.disconnect();
}
}
exports.FailoverDetector = FailoverDetector;
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0291 ]-- |