detect purged IEs
Das Flag --recovery
sorgt dafür, dass bei gelöschten IEs die Verarbeitung nicht abgebrochen wird. Wenn für eine IE keine REPID gefunden werden kann, wird dafür ein Fehler ausgegeben:
No repid found in file /mnt/rosetta-dev/permanent_storage/normal/2019/07/05/IE18075/V4-IE18075.xml, is IE purged?
Ob eine IE gelöscht wurde, lässt sich aber auch mit Sicherheit feststellen. Dafür gibt es in der IE-XML zwei Event-Einträge, die man auswerten kann:
<key id="eventIdentifierValue">272</key>
<key id="eventDescription">IE has been deleted</key>
...
<key id="eventIdentifierValue">274</key>
<key id="eventDescription">IE has been purged</key>
Auf dem Rosetta-Devsystem unter /permanent_storage/normal/2019/07/05/IE18075/V4-IE18075.xml
gibt es eine Beispiel-IE.
Zur Auswertung sollte folgender Regex zumindest einen Ansatz bieten, vermutlich einzufügen auf Zeile 327:
my $compiled_xpath_purged_ie = XML::LibXML::XPathExpression->new('mets:mets/mets:amdSec[@ID=\'ie-amd\']/mets:digiprov/[@ID=\'ie-amd-digiprov\']/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@ID=\'event\']/dnx:record/dnx:key[@id=\'eventDescription\']');
Ich schlage vor, die entsprechenden Felder auszuwerten und nur Fehler auszugeben, wenn sich weder eine REPID noch ein Löschnachweis finden lässt. Dann ist davon auszugehen, dass die IE tatsächlich kaputt ist. Außerdem wäre zu überlegen, ob auch gelöschte IEs im Rahmen des Provenienznachweises mit in die DB aufgenommen werden sollten.