MCPcopy
hub / github.com/mongodb/node-mongodb-native / processWaitQueue

Function processWaitQueue

src/sdam/topology.ts:948–1090  ·  src/sdam/topology.ts::processWaitQueue
(topology: Topology)

Source from the content-addressed store, hash-verified

946}
947
948function processWaitQueue(topology: Topology) {
949 if (topology.s.state === STATE_CLOSED) {
950 drainWaitQueue(topology.waitQueue, new MongoTopologyClosedError());
951 return;
952 }
953
954 const isSharded = topology.description.type === TopologyType.Sharded;
955 const serverDescriptions = Array.from(topology.description.servers.values());
956 const membersToProcess = topology.waitQueue.length;
957 for (let i = 0; i < membersToProcess; ++i) {
958 const waitQueueMember = topology.waitQueue.shift();
959 if (!waitQueueMember) {
960 continue;
961 }
962
963 if (waitQueueMember.cancelled) {
964 continue;
965 }
966
967 let selectedDescriptions;
968 try {
969 const serverSelector = waitQueueMember.serverSelector;
970 const deprioritizedServers = waitQueueMember.deprioritizedServers;
971 selectedDescriptions = serverSelector
972 ? serverSelector(topology.description, serverDescriptions, deprioritizedServers)
973 : serverDescriptions;
974 } catch (selectorError) {
975 if (
976 topology.client.mongoLogger?.willLog(
977 MongoLoggableComponent.SERVER_SELECTION,
978 SeverityLevel.DEBUG
979 )
980 ) {
981 topology.client.mongoLogger?.debug(
982 MongoLoggableComponent.SERVER_SELECTION,
983 new ServerSelectionFailedEvent(
984 waitQueueMember.serverSelector,
985 topology.description,
986 selectorError,
987 waitQueueMember.operationName
988 )
989 );
990 }
991 waitQueueMember.reject(selectorError);
992 continue;
993 }
994
995 let selectedServer: Server | undefined;
996 if (selectedDescriptions.length === 0) {
997 if (!waitQueueMember.waitingLogged) {
998 if (
999 topology.client.mongoLogger?.willLog(
1000 MongoLoggableComponent.SERVER_SELECTION,
1001 SeverityLevel.INFORMATIONAL
1002 )
1003 ) {
1004 topology.client.mongoLogger?.info(
1005 MongoLoggableComponent.SERVER_SELECTION,

Callers 2

selectServerMethod · 0.85
serverUpdateHandlerMethod · 0.85

Calls 11

processTimeMSFunction · 0.90
shuffleFunction · 0.90
drainWaitQueueFunction · 0.85
willLogMethod · 0.80
rejectMethod · 0.80
infoMethod · 0.80
pinServerMethod · 0.80
shiftMethod · 0.45
pushMethod · 0.45
getMethod · 0.45
requestCheckMethod · 0.45

Tested by

no test coverage detected