Package de.bsvrz.ars.ars.mgmt.tasks
Class MirrorTask
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.CronTask
de.bsvrz.ars.ars.mgmt.tasks.MirrorTask
public final class MirrorTask extends CronTask
AbstractTask
-Implementierung vom datenkonsistenten Backup.
Grundgedanke des datenkonsitenten Backups ist, dass es ausreichend ist, alle Containerverzeichnisse (bzw. Datenidentifikationen) einzeln in einem konsistenten Zustand zu sichern.
Zur Umsetzung dieses Konzepts würde im Archivsystem ein weiterer Hintergrundtask integriert werden, der alle Containerverzeichnisse nacheinander durchgeht und einzeln sichert. Eine parallele Bearbeitung von mehreren Verzeichnissen ist prinzipiell problemlos möglich, könnte jedoch die Systemlast erhöhen und sollte daher nicht standardmäßig aktiviert werden. Der neue Task wird regelmäßig folgende Aktionen ausführen:
- Für jedes Containerdateienverzeichnis:
- Schreibe die Indexe, leere den Cache und unterdrücke weitere Schreibvorgänge
- Stelle sicher, dass das entsprechende Backup-Verzeichnis auf demselben Stand ist, wie das aktuelle Archivdatenverzeichnis im Persistenzverzeichnis. Das entsprechende Unterverzeichnis im Backup-Ordner wird angelegt, wenn es noch nicht existiert.
- Daten, die im Backup-Verzeichnis noch nicht existieren, werden kopiert, Daten, die auf einem alten bzw. abweichenden Stand sind, werden aktualisiert und Daten, die nicht mehr existieren (z. B. weil sie aus dem Archiv ausgelagert wurden), werden im Backup-Verzeichnis ebenfalls gelöscht.
- Hebe die Blockierung wieder auf
- Schreibe am Ende eine _startUpInfo.property und _restartTime.property, die den Stand der gesicherten Daten angibt (die Inhalte können bei der Sicherung aggregiert werden).
- Starte (auf Wunsch) einen vom Anwender konfigurierbaren Prozess, der die Daten aus diesem Verzeichnis noch einmal an einen anderen Ort sichert oder beispielsweise einen Schnappschuss erstellt.
- Warte ggf. auf die Beendigung dieses Prozesses
-
Nested Class Summary
Nested classes/interfaces inherited from class de.bsvrz.ars.ars.mgmt.tasks.CronTask
CronTask.CronTaskDefinition
-
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_shouldTerminate, archMgr, didTree, persMgr
-
Constructor Summary
Constructors Constructor Description MirrorTask(ArchiveManager archiveMgr, LongTermTaskStatePublisher longTermTaskStatePublisher)
Konstruktor -
Method Summary
Modifier and Type Method Description void
doMirror(java.nio.file.Path targetBaseDir, java.lang.String[] commandLine)
Führt einen Backup-lauf durchvoid
start()
void
terminateTask()
Terminiert den Task indem dafür gesorgt wird, dasAbstractTask.shouldTerminate()
true zurückliefert.Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.CronTask
getName, isAlive, isTerminated, join, setCronTaskDefinitions, setName
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, getObjectsFromDav, shouldTerminate, suspendTaskIfNecessary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
MirrorTask
public MirrorTask(ArchiveManager archiveMgr, LongTermTaskStatePublisher longTermTaskStatePublisher)Konstruktor- Parameters:
archiveMgr
- ArchivmanagerlongTermTaskStatePublisher
-
-
-
Method Details
-
start
public void start() -
terminateTask
public void terminateTask()Description copied from class:AbstractTask
Terminiert den Task indem dafür gesorgt wird, dasAbstractTask.shouldTerminate()
true zurückliefert. Der Task sollte diese Funktion regelmäßig aufrufen um dann bei Rückgabe vontrue
den Task zeitnah zu beenden.- Overrides:
terminateTask
in classCronTask
-
doMirror
public void doMirror(java.nio.file.Path targetBaseDir, java.lang.String[] commandLine)Führt einen Backup-lauf durch- Parameters:
targetBaseDir
- ZielverzeichniscommandLine
- Kommando, das nach dem erfolgreichen Ausführen ausgeführt wird.
-