Moin @sandrafrommauf,
soweit ich den Fix verstanden habe, behebt er nur diese Fehlermeldung an sich, dass die file_size nicht mehr genutzt wird um zu schauen, ob es das Medium gibt oder nicht. Der Fehler an sich, dass dort weiterhin eine 0 steht kann weiterhin auftreten.
Oder tritt auch die selbe Fehlermeldung wieder auf?
Grüße
Matthias
Ohne den Fix jetzt noch einmal angesehen zu haben, aus Erinnerung: der Fix verhindert, dass die 0 ein Abbruch-Kriterium ist und löscht die Dateien dann zuverlässig.
Aber vermutlich wolltest du das Gleiche sagen, nur mit anderen Worten 
1 „Gefällt mir“
Gleiche Fehlermeldung wieder, ich weis nur nicht ob es wieder dieselbe Datei ist. Das hatte ich mir jetzt beim letzten mal nicht dokumentiert welche Datei den Fehler verursacht hatte.
{
"errors": [
{
"status": "409",
"code": "FRAMEWORK__DELETE_RESTRICTED",
"title": "Conflict",
"detail": "The delete request for media was denied due to a conflict. The entity is currently in use by: document (1)",
"meta": {
"parameters": {
"entity": "media",
"usagesString": "document (1)",
"usages": [
{
"entityName": "document",
"count": 1
}
]
}
}
}
]
}
Habe jetzt versucht es mit deinen sql befehlen zu finden, allerdings findet er keine Datei mehr mit den Befehlen. Weder mit dem einzelnen noch mit dem 3 zeiligen. Seltsam
Schaue ich in der Tabelle media, steht oben eine Zeile wo ziemlich viele Werte NULL sind:

Moin @sandrafrommauf,
dann kann es natürlich noch sein, dass eine andere Bedingung fehlschlägt.
Da müsste man dann mal im System schauen, welche Bedingung dann eventuell fehlschlägt zusätzlich, wenn es nicht mehr die file_size zu sein scheint.
Ohne jetzt alles im Detail gerade mal zu analysieren - so war es vorher:
public function run(): void
{
$context = Context::createCLIContext();
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('fileSize', null));
$ids = $this->mediaRepository->searchIds($criteria, $context)->getIds();
if ($ids === []) {
return;
}
$ids = array_map(fn ($id) => ['id' => $id], $ids);
$this->mediaRepository->delete($ids, $context);
}
Also der Job zieht sich alle Medien, bei denen die fileSize = null ist und löscht diese. Theoretisch müsste es also dann auch wieder in der Datenbank medien geben, welche bei der file_size null stehen haben.
Nach dem Update sieht das Ganze dann so aus:
$criteria = new Criteria();
$criteria->addSorting(new FieldSorting('id', FieldSorting::ASCENDING));
$criteria->addFilter(new EqualsFilter('uploadedAt', null));
$criteria->addFilter(new EqualsFilter('path', null));
$criteria->addFilter(new RangeFilter('createdAt', [
RangeFilter::LT => (new \DateTimeImmutable())
->sub(new \DateInterval('P' . self::CORRUPTED_MEDIA_GRACE_PERIOD_DAYS . 'D'))
->format(Defaults::STORAGE_DATE_TIME_FORMAT),
]));
Du müsstest also die SQL Abfrage auch entsprechend der neuen Bedingungen in dem Task einmal anpassen. Vermutlich sollte diese dann ungefähr so aussehen um die Medien zu finden:
SELECT *
FROM media
WHERE uploaded_at IS NULL
AND path IS NULL
AND created_at < (NOW() - INTERVAL 30 DAY)
ORDER BY id ASC;
Und so um das Dokument zu finden:
SELECT * FROM document AS d
JOIN media AS m ON m.id = d.document_media_file_id
WHERE m.uploaded_at IS NULL
AND m.path IS NULL
AND m.created_at < (NOW() - INTERVAL 30 DAY);
Grüße
Matthias
Mit den Befehlen finde ich jeweils einen Eintrag. Dort ist die FileSize 100 also nicht NULL, dafür sind aber diverse andere Werte NULL. Sollte ich den jeweiligen Eintrag evtl. ganz löschen ?
Moin @sandrafrommauf ,
nein den Eintrag ganz löschen ist nicht der korrekte Weg. Das „Problem“ ist ja, dass der Job hier Medien fälschlicherweise filtert. Das Medium scheint ja aktiv im Dokument genutzt zu werden und kann/darf deswegen nicht gelöscht werden. Ist es zufällig, die Datei, welche du vorher manuell angepasst hast und die file_size auf 100 geändert hast? Durch den anderen Filter kann es jetzt natürlich sein, dass er jetzt wieder genau die selbe Datei findet und du die restlichen Werte noch anpassen musst. Du müsstest also einmal schauen, um welches Dokument handelt es sich und welche Mediendatei. Dann diese prüfen und entsprechend die Werte anpassen, mit korrekten Daten.
PS: Wenn du das einfach aus der Fehlermeldung raushaben willst, sollte es genügen einen der Werte anzupassen (uploaded_at, path oder created_at). Allerdings ist das nur beheben des Symtoms und nicht der Ursache - genau so, wie eintragen der file_size vorher.
Grüße
Matthias
hallo @matthiasewald
ja ich denke das es das gleich file ist. zumindest war es das einzige was genau 100kb hatte nachdem ich die filesize geändert habe. ich versuche mal die datei heraus zu finden. Die Frage ist wo ich diese finde im verzweigten Shopware Ordner System bei media. Es scheint ja laut sql abfrage eine PDF mit einer bestellnummer zu sein.