MCPcopy
hub / github.com/redis/node-redis / steadyState

Function steadyState

packages/client/lib/sentinel/index.spec.ts:720–767  ·  view source on GitHub ↗
(frame: SentinelFramework)

Source from the content-addressed store, hash-verified

718});
719
720async function steadyState(frame: SentinelFramework) {
721 // wait a bit to ensure that sentinels are seeing eachother
722 await setTimeout(2000)
723 let checkedMaster = false;
724 let checkedReplicas = false;
725 while (!checkedMaster || !checkedReplicas) {
726 if (!checkedMaster) {
727 const master = await frame.sentinelMaster();
728 if (master?.flags === 'master') {
729 checkedMaster = true;
730 }
731 }
732 if (!checkedReplicas) {
733 const replicas = (await frame.sentinelReplicas());
734 checkedReplicas = true;
735 for (const replica of replicas!) {
736 checkedReplicas &&= (replica.flags === 'slave');
737 }
738 }
739 }
740 let nodeResolve;
741 const nodePromise = new Promise(res => {
742 nodeResolve = res;
743 })
744 const seenNodes = new Set<number>();
745 let sentinel: RedisSentinelType<RedisModules, RedisFunctions, RedisScripts, RespVersions, TypeMapping> | undefined;
746 const tracer = [];
747 try {
748 sentinel = frame.getSentinelClient({ replicaPoolSize: 1, scanInterval: 2000 }, false)
749 .on('topology-change', (event: RedisSentinelEvent) => {
750 if (event.type == "MASTER_CHANGE" || event.type == "REPLICA_ADD") {
751 seenNodes.add(event.node.port);
752 if (seenNodes.size == frame.getAllNodesPort().length) {
753 nodeResolve();
754 }
755 }
756 }).on('error', () => { });
757 sentinel.setTracer(tracer);
758 await sentinel.connect();
759 await nodePromise;
760
761 await sentinel.flushAll();
762 } finally {
763 if (sentinel !== undefined) {
764 sentinel.destroy();
765 }
766 }
767}
768
769describe('legacy tests', () => {
770 const config: RedisSentinelConfig = { sentinelName: "test", numberOfNodes: 3, password: undefined };

Callers 1

index.spec.tsFile · 0.85

Calls 9

sentinelMasterMethod · 0.80
sentinelReplicasMethod · 0.80
flushAllMethod · 0.80
getSentinelClientMethod · 0.65
addMethod · 0.65
getAllNodesPortMethod · 0.65
destroyMethod · 0.65
setTracerMethod · 0.45
connectMethod · 0.45

Tested by

no test coverage detected