feat: map cleanup, process duration
This commit is contained in:
@@ -454,7 +454,10 @@ function isValidUrl(str: string): boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const processAirtableUpdates = async () => {
|
export const processAirtableUpdates = async () => {
|
||||||
while (true) {
|
const maxProcessingTime = 60000;
|
||||||
|
const startTime = Date.now();
|
||||||
|
|
||||||
|
while (Date.now() - startTime < maxProcessingTime) {
|
||||||
let hasPendingTasks = false;
|
let hasPendingTasks = false;
|
||||||
|
|
||||||
for (const runId in airtableUpdateTasks) {
|
for (const runId in airtableUpdateTasks) {
|
||||||
@@ -467,7 +470,6 @@ export const processAirtableUpdates = async () => {
|
|||||||
try {
|
try {
|
||||||
await updateAirtable(task.robotId, task.runId);
|
await updateAirtable(task.robotId, task.runId);
|
||||||
console.log(`Successfully updated Airtable for runId: ${runId}`);
|
console.log(`Successfully updated Airtable for runId: ${runId}`);
|
||||||
airtableUpdateTasks[runId].status = 'completed';
|
|
||||||
delete airtableUpdateTasks[runId];
|
delete airtableUpdateTasks[runId];
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(`Failed to update Airtable for run ${task.runId}:`, error);
|
console.error(`Failed to update Airtable for run ${task.runId}:`, error);
|
||||||
@@ -476,11 +478,12 @@ export const processAirtableUpdates = async () => {
|
|||||||
airtableUpdateTasks[runId].retries += 1;
|
airtableUpdateTasks[runId].retries += 1;
|
||||||
console.log(`Retrying task for runId: ${runId}, attempt: ${task.retries + 1}`);
|
console.log(`Retrying task for runId: ${runId}, attempt: ${task.retries + 1}`);
|
||||||
} else {
|
} else {
|
||||||
airtableUpdateTasks[runId].status = 'failed';
|
console.log(`Max retries reached for runId: ${runId}. Removing task.`);
|
||||||
console.log(`Max retries reached for runId: ${runId}. Marking task as failed.`);
|
delete airtableUpdateTasks[runId];
|
||||||
logger.log('error', `Permanent failure for run ${runId}: ${error.message}`);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (task.status === 'completed' || task.status === 'failed') {
|
||||||
|
delete airtableUpdateTasks[runId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,4 +495,6 @@ export const processAirtableUpdates = async () => {
|
|||||||
console.log('Waiting for 5 seconds before checking again...');
|
console.log('Waiting for 5 seconds before checking again...');
|
||||||
await new Promise(resolve => setTimeout(resolve, 5000));
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Airtable processing completed or timed out');
|
||||||
};
|
};
|
||||||
@@ -286,8 +286,12 @@ export async function writeDataToSheet(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const processGoogleSheetUpdates = async () => {
|
export const processGoogleSheetUpdates = async () => {
|
||||||
while (true) {
|
const maxProcessingTime = 60000;
|
||||||
|
const startTime = Date.now();
|
||||||
|
|
||||||
|
while (Date.now() - startTime < maxProcessingTime) {
|
||||||
let hasPendingTasks = false;
|
let hasPendingTasks = false;
|
||||||
|
|
||||||
for (const runId in googleSheetUpdateTasks) {
|
for (const runId in googleSheetUpdateTasks) {
|
||||||
const task = googleSheetUpdateTasks[runId];
|
const task = googleSheetUpdateTasks[runId];
|
||||||
console.log(`Processing task for runId: ${runId}, status: ${task.status}`);
|
console.log(`Processing task for runId: ${runId}, status: ${task.status}`);
|
||||||
@@ -297,7 +301,6 @@ export const processGoogleSheetUpdates = async () => {
|
|||||||
try {
|
try {
|
||||||
await updateGoogleSheet(task.robotId, task.runId);
|
await updateGoogleSheet(task.robotId, task.runId);
|
||||||
console.log(`Successfully updated Google Sheet for runId: ${runId}`);
|
console.log(`Successfully updated Google Sheet for runId: ${runId}`);
|
||||||
googleSheetUpdateTasks[runId].status = 'completed';
|
|
||||||
delete googleSheetUpdateTasks[runId];
|
delete googleSheetUpdateTasks[runId];
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error(`Failed to update Google Sheets for run ${task.runId}:`, error);
|
console.error(`Failed to update Google Sheets for run ${task.runId}:`, error);
|
||||||
@@ -305,10 +308,12 @@ export const processGoogleSheetUpdates = async () => {
|
|||||||
googleSheetUpdateTasks[runId].retries += 1;
|
googleSheetUpdateTasks[runId].retries += 1;
|
||||||
console.log(`Retrying task for runId: ${runId}, attempt: ${task.retries}`);
|
console.log(`Retrying task for runId: ${runId}, attempt: ${task.retries}`);
|
||||||
} else {
|
} else {
|
||||||
googleSheetUpdateTasks[runId].status = 'failed';
|
console.log(`Max retries reached for runId: ${runId}. Removing task.`);
|
||||||
console.log(`Max retries reached for runId: ${runId}. Marking task as failed.`);
|
delete googleSheetUpdateTasks[runId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (task.status === 'completed' || task.status === 'failed') {
|
||||||
|
delete googleSheetUpdateTasks[runId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,4 +325,6 @@ export const processGoogleSheetUpdates = async () => {
|
|||||||
console.log('Waiting for 5 seconds before checking again...');
|
console.log('Waiting for 5 seconds before checking again...');
|
||||||
await new Promise(resolve => setTimeout(resolve, 5000));
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Google Sheets processing completed or timed out');
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user