#Operation timed out after 30002 milliseconds with Functions - Completely random

1 messages · Page 1 of 1 (latest)

potent shuttle
#
  • Appwrite Version 1.5.5 selfhosted
  • Function Runtime Node.js 16.0
  • Timeout 240
  • .env: _APP_FUNCTIONS_TIMEOUT=1900
  • Angular 17

In the Appwrite function I use this admittedly somewhat larger method to create a collection with attributes:

async function newNotesCollection(title, res, log) {
  log('newNotesCollection');
  try {
    const response = await appwriteService.createCollection(title);
    log('after createCollection...');

    await appwriteService.createStringAttribute('message',response.$id, 2000);
    log('after createStringAttribute message...');
    await appwriteService.createStringAttribute('username',response.$id, 50);
    log('after createCollection username...');
    await appwriteService.createStringAttribute('userId',response.$id, 50);
    log('after createCollection userId...');
    await appwriteService.createNumberAttribute('date', response.$id, 50);
    log('after createCollection date...');

    let ready = false;

    while (!ready) {
      log('Attributes not ready....');
      ready = await appwriteService.newCollectionAttributesReady(response.$id,log);
      await delay(2000); // Warte 2 Sekunden, bevor du die Methode erneut aufrufst
    }

    log('Attributes ready.');

    return res.send(response);
  } catch (e) {
    log('Error: ' + e);
    return res.status(500).send('An error occurred: ' + e);
  }
}```

In 9 out of 10 cases everything runs perfectly, the while loop always runs twice and then everything is ready:

But in this one case I get the timeout and NO logs at all:

`Operation timed out after 30002 milliseconds with 0 bytes received with status code 0\nError Code: 0`

- Why does the timeout always come at 30002 milliseconds?
- And why is there a timeout at all.... ?

I've really tried a lot, but unfortunately I can't make any progress at the moment because it's just so random for me.

Thank you for help 🙂
#

i changed the method a bit (while....): ```js
async function newNotesCollection(title, res, log) {
log('newNotesCollection');
try {
const response = await appwriteService.createCollection(title);
log('after createCollection...');

await appwriteService.createStringAttribute('message',response.$id, 2000);
log('after createStringAttribute message...');
await appwriteService.createStringAttribute('username',response.$id, 50);
log('after createCollection username...');
await appwriteService.createStringAttribute('userId',response.$id, 50);
log('after createCollection userId...');
await appwriteService.createNumberAttribute('date', response.$id, 50);
log('after createCollection date...');

let ready = false;

let attempts = 0;
const maxAttempts = 8;

while (!ready && attempts < maxAttempts) {
attempts++;
log('Attributes not ready....');
ready = await appwriteService.newCollectionAttributesReady(response.$id,log);
await delay(2000); // Warte 2 Sekunden, bevor du die Methode erneut aufrufst
}

if (!ready) {
  log('ERROR: Attributes not ready after ' + attempts + ' attempts');
  return res.send('Attributes not ready. Collection id: ' + response.$id);
}

log('Attributes ready.');

return res.send(response);

} catch (e) {
log('Error: ' + e);
return res.status(500).send('An error occurred: ' + e);
}
}```

potent shuttle
#

Operation timed out after 30002 milliseconds with Functions - Completely random

potent shuttle
#

@rugged moat I found this info in another thread: Synchronous executions have a hard timeout of 30s is that true ? appwriteupvote

#

no info about that in docs

potent shuttle
# rugged moat Yes

Okay. But, if i do it async, how do i get my data, because responseBody will be empty ? (even if function is completed).

rugged moat
rugged moat
rugged moat
potent shuttle
# rugged moat Why does the user need to fetch this?

@rugged moat Hm. The user doesn't actually need that. I just have all the logic for adding the object to the database in Angular because I like working with Rxjs. But it probably just makes more sense to do it on the server side. Unfortunately I wasn't aware of the time out fact

potent shuttle
rugged moat