Fixed error handling after network code rework
This commit is contained in:
parent
28b3a695dc
commit
3d208cf7d9
1 changed files with 9 additions and 9 deletions
18
lib/api.js
18
lib/api.js
|
@ -33,7 +33,6 @@ async function queue_processor() {
|
||||||
const before = new Date();
|
const before = new Date();
|
||||||
await send_this(queue.dequeue().element);
|
await send_this(queue.dequeue().element);
|
||||||
const duration = new Date() - before;
|
const duration = new Date() - before;
|
||||||
console.log(before.toISOString(), new Date().toISOString(), duration);
|
|
||||||
if (duration < 400) { // 333 should work, but 400 should still allow some manual requests to go through during development
|
if (duration < 400) { // 333 should work, but 400 should still allow some manual requests to go through during development
|
||||||
await sleep(400 - duration);
|
await sleep(400 - duration);
|
||||||
}
|
}
|
||||||
|
@ -90,10 +89,11 @@ async function send_this(data) {
|
||||||
}
|
}
|
||||||
fs.writeFileSync('log', JSON.stringify({event: 'send', date: new Date(), data: data}) + '\n', {flag: 'a+'});
|
fs.writeFileSync('log', JSON.stringify({event: 'send', date: new Date(), data: data}) + '\n', {flag: 'a+'});
|
||||||
let response = await fetch(`https://api.spacetraders.io/v2${data.request.endpoint}`, options);
|
let response = await fetch(`https://api.spacetraders.io/v2${data.request.endpoint}`, options);
|
||||||
if (response.ok) {
|
try {
|
||||||
response = await response.json();
|
response = await response.json();
|
||||||
switch(response.error?.code) {
|
switch(response.error?.code) {
|
||||||
//case 401: // TODO 401 means a server reset happened
|
//case 401: // TODO 401 means a server reset happened
|
||||||
|
// TODO reject all promises in queue
|
||||||
// close database file
|
// close database file
|
||||||
// rm database file
|
// rm database file
|
||||||
// logrotate
|
// logrotate
|
||||||
|
@ -103,17 +103,17 @@ async function send_this(data) {
|
||||||
backoffSeconds = response.error.data.retryAfter;
|
backoffSeconds = response.error.data.retryAfter;
|
||||||
queue.enqueue(data, 1);
|
queue.enqueue(data, 1);
|
||||||
break;
|
break;
|
||||||
default: // no error!
|
|
||||||
fs.writeFileSync('log', JSON.stringify({event: 'response', date: new Date(), data: response}) + '\n', {flag: 'a+'});
|
|
||||||
return data.resolve(response);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fs.writeFileSync('log', JSON.stringify({event: 'error', date: new Date(), data: response}) + '\n', {flag: 'a+'});
|
|
||||||
switch(response.cause?.code) {
|
|
||||||
case 503: // 503 means maintenance mode, let's hold back for 1 minute
|
case 503: // 503 means maintenance mode, let's hold back for 1 minute
|
||||||
backoffSeconds = 60;
|
backoffSeconds = 60;
|
||||||
queue.enqueue(data, 1);
|
queue.enqueue(data, 1);
|
||||||
break;
|
break;
|
||||||
|
default: // no error!
|
||||||
|
fs.writeFileSync('log', JSON.stringify({event: 'response', date: new Date(), data: response}) + '\n', {flag: 'a+'});
|
||||||
|
return data.resolve(response);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
fs.writeFileSync('log', JSON.stringify({event: 'error', date: new Date(), data: err}) + '\n', {flag: 'a+'});
|
||||||
|
switch(err.cause?.code) {
|
||||||
case 'EAI_AGAIN': // DNS lookup timed out error, let's hold back for 5 seconds
|
case 'EAI_AGAIN': // DNS lookup timed out error, let's hold back for 5 seconds
|
||||||
backoffSeconds = 5;
|
backoffSeconds = 5;
|
||||||
queue.enqueue(data, 1);
|
queue.enqueue(data, 1);
|
||||||
|
|
Loading…
Add table
Reference in a new issue