Search the FirstSpirit Knowledge Base
Hi, wir sind gerade dabei eine Anforderung umzusetzen, bei der alle Median im Remote Media Project automatisch freigegeben werden sollen. Der MediaMaster führt alle 15 Minuten ein DeltaDeployment aus, Bilder werden ausserdem mit SmartResolutions zurechtgeschnitten.
Unser erster Ansatz war es, einen Upload Hook zu nutzen, was lokal auch gut funktioniert hat. Im Produktivbetrieb führt das aber zu Problemen und Fehlern, wie folgendem:
Meine Vermutung ist, dass der Upload Hook versucht, das Bild zu locken und freizugeben, während SmartResolutions noch Auflösungen berechnet. Je nach Serverlast, kann die Asynchronität Probleme mit dem Hook machen.Dort einen Thread aufmachen und auf die Fertigstellung von SmartResolutions zu warten, führte leider zu keinem Erfolg. Auch ist mir kein Weg bekannt, wie SmartResolutions einem mitteilt, das es fertig ist.
Ein anderer Weg war ein Serverscript, dass den Root periodisch freigibt. Dort kommt es dann aber zu Problemen, wenn Nutzer an Medien noch arbeiten. Auch das Generieren des Vorschau Standes führte zu Problemen mit dem Delta Deployment.
Weiß irgendwer noch einen anderen Weg? Der Upload Hook scheint mir eigentlich am geeignetsten, macht aber viele Probleme mit SmartResolutions.
Grüße,
Frank Baus
Hallo Frank,
ich bin bei sowas eigtl. immer ein Fan davon, die eigentliche Logik auf dem Server auszuführen (ein Client stürzt eher mal ab, verliert die Verbindung oder ähnliches).
Ich würde also entweder eine Serveraktion wie von dir beschrieben nutzen oder einen Service implementieren, der vom UploadHook angesprochen wird und das Warten auf SmartResolutions übernimmt.
Serveraktion: Den Punkt "Dort kommt es dann aber zu Problemen, wenn Nutzer an Medien noch arbeiten." würde ich letztendlich einfach abfangen, da solche Medien ja schließlich dann auch nicht freigegeben werden sollten. Wie führst du die Freigabe denn durch? Einfach auf dem root .release(true)? Um einen Fehler sauber abzufangen müsstest du dir erst alle nicht freigegebenen Kinder suchen und diese einzeln freigeben. Damit dies performant läuft solltest du mal den QueryAgent anschauen und darüber einfach alle nicht freigegebenen Medien suchen. Mit dem Log der Serveraktion hast du dann auch einen automatischen Report, ob etwas schiefgelaufen ist - anders als bei einer clientseitigen Aktion, bei der der Redakteur erst informieren muss.
Service: Wenn ich dich richtig verstehe habt ihr das ja schon gemacht, aber weiterhin das gleiche Problem ("Dort einen Thread aufmachen und auf die Fertigstellung von SmartResolutions zu warten, führte leider zu keinem Erfolg."). Hier wäre dann natürlich die Frage, wie genau euer Code aussah bzw. wie Ihr auf das Ende der der Berechnung gewartet habt. Im Zweifelsfall könntet Ihr ja bspw. noch einen Observer starten, der wartet bis das Medium nicht mehr auf dem Server gelocked ist, um es dann freizugeben.
Beste Grüße
Felix
Hallo Felix, danke schonmal für die Antwort.
Serveraktion: Ja im ersten Versuch hatte ich nur ein Release auf dem Root knoten gemacht. Ich werde mir mal noch das mit dem QueryAgent anschauen, das klingt vielversprechend.
Service: Da habe ich jetzt auch keinen genauen Code mehr, da der Kollege das schnell aufgegeben hat. Das mit dem Observer klingt an für sich schon ganz gut.
Zentrale Frage ist leider immer noch, wann man eigentlich weiss, ob SmartResolutions denn fertig ist. Als Alternative könnte man vielleicht noch schauen ob alle Auflösungen gerendert wurden, da bin ich mir aber nicht so sicher. Ein manuelles Anstoßen von SmartResolutions wäre optimal, da gibt die Doku allerdings wenig her.
Zu SmartResolutions kann ich leider nichts sagen, da ich sowas immer mit eigenen Modulen gemacht habe. Aber es macht sicher Sinn einfach mal die Jungs und Mädels von Arithnea anzuschreiben. Die können dir sicher sagen, ob sie sowas im Modul vorgesehen haben bzw. wie andere Kunden damit umgehen.
Ohne mich zu tief mit Remote Media Projekten oder SmartResolutions auszukennen, stelle ich mir hier die folgenden Fragen:
Je nach Antwort auf die ersten Frage könnte man entweder die Freigabe gar nicht nutzen, d.h. alles ist immer freigegeben, oder zusammen mit dem "Trigger" durchführen. Leider kommt für mich aus der Problembeschreibung nicht hervor, welches Redaktionsprozess damit erreicht werden soll.
Die Antwort der zweiten Frage ist insofern interessant, dass SmartResolutions eventuell auch nur ein UploadHook ist. Gegebenenfalls kann man SmartResolutions auch im eigenen UploadHook aufrufen. Dann hat man auch keine zwei Threads, die sich in die Quere kommen.
Am Ende solle SmartResolutions auch nur ein JAR-Archiv + module.xml verpackt in einem FSM sein. Das würde ich versuchen mit dem eigenen Module zusammen zu bringen. Müsste man beim Hersteller mal nachfragen, ob dies geht.
Hallo Jens, wir wollten die automatische Freigabe mit dem Upload Hook anstoßen. Soweit ich das sehen konnte aus meinen Analysen, startet der Upload Hook, nach dem direkten Upload und nicht nachdem SmartResolutions fertig ist. Freigabe gar nicht nutzen ist leider keine Option, da diese benötigt wird für das Delta Deployment. Es sind fast 100GB an Medien, das Generate würde etwas dauern. Im Moment testen wir die Option mit dem Query Agent, der alle 2 Minuten nicht freigegebene Inhalte freigibt. Das scheint im ersten Moment ganz gut funktionieren, hoffentlich bleibt es dabei. Danke auf jeden fall für eure Antworten! Grüße, Frank