simvue-io / simvue-io/python-api

Sender will fail to upload file artifact if it changes between creation and sending

Aperta
#870 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug offline
Lingua principale
Python
Stelle
4
Fork
1
Merge medio
5g 8h
PR unite (30g)
4

Descrizione

Description of Bug

When creating an Artifact via run.save_file(), the checksum is calculated and stored in the artifact JSON in the cache, along with the path to the file. If that file is then changed between the time when it was asked to be saved by the user, and when it is actually sent by the sender(), the checksum will no longer match the file, and so the upload will fail. You'll get back an error like:

E       RuntimeError: uploading artifact 'test_file_artifact_6c49f901' to object storage failed for url '[https://simvue-ci.s3.amazonaws.com/'](https://simvue-ci.s3.amazonaws.com/%27) with status 400: <?xml version="1.0" encoding="UTF-8"?>
E       <Error><Code>BadDigest</Code><Message>The SHA256 you specified did not match the calculated checksum.</Message></Error>

Steps To Reproduce

Steps to reproduce the behavior:

  1. Create a run in offline mode
  2. Create a file
  3. Do run.save_file()
  4. Change the contents of the file
  5. Run sender()

Expected behavior

The file should be uploaded (I guess as it was when the user called save_file()

Actual Behaviour

Error due to mismatched checksum

Setup

  • OS: Ubuntu 22.04
  • Python version 3.10

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia tracciando il flusso dell'artefatto da run.save_file() attraverso il JSON dell'artefatto memorizzato nella cache fino a sender(), concentrandoti su quando vengono letti il checksum e il contenuto del file. Riproduci i passaggi della modalità offline indicati nell'issue e verifica che un file modificato dopo save_file() venga caricato correttamente senza un errore BadDigest.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.