|
15 | 15 | /** Get a json payload from the LNT server asynchronously or error.
|
16 | 16 | * @param {string} payload_url JSON payloads URL.
|
17 | 17 | */
|
18 |
| - function getValue(payload_url) { |
| 18 | + function getValue(payload_url, retries) { |
19 | 19 | var response = $.ajax({
|
20 | 20 | url: payload_url,
|
21 | 21 | async: false,
|
22 | 22 | cache: false,
|
23 |
| - timeout: 60000, // Make all requests timeout after a minute. |
| 23 | + timeout: 60000 // Make all requests timeout after a minute. |
24 | 24 | });
|
25 |
| - |
| 25 | + if (retries > 0 && response.status >= 500) { |
| 26 | + tableau.reportProgress("Error: Retrying because of 5xx error code."); |
| 27 | + return getValue(payload_url, retries-1); |
| 28 | + } |
26 | 29 | if (response.status >= 400) {
|
27 | 30 | var error_msg = "Requesting data from LNT failed with:\n\n HTTP " +
|
28 | 31 | response.status + ": " + response.responseText + "\n\nURL: " +
|
29 |
| - payload_url |
| 32 | + payload_url; |
30 | 33 | tableau.abortWithError(error_msg);
|
31 | 34 | throw new Error(error_msg);
|
32 | 35 | }
|
|
36 | 39 |
|
37 | 40 | function get_matching_machines(regexp) {
|
38 | 41 | const name_regexp = new RegExp(regexp);
|
39 |
| - var resp = getValue(ts_url + "/machines/"); |
| 42 | + var resp = getValue(ts_url + "/machines/", 3); |
40 | 43 | var machines = resp.machines;
|
41 | 44 | return machines.filter(function (name_ids) {
|
42 | 45 | return name_regexp.test(name_ids.name);
|
|
48 | 51 | var search_info = JSON.parse(tableau.connectionData);
|
49 | 52 | tableau.reportProgress("Getting Schema from LNT.");
|
50 | 53 |
|
51 |
| - var field_info = getValue(ts_url + "/fields/"); |
| 54 | + var field_info = getValue(ts_url + "/fields/", 3); |
52 | 55 | var fields = field_info.fields;
|
53 | 56 |
|
54 | 57 | // Lookup machines of interest, and gather run fields.
|
|
61 | 64 | }
|
62 | 65 |
|
63 | 66 | machine_infos.forEach(function (machine) {
|
64 |
| - var machines_run_data = getValue(ts_url + "/machines/" + machine.id) |
| 67 | + var machines_run_data = getValue(ts_url + "/machines/" + machine.id, 3); |
65 | 68 | // Grab the last run_info.
|
66 | 69 | // If fields were added over time, it should have the most.
|
67 | 70 | var final_run_info = machines_run_data.runs[machines_run_data.runs.length - 1];
|
|
197 | 200 | var submission_batch_size = 10000;
|
198 | 201 | var total_fetched = 1;
|
199 | 202 | machine_names.forEach(function (machine) {
|
200 |
| - var machines_run_data = getValue(ts_url + "/machines/" + machine.id) |
| 203 | + var machines_run_data = getValue(ts_url + "/machines/" + machine.id, 3); |
201 | 204 |
|
202 | 205 | machines_run_data.runs.forEach(function(run_info){
|
203 | 206 | // Incremental support.
|
|
257 | 260 | tableau.reportProgress(status_msg);
|
258 | 261 | }
|
259 | 262 |
|
260 |
| - run_data = getValue(ts_url + "/runs/" + run_id); |
| 263 | + run_data = getValue(ts_url + "/runs/" + run_id, 3); |
261 | 264 |
|
262 | 265 | run_data.tests.forEach(function (element) {
|
263 | 266 | element.test_name = element.name;
|
|
0 commit comments