| 86 | |
| 87 | |
| 88 | extern "C" void freeClusterManager(void) { |
| 89 | listIter li; |
| 90 | listNode *ln; |
| 91 | if (cluster_manager.nodes != NULL) { |
| 92 | listRewind(cluster_manager.nodes,&li); |
| 93 | while ((ln = listNext(&li)) != NULL) { |
| 94 | clusterManagerNode *n = (clusterManagerNode*)ln->value; |
| 95 | freeClusterManagerNode(n); |
| 96 | } |
| 97 | listRelease(cluster_manager.nodes); |
| 98 | cluster_manager.nodes = NULL; |
| 99 | } |
| 100 | if (cluster_manager.errors != NULL) { |
| 101 | listRewind(cluster_manager.errors,&li); |
| 102 | while ((ln = listNext(&li)) != NULL) { |
| 103 | sds err = (sds)ln->value; |
| 104 | sdsfree(err); |
| 105 | } |
| 106 | listRelease(cluster_manager.errors); |
| 107 | cluster_manager.errors = NULL; |
| 108 | } |
| 109 | if (clusterManagerUncoveredSlots != NULL) |
| 110 | dictRelease(clusterManagerUncoveredSlots); |
| 111 | } |
| 112 | |
| 113 | /* This function returns a random master node, return NULL if none */ |
| 114 | static clusterManagerNode *clusterManagerNodeMasterRandom() { |
no test coverage detected