public class BackupTask extends SingleClientSenderTask
| Modifier and Type | Class and Description |
|---|---|
static class |
BackupTask.BackupResultData
Diese Klasse sieht aus wie ein ResultData, wird aber nur intern verwendet, um einen über den Scheduler angestoßenen Sicherungslauf von einem extern
angestoßenen zu unterscheiden
|
private static class |
BackupTask.BackupResultDataHolder
Holder-Objekt, dass eine statische BackupResultData-Instanz (threadsicher) bereitstellt
|
private static class |
BackupTask.ContainerEntry
Immutable Klasse, die eine ContainerID mit der zugehörigen ContainerLocation, also dem Speicherort (der Datenidentifikation) verknüpft.
|
private class |
BackupTask.ContainerLocation
Immutable Klasse, die speichert, an welchem Ort sich eine bestimmte ContainerID befindet.
|
private class |
BackupTask.DataIdentificationHelper
Hilfsklasse, die zu einem Verzeichnis sowohl die passende
DataIdentNode als auch die zugehörige BackupTask.ContainerLocation ermittelt. |
Thread.State, Thread.UncaughtExceptionHandler| Modifier and Type | Field and Description |
|---|---|
private static BackupModul |
_backupModul
das verwendete Backupmodul
|
private static int |
_currentBackupMediumID
die immer aktuell gehaltene backupMediumID
|
private File |
_currentIndexFile
Datei, in der die momentan auf dem Medium gesicherten Indexdaten abgelegt sind
|
private File |
_indexFileDir
Temporäres Verzeichnis in dem
_currentIndexFile abgelegt ist |
private LongTermTaskStatePublisher.Task |
_longTermTaskStatePublisherTask
Objekt, dem Informationen zum aktuellen Zustand der Task und dem Fortschritt von langwierigen Arbeiten übergeben werden.
|
private File |
_tmpFile
Temporäre Datei die zur Erzeugung des temporären Verzeichnisses
+_indexFileDir benutzt wird. |
static String |
INDEXFILE_NAME
Name der Datei, in der alle Indexdaten des momentanen Mediums temporär abgelegt werden
|
atgQuery, ddResponse, deserializer, queryAppObj, queryIdx, SENDCONTROL_TIMEOUT, serializerVersion, syncObjarchMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListenersMAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITYSTART_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION| Constructor and Description |
|---|
BackupTask(ArchiveManager archiveMgr,
RingOfDeathListener rodl,
RingBuffer<ResultData> inputData,
LongTermTaskStatePublisher longTermTaskStatePublisher)
Erstellt einen neuen BackupTask
|
| Modifier and Type | Method and Description |
|---|---|
private void |
backupContainerList(ArrayList<BackupTask.ContainerEntry> containerList,
String backupRunID)
Sichert alle angegebenen Container.
|
private void |
clearCurrentIndexFile() |
private void |
closeBackup(ArrayList<BackupTask.ContainerEntry> containerList) |
private ArrayList<BackupTask.ContainerEntry> |
containerWalk()
Laeuft rekursiv durch ein Verzeichnis und laedt die Container in den Index.
|
private void |
deleteFile(File file)
Löscht eine Datei un gibt eine Warnung aus, wenn das Löschen fehlschlägt
|
private void |
disposeIndices()
Löscht die Indexdateien und sonstige temporäre Dateien und Verzeichnisse
|
int |
estimateIndexSize(int countSavedContainers)
Schätzt die Indexgröße für eine angegebene Zahl Einträge.
|
static BackupModul |
getBackupModul()
Gibt das verwendete Backupmodul zurück
|
static BackupTask.BackupResultData |
getBackupResultData()
Gibt einen
BackupTask.BackupResultData-Dummy zurück |
private List<Long> |
getContainerIDsToBackup(File didDir)
Ermittelt, welche Container in einem Verzeichnis gesichert werden sollen.
|
static List<Long> |
getContainerIDsToBackupStatic(File didDir,
PersistenceManager persistenceManager,
Task task)
Ermittelt, welche Container in einem Verzeichnis gesichert werden sollen.
|
static int |
getLastUsedMediumID()
Gibt die zuletzt verwendete MedienID zurück
|
private void |
increaseMediumID()
Erhöht die MedienID um 1
|
private void |
initIndices()
Erstellt das temporäre Verzeichnis für die Indexdatei und erstellt eine leere Indexdatei
|
private void |
markContainer(long containerId,
BackupTask.ContainerLocation containerLocation,
boolean toBeMarkedAsSaved)
Markiert einen Container als gesichert bzw. ungesichert und aktualisiert den Index entsprechend.
|
private void |
requestBackupMedium(int backupMediumID,
String backupRunID)
Mit dieser Methode wird der Operator aufgefordert, ein bestimmtes Medium einzulegen.
|
private void |
rollbackChanges(ArrayList<BackupTask.ContainerEntry> containerList) |
void |
run() |
void |
runBackup()
Startet den Sicherungslauf
|
static void |
setBackupModul(String propertiesFile)
Setzt das zu verwendende Backup-Modul.
|
static void |
setLastUsedMediumID(int mediumID)
Setzt die zuletzt verwendete MedienID.
|
private void |
tryRequestBackupMedium(String backupRunID) |
protected void |
work(ResultData resultData)
Diese Methode ist zu ueberschreiben, um die konkrete Aufgabe der Task zu implementieren.
|
dataRequest, getObjectsFromDAV, init, insertData, isRequestSupported, parseArchiveDataSpec, sendErrorResponse, sendErrorResponse, sendSuccessResponse, sendSuccessResponse, subscribeSender, unsubscribeSenderaddTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTaskactiveCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yieldprivate static BackupModul _backupModul
public static final String INDEXFILE_NAME
private static int _currentBackupMediumID
private File _currentIndexFile
private File _indexFileDir
_currentIndexFile abgelegt istprivate File _tmpFile
+_indexFileDir benutzt wird.private final LongTermTaskStatePublisher.Task _longTermTaskStatePublisherTask
public BackupTask(ArchiveManager archiveMgr, RingOfDeathListener rodl, RingBuffer<ResultData> inputData, LongTermTaskStatePublisher longTermTaskStatePublisher)
archiveMgr - Archivmanagerrodl - RingOfDeathListenerinputData - EingangswarteschlangelongTermTaskStatePublisher - siehe LongTermTaskStatePublisherpublic void run()
run in interface Runnablerun in class SingleTaskRunnable.run()protected void work(ResultData resultData)
SingleTaskwork in class SingleTaskresultData - Zu verarbeitender Datensatz aus der Eingangswarteschlangepublic void runBackup()
throws BackupException
BackupException - Fehler beim Backupprivate void tryRequestBackupMedium(String backupRunID) throws BackupException
BackupExceptionprivate ArrayList<BackupTask.ContainerEntry> containerWalk() throws PersistenceException
PersistenceException - Fehler in der Persistenzprivate List<Long> getContainerIDsToBackup(File didDir) throws PersistenceException
didDir - Verzeichnis, welches geprüft wirdPersistenceException - Fehler in der Persistenzpublic static List<Long> getContainerIDsToBackupStatic(File didDir, PersistenceManager persistenceManager, Task task) throws PersistenceException
didDir - Verzeichnis, welches geprüft wirdpersistenceManager - PersistenceManagertask - TaskPersistenceException - Fehler in der Persistenzprivate void backupContainerList(ArrayList<BackupTask.ContainerEntry> containerList, String backupRunID) throws BackupException
containerList - Liste mit Containern, welche gesichert werden sollenbackupRunID - ID des BackuplaufesBackupException - Fehler beim Backupprivate void closeBackup(ArrayList<BackupTask.ContainerEntry> containerList) throws BackupException
BackupExceptionprivate void clearCurrentIndexFile()
throws BackupException
BackupExceptionprivate void rollbackChanges(ArrayList<BackupTask.ContainerEntry> containerList) throws BackupException
BackupExceptionprivate void requestBackupMedium(int backupMediumID,
String backupRunID)
throws BackupException
backupMediumID - MediumIDbackupRunID - ID des BackupvorgangsBackupException - Medium nicht verfügbarprivate void markContainer(long containerId,
BackupTask.ContainerLocation containerLocation,
boolean toBeMarkedAsSaved)
throws BackupException
containerId - ContainerIDcontainerLocation - Speicherort des ContainerstoBeMarkedAsSaved - falls true, wird der Container als saved markiert, ansonsten als unsavedBackupException - Fehler bei der Durchführung des Auftragsprivate void initIndices()
throws IOException
IOException - IO-Fehler beim Vorgangprivate void disposeIndices()
private void deleteFile(File file)
file - Datei die gelöscht werden sollpublic int estimateIndexSize(int countSavedContainers)
countSavedContainers - Anzahl der Containerprivate void increaseMediumID()
public static void setBackupModul(String propertiesFile) throws BackupException
propertiesFile - Datei in dem das zu verwendende Modul gespeichert ist.BackupException - Fehler beim Vorgangpublic static BackupModul getBackupModul()
public static int getLastUsedMediumID()
public static void setLastUsedMediumID(int mediumID)
mediumID - zuletzt verwendete MedienIDpublic static BackupTask.BackupResultData getBackupResultData()
BackupTask.BackupResultData-Dummy zurück