Skip to content

Commit 4ac7a9e

Browse files
authored
fix: Load from buckets not hard fail (#729)
This is needed in case any of the buckets returns errors, to not spin endlessly and load some part of the ci-badges.
1 parent 83d8700 commit 4ac7a9e

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

‎static/js/dashboard.v2.js‎

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,7 +1349,8 @@ function getBadges (xmlText, bucket_url, badge_set) {
13491349
var xmlDoc = parser.parseFromString(xmlText, 'application/xml')
13501350
const errorNode = xmlDoc.querySelector('parsererror')
13511351
if (errorNode) {
1352-
return
1352+
console.warn('Failed to parse bucket listing XML:', bucket_url)
1353+
return []
13531354
}
13541355

13551356
var badges = []
@@ -1457,21 +1458,25 @@ function getBucketOptions (input) {
14571458
}
14581459

14591460
function fetchBucketBadges(bucket, inputs) {
1460-
return new Promise((resolve, reject) => {
1461-
let req = new XMLHttpRequest();
1462-
const options = getBucketOptions(inputs);
1463-
req.open('GET', bucket);
1461+
return new Promise(function (resolve) {
1462+
var req = new XMLHttpRequest()
1463+
const options = getBucketOptions(inputs)
1464+
req.open('GET', bucket)
14641465
req.onload = function () {
1465-
if (req.status == 200) {
1466-
const badges = getBadges(req.responseText, bucket, options.get('sets'))
1467-
resolve(badges);
1466+
if (req.status === 200) {
1467+
const badges = getBadges(req.responseText, bucket, options.get('sets')) || []
1468+
resolve(badges)
14681469
} else {
1469-
console.error('Error: ' + req.status);
1470-
reject('Error: ' + req.status);
1470+
console.warn('CI badge bucket unavailable:', bucket, '(HTTP', req.status + ')')
1471+
resolve([])
14711472
}
1472-
};
1473-
req.send();
1474-
});
1473+
}
1474+
req.onerror = function () {
1475+
console.warn('CI badge bucket request failed:', bucket)
1476+
resolve([])
1477+
}
1478+
req.send()
1479+
})
14751480
}
14761481

14771482
function obtainBadgesFromSample (inputs) {
@@ -1515,18 +1520,17 @@ function obtainBadges (inputs) {
15151520
}
15161521

15171522
Promise.all(badgePromises)
1518-
.then((results) => {
1519-
const allBadges = [];
1520-
for (const badges of results) {
1521-
console.log("Got "+badges.length+" badges")
1522-
allBadges.push(...badges);
1523-
}
1523+
.then(function (results) {
1524+
const allBadges = []
1525+
results.forEach(function (badges) {
1526+
if (badges && badges.length > 0) {
1527+
console.log('Got ' + badges.length + ' badges')
1528+
}
1529+
allBadges.push.apply(allBadges, badges || [])
1530+
})
15241531

1525-
console.log('All badges:', allBadges);
1532+
console.log('All badges:', allBadges)
15261533

15271534
processBadges(allBadges, options)
15281535
})
1529-
.catch((error) => {
1530-
console.error('Error:', error);
1531-
});
15321536
}

0 commit comments

Comments
 (0)