batosai / adonis-attachment

MIT License
6 stars 0 forks source link

Execution continue beside an error while uploading on r2 #3

Open Firelods opened 6 days ago

Firelods commented 6 days ago

While having a bad api token for R2 buckets, the file won't upload (expected behavior), but the flow of execution isn't catched and still return a 200 Http response and the content is still saved in database.

Code Example :

async uploadProfilePicture({ request, response }: HttpContext) {
    const payload = await request.validateUsing(profilePictureValidator)
    const id = payload.params.id
    const x= await x.findActiveById(id)

    enfant.user.avatar = await attachmentManager.createFromFile(payload.avatar) 

    await x.save()
    return response.created({
      message: 'Avatar ajouté avec succès',
      x,
    })
  }

Step to reproduce :

Stack trace :

[15:00:47.237] INFO (30728): started HTTP server on localhost:3333
An error was encountered in a non-retryable streaming request.
[15:00:55.645] ERROR (30728): Error send file
    err: {
      "type": "",
      "message": "Cannot write file at location \"uploads/pckyr2wdikg167ojpr64s762.jpg\": The request signature we calculated does not match the signature you provided. Check your secret access key and signing method. ",
      "stack":
          Exception: Cannot write file at location "uploads/pckyr2wdikg167ojpr64s762.jpg"
              at Disk.putStream (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\flydrive\src\disk.ts:159:13)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async AttachmentManager.save (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/attachment_manager.js:102:17)
              at async persistAttachment (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/utils/actions.js:62:9)
              at async Promise.all (index 0)
              at async ModelWithAttachment.beforeSaveHook (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/mixins/attachmentable.js:48:13)
              at Runner.#exec (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@poppinss\hooks\src\runner.ts:118:24)
              at async Proxy.save (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@adonisjs/lucid/build/src/orm/base_model/index.js:1379:9)
              at EnfantsController.uploadProfilePicture (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\app\controllers\enfants_controller.ts:167:5)
          caused by: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your secret access key and signing method.        
              at throwDefaultError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:859:20)
              at C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:868:5
              at de_CommandError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\client-s3\dist-cjs\index.js:4751:14)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-serde\dist-cjs\index.js:35:20
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:482:18
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-retry\dist-cjs\index.js:320:38
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-flexible-checksums\dist-cjs\index.js:174:18
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:110:22
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:138:14
      "name": "Exception",
      "status": 500,
      "code": "E_CANNOT_WRITE_FILE"
    }
[15:00:55.883] ERROR (30728): Cannot delete file at location "uploads/vaq8ufac3kz16v3zxltoag1k.jpg"
    err: {
      "type": "",
      "message": "Cannot delete file at location \"uploads/vaq8ufac3kz16v3zxltoag1k.jpg\": The request signature we calculated does not match the signature you provided. Check your secret access key and signing method. ",
      "stack":
          Exception: Cannot delete file at location "uploads/vaq8ufac3kz16v3zxltoag1k.jpg"
              at Disk.delete (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\flydrive\src\disk.ts:221:13)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async AttachmentManager.delete (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/attachment_manager.js:114:21)
              at async Promise.allSettled (index 0)
              at async commit (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/utils/actions.js:14:5)
              at async ModelWithAttachment.beforeSaveHook (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/mixins/attachmentable.js:55:21)
              at Runner.#exec (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@poppinss\hooks\src\runner.ts:118:24)
              at async Proxy.save (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@adonisjs/lucid/build/src/orm/base_model/index.js:1379:9)
              at EnfantsController.uploadProfilePicture (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\app\controllers\enfants_controller.ts:167:5)
          caused by: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your secret access key and signing method.        
              at throwDefaultError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:859:20)
              at C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:868:5
              at de_CommandError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\client-s3\dist-cjs\index.js:4751:14)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-serde\dist-cjs\index.js:35:20
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:482:18
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-retry\dist-cjs\index.js:320:38
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:110:22
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:138:14
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-logger\dist-cjs\index.js:34:22
      "name": "Exception",
      "status": 500,
      "code": "E_CANNOT_DELETE_FILE"
    }
[15:00:56.300] ERROR (30728): Error send file
    err: {
      "type": "",
      "message": "Cannot write file at location \"uploads/variants/pckyr2wdikg167ojpr64s762.jpg/vhylbfw4mtyernqld4p8zo3q.webp\": The request signature we calculated does not match the signature you provided. Check your secret access key and signing method. ",
      "stack":
          Exception: Cannot write file at location "uploads/variants/pckyr2wdikg167ojpr64s762.jpg/vhylbfw4mtyernqld4p8zo3q.webp"
              at Disk.put (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\flydrive\src\disk.ts:146:13)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async AttachmentManager.save (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/attachment_manager.js:99:17)  
              at async ConverterManager.save (file:///C:/Users/lefev/Documents/PROJETS/CrecheCareAPI/node_modules/@jrmc/adonis-attachment/build/src/converter_manager.js:29:9)     
          caused by: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your secret access key and signing method.        
              at throwDefaultError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:859:20)
              at C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\smithy-client\dist-cjs\index.js:868:5
              at de_CommandError (C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\client-s3\dist-cjs\index.js:4751:14)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-serde\dist-cjs\index.js:35:20
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:482:18
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@smithy\middleware-retry\dist-cjs\index.js:320:38
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-flexible-checksums\dist-cjs\index.js:174:18
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:110:22
              at async C:\Users\lefev\Documents\PROJETS\CrecheCareAPI\node_modules\@aws-sdk\middleware-sdk-s3\dist-cjs\index.js:138:14
      "name": "Exception",
      "status": 500,
      "code": "E_CANNOT_WRITE_FILE"
    }
batosai commented 3 hours ago

Fix in v 2.3.1 with the addition of exceptions

https://adonis-attachment.jrmc.dev/guide/advanced_usage/exceptions.html