Project activity #30747
closedMultiple bestandsdelen support DRC 1.1
0%
Description
Het moet mogelijk zijn meerdere bestandsdelen te uploaden i.p.v. 1 multi-part bestand.
Voorbeeld:
Huidige werkwijze:Hoe openzaak dit bijvoorbeeld opgelost heeft in hun implementatie is het zetten van een configuratiewaarde voor een "max grootte bestandsdeel", die kan arbitrair bijvoorbeeld ook prima gezet worden op 50 of 100mb wmb
Daarbij wordt alles wat niet in hele bestandsdelen past in het laatste bestandsdeel gezet. dus bij een max van 5 mb en een documentgrootte van 12,4 mb krijg je dan 3 bestandsdelen (2 van 5mb en 1 van 2,4 mb)
- POST DRC zonder inhoud, maar wel met grootte
- Response 1 bestandsdelen url
- PUT Multi-Part upload bestand conform grootte
- POST unlock DRC document
- alfresco-global.properties drc.bestandsdelen.grootte=1024 (KB)
- POST DRC zonder inhoud, maar wel met grootte bijv. 5MB
- Response 5 bestandsdelen url's
- PUT Multi-Part upload bestand conform grootte van 1MB per stuk (5x)
- POST unlock DRC document
- Wordt samengevoegd met volgnummer tot 1 bestanddeel van de oorspronkelijke UUID
Updated by Tahir Malik 4 months ago
- Hiervan een branch maken t.b.v. feature/bestandsdelen/#30747
- Dan mergen met main
- Wordt een 2.0 versie gemaakt voor Alfresco 23.x
- Dan een branch maken vanuit main
- Downgraden naar Alfresco 7.3.x
- Downgraden naar Log4j1 of een mechaniek bedenken met bijv. een profiel dat in 1 project beiden LOG4j's kunnen zitten
Updated by Erik Hoogland 4 months ago
Eerste aanpassingen zijn gedaan in nieuwe branch vanaf branch 'feature/upgrade_refactor/#2327974'
Al gedaan:- afhankelijk of bestandsomvang groter is dan de max, worden er meerdere bestandsdelen gemaakt
- Dit zijn aparte nodes, met enkel de bestandsomvang van dat deel als parameter
- de max toegestane grote is nu nog een statische variabele in de class zelf
- De lock van het document vindt nu plaats na de creatie van bestandsdelen
- Bij PUT van bestandsdeel wordt het bestandsdeel unlocked
- Toevoegen extra metadata aan bestandsdelen (volgnummer, voltooid enz.)
- Correcte plaatsing van bestandsdelen
- Dit is nu nog de standaard lokatie voor documenten
- Samenvoegen van bestandsdelen bij unlock
Updated by Erik Hoogland 4 months ago
· Edited
- Aspect voor bestandsdelen aan RGBZ model
- Bestandsdelen worden nu in dezelfde folders als document opgeslagen
- Functies voor zoeken bestandsdelen a.d.v. NodeRef parent
- Bij Unlock een check of alle bestandsdelen voltooid zijn
- Samenvoegen en opslaan bij document bij unlock
- JavaDoc bijgewerkt
- Property 'drc.maxChunkSize' toegevoegd aan 'alfresco-global.properties', in bytes. Momenteel 10 kb voor testen
- Bekijken of de huidige manier van bestandsdelen linken aan document wenselijk is, en of deze verwijderd moeten worden na samenvoeging.
- Testen bijwerken/beoordelen
- Momenteel falen 11 van de 92 test cases, allemaal bij de upload. Er moet worden bekeken of de tests nu incorrect zijn, of dat nog niet alle senario's gedekt zijn.
- Nieuwe tests aanmaken
- Documentatie beoordelen/bijwerken
Updated by Tahir Malik 4 months ago
Erik Hoogland wrote:
Na succesvolle samenvoeging mogen de bestandsdelen verwijderd worden.
- Bekijken of de huidige manier van bestandsdelen linken aan document wenselijk is, en of deze verwijderd moeten worden na samenvoeging.
- Eerst ASPECT sys:temporary toevoegen
- Dan verwijderen
Als je klaar bent met de rest van de TODO's moet ook de API spec gebumped worden naar 1.5, hiervoor maak ik een separate ticket aan.
Updated by Erik Hoogland 4 months ago
- Bestandsdelen worden nu ook verwijderd na succesvol samenvoegen, met aspect 'sys:temporary'
- property met referentie naar hoofdobject is nu 'rgbz:bestandsdeelParent'
- De PATCH functie geeft nu ook correct de bestandsdelen terug
- Test zijn bijgewerkt om overeen te komen met de nieuwe situatie en compliant met de VNG implementatie te zijn.
- Alle bestaande testen slagen nu, voor zowel Alfresco als VNG
- Extra test geschreven voor dekking nieuwe functie
- Deze faalt nu nog bij de VNG test, omdat daar de maximale grote van een bestandsdeel hoger is dan bij de Alfresco test
- Maximale grote van een bestandsdeel is default op 2 MB gezet
- Documentatie is bijgewerkt, met aspect en nieuwe alfresco-global parameter
Updated by Erik Hoogland 4 months ago
- Status changed from Backlog to In Progress
Updated by Erik Hoogland 4 months ago
- Status changed from In Progress to Feedback
- Assignee changed from Erik Hoogland to Rick de Rooij
@Rick de Rooij Ik heb hiervoor een merge request klaar staan: https://git.contezza.nl/community/alfresco-documenten-api/-/merge_requests/1
Dit moet uiteindelijk ook naar main, maar ik zal eerst een branch hiervan gaan maken, die werkt op alfresco 7.3.
Er staat nog één testissue open, maar dat is in mijn ogen niet blocking. De test faalt tegen VNG, omdat deze een grotere max heeft voor bestandsdelen dan bij de test van Alfresco, en we hebben nog niet kunnen vinden hoe dit aangepast kan worden.
Dus bij onze test komen er twee bestandsdelen, omdat we de max op 50 Bytes zetten voor de test. Bij VNG is dat standaard 6 MB. Dus komt er daar maar 1 bestandsdeel terug met ons test bestand van 79 Bytes.
Ik heb deze code nog niet in de Tezza Workspace kunnen testen, omdat deze achterloopt op basis van de autorisatie structuur.
In overleg met Tahir maak ik vanuit deze branch ook een nieuwe branch op basis van Alfresco 7.3, om de wijzigingen daarin mee te nemen.
Updated by Erik Hoogland 4 months ago
- Vanaf deze branch een nieuwe branch aangemaakt op Alfresco 7.3
- Deze heeft versie 1.2.8-SNAPSHOT, en zal het main worden gemerged na review van beide branches
- Alle testen geven hetzelfde resultaat als de 23.x branch
- De huidige branch wordt met de refactor branch gemerged als versie 2.0.0, en zal een eigen release pipeline krijgen
- Er missen nog een aantal standaard testen van VNG voor bestandsdelen, deze moeten worden toegevoegd zover mogelijk
- Al toegevoegd en werkend tegen Alfresco en VNG:
- test_create_eio_full_process
- Nog toe te voegen:
- test_upload_part_twice_correct
- test_update_metadata_after_unfinished_upload
- Al toegevoegd en werkend tegen Alfresco en VNG:
Updated by Erik Hoogland 4 months ago
- Tests 'test_upload_part_twice_correct' en 'test_update_metadata_after_unfinished_upload' zijn toegevoegd
- Gedrag rondom bestandsdelen aangepast om aan de test te voldoen.
@Rick de Rooij Ik kwam nog wel het volgende issue tegen in 'test_update_metadata_after_unfinished_upload' (https://github.com/VNG-Realisatie/documenten-api/blob/1.3.0/src/drc/tests/test_upload.py#L812)
In de test staat het volgende:
Test the update process of the document metadata with some of part files uploaded Input: * updated fields don't include bestandsomvang and inhoud Expected result: * bestandsdelen objects are regenerated * all uploaded part files are lost
IK lees dit als verwijderen van bestandsdelen en nieuwe aanmaken. Dit is ook wat ik gedaan heb. Als ik echter check of het lock van een nieuw bestandsdeel anders is dan het oude lock. Dat is het geval bij Alfresco, maar bij VNG blijft het lockId hetzelfde. Deze check is geen officieel onderdeel van de test dus ik heb het uitgecommentarieerd. de test gaat zo goed bij alfresco en vng, maar ik vindt dat hier nog wel naar gekeken moet worden.
Ik heb de aanpassingen ook in de 7.3 branch doorgevoerd. Volgens mij hebben we hiermee alle tests van UploadTest
Updated by Rick de Rooij 4 months ago
- Assignee changed from Rick de Rooij to Erik Hoogland
Samen review gedaan, aantal verbeteringen:
- system.out weghalen
- default chunck size naar 100MB (in module)
- aanmaken file parts aanpassen naar child refs van bestand, zie audit log als referentie om bestandsdelen file parts op te slaan.
- drc.local env variable testen met CHUNK_SIZE
Updated by Erik Hoogland 4 months ago
- Assignee changed from Erik Hoogland to Rick de Rooij
De aanpassingen zijn gedaan in beide branches, m.u.v. CHUNK_SIZE bij de drc. Deze aanpassing had geen effect op de tests.
Alle Alfresco testen gaan goed na de aanpassingen.
Updated by Rick de Rooij 3 months ago
- Assignee changed from Rick de Rooij to Erik Hoogland
alfresco-dcoumenten-api 1.3.0 (7.x) en 2.0.0 (23.x) zijn gereleased.
Updated by Erik Hoogland 3 months ago
- Status changed from Feedback to Resolved
Status naar resolved, is in release meegenomen