diff options
Diffstat (limited to 'server/models')
-rw-r--r-- | server/models/request.js | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/server/models/request.js b/server/models/request.js index cd52ea767..baa26fc1b 100644 --- a/server/models/request.js +++ b/server/models/request.js | |||
@@ -118,13 +118,8 @@ function makeRequest (toPod, requestEndpoint, requestsToMake, callback) { | |||
118 | // The function fire some useful callbacks | 118 | // The function fire some useful callbacks |
119 | requests.makeSecureRequest(params, function (err, res) { | 119 | requests.makeSecureRequest(params, function (err, res) { |
120 | if (err || (res.statusCode !== 200 && res.statusCode !== 201 && res.statusCode !== 204)) { | 120 | if (err || (res.statusCode !== 200 && res.statusCode !== 201 && res.statusCode !== 204)) { |
121 | logger.error( | 121 | err = err ? err.message : 'Status code not 20x : ' + res.statusCode |
122 | 'Error sending secure request to %s pod.', | 122 | logger.error('Error sending secure request to %s pod.', toPod.host, { error: err }) |
123 | toPod.host, | ||
124 | { | ||
125 | error: err ? err.message : 'Status code not 20x : ' + res.statusCode | ||
126 | } | ||
127 | ) | ||
128 | 123 | ||
129 | return callback(false) | 124 | return callback(false) |
130 | } | 125 | } |
@@ -153,26 +148,7 @@ function makeRequests () { | |||
153 | } | 148 | } |
154 | 149 | ||
155 | // We want to group requests by destinations pod and endpoint | 150 | // We want to group requests by destinations pod and endpoint |
156 | const requestsToMakeGrouped = {} | 151 | const requestsToMakeGrouped = buildRequestObjects(requests) |
157 | Object.keys(requests).forEach(function (toPodId) { | ||
158 | requests[toPodId].forEach(function (data) { | ||
159 | const request = data.request | ||
160 | const pod = data.pod | ||
161 | const hashKey = toPodId + request.endpoint | ||
162 | |||
163 | if (!requestsToMakeGrouped[hashKey]) { | ||
164 | requestsToMakeGrouped[hashKey] = { | ||
165 | toPod: pod, | ||
166 | endpoint: request.endpoint, | ||
167 | ids: [], // request ids, to delete them from the DB in the future | ||
168 | datas: [] // requests data, | ||
169 | } | ||
170 | } | ||
171 | |||
172 | requestsToMakeGrouped[hashKey].ids.push(request.id) | ||
173 | requestsToMakeGrouped[hashKey].datas.push(request.request) | ||
174 | }) | ||
175 | }) | ||
176 | 152 | ||
177 | logger.info('Making requests to friends.') | 153 | logger.info('Making requests to friends.') |
178 | 154 | ||
@@ -188,22 +164,20 @@ function makeRequests () { | |||
188 | const requestIdsToDelete = requestToMake.ids | 164 | const requestIdsToDelete = requestToMake.ids |
189 | 165 | ||
190 | logger.info('Removing %d requests of unexisting pod %s.', requestIdsToDelete.length, requestToMake.toPod.id) | 166 | logger.info('Removing %d requests of unexisting pod %s.', requestIdsToDelete.length, requestToMake.toPod.id) |
191 | RequestToPod.removePodOf.call(self, requestIdsToDelete, requestToMake.toPod.id) | 167 | return RequestToPod.removePodOf(requestIdsToDelete, requestToMake.toPod.id, callbackEach) |
192 | return callbackEach() | ||
193 | } | 168 | } |
194 | 169 | ||
195 | makeRequest(toPod, requestToMake.endpoint, requestToMake.datas, function (success) { | 170 | makeRequest(toPod, requestToMake.endpoint, requestToMake.datas, function (success) { |
196 | if (success === true) { | 171 | if (success === false) { |
197 | logger.debug('Removing requests for pod %s.', requestToMake.toPod.id, { requestsIds: requestToMake.ids }) | ||
198 | |||
199 | goodPods.push(requestToMake.toPod.id) | ||
200 | |||
201 | // Remove the pod id of these request ids | ||
202 | RequestToPod.removePodOf(requestToMake.ids, requestToMake.toPod.id, callbackEach) | ||
203 | } else { | ||
204 | badPods.push(requestToMake.toPod.id) | 172 | badPods.push(requestToMake.toPod.id) |
205 | callbackEach() | 173 | return callbackEach() |
206 | } | 174 | } |
175 | |||
176 | logger.debug('Removing requests for pod %s.', requestToMake.toPod.id, { requestsIds: requestToMake.ids }) | ||
177 | goodPods.push(requestToMake.toPod.id) | ||
178 | |||
179 | // Remove the pod id of these request ids | ||
180 | RequestToPod.removePodOf(requestToMake.ids, requestToMake.toPod.id, callbackEach) | ||
207 | }) | 181 | }) |
208 | }, function () { | 182 | }, function () { |
209 | // All the requests were made, we update the pods score | 183 | // All the requests were made, we update the pods score |
@@ -216,6 +190,32 @@ function makeRequests () { | |||
216 | }) | 190 | }) |
217 | } | 191 | } |
218 | 192 | ||
193 | function buildRequestObjects (requests) { | ||
194 | const requestsToMakeGrouped = {} | ||
195 | |||
196 | Object.keys(requests).forEach(function (toPodId) { | ||
197 | requests[toPodId].forEach(function (data) { | ||
198 | const request = data.request | ||
199 | const pod = data.pod | ||
200 | const hashKey = toPodId + request.endpoint | ||
201 | |||
202 | if (!requestsToMakeGrouped[hashKey]) { | ||
203 | requestsToMakeGrouped[hashKey] = { | ||
204 | toPod: pod, | ||
205 | endpoint: request.endpoint, | ||
206 | ids: [], // request ids, to delete them from the DB in the future | ||
207 | datas: [] // requests data, | ||
208 | } | ||
209 | } | ||
210 | |||
211 | requestsToMakeGrouped[hashKey].ids.push(request.id) | ||
212 | requestsToMakeGrouped[hashKey].datas.push(request.request) | ||
213 | }) | ||
214 | }) | ||
215 | |||
216 | return requestsToMakeGrouped | ||
217 | } | ||
218 | |||
219 | // Remove pods with a score of 0 (too many requests where they were unreachable) | 219 | // Remove pods with a score of 0 (too many requests where they were unreachable) |
220 | function removeBadPods () { | 220 | function removeBadPods () { |
221 | const self = this | 221 | const self = this |