simvue-io / simvue-io/python-api
Sender will fail to upload file artifact if it changes between creation and sending
Nessuno ha ancora preso questa issue.
- 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:
- Create a run in offline mode
- Create a file
- Do
run.save_file() - Change the contents of the file
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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