|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.lang.Thread
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.SingleTask
de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask
de.bsvrz.ars.ars.mgmt.tasks.BackupTask
public class BackupTask
Task zur Durchführung eines Sicherungslaufs.
| Nested Class Summary | |
|---|---|
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. |
| Nested classes/interfaces inherited from class java.lang.Thread |
|---|
Thread.State, Thread.UncaughtExceptionHandler |
| Field Summary | |
|---|---|
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 |
| Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask |
|---|
atgQuery, ddResponse, deserializer, queryAppObj, queryIdx, SENDCONTROL_TIMEOUT, serializerVersion, syncObj |
| Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
|---|
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners |
| Fields inherited from class java.lang.Thread |
|---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
| Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface |
|---|
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION |
| Constructor Summary | |
|---|---|
BackupTask(ArchiveManager archiveMgr,
RingOfDeathListener rodl,
RingBuffer<ResultData> inputData,
LongTermTaskStatePublisher longTermTaskStatePublisher)
Erstellt einen neuen BackupTask |
|
| Method Summary | |
|---|---|
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. |
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. |
| Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.SingleClientSenderTask |
|---|
dataRequest, getObjectsFromDAV, init, isRequestSupported, parseArchiveDataSpec, sendErrorResponse, sendErrorResponse, sendSuccessResponse, sendSuccessResponse, subscribeSender, unsubscribeSender |
| Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
|---|
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask |
| Methods inherited from class java.lang.Thread |
|---|
activeCount, 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, yield |
| Methods inherited from class java.lang.Object |
|---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
private static BackupModul _backupModul
public static final String INDEXFILE_NAME
private static int _currentBackupMediumID
private File _currentIndexFile
private File _indexFileDir
_currentIndexFile abgelegt ist
private File _tmpFile
+_indexFileDir benutzt wird.
private final LongTermTaskStatePublisher.Task _longTermTaskStatePublisherTask
| Constructor Detail |
|---|
public BackupTask(ArchiveManager archiveMgr,
RingOfDeathListener rodl,
RingBuffer<ResultData> inputData,
LongTermTaskStatePublisher longTermTaskStatePublisher)
archiveMgr - Archivmanagerrodl - RingOfDeathListenerinputData - EingangswarteschlangelongTermTaskStatePublisher - siehe LongTermTaskStatePublisher| Method Detail |
|---|
public void run()
run in interface Runnablerun in class SingleTaskRunnable.run()protected void work(ResultData resultData)
SingleTask
work in class SingleTaskresultData - Zu verarbeitender Datensatz aus der Eingangswarteschlange
public void runBackup()
throws BackupException
BackupException - Fehler beim Backup
private void tryRequestBackupMedium(String backupRunID)
throws BackupException
BackupException
private ArrayList<BackupTask.ContainerEntry> containerWalk()
throws PersistenceException
PersistenceException - Fehler in der Persistenz
private List<Long> getContainerIDsToBackup(File didDir)
throws PersistenceException
didDir - Verzeichnis, welches geprüft wird
PersistenceException - Fehler in der Persistenz
public static List<Long> getContainerIDsToBackupStatic(File didDir,
PersistenceManager persistenceManager,
Task task)
throws PersistenceException
didDir - Verzeichnis, welches geprüft wirdpersistenceManager - PersistenceManagertask - Task
PersistenceException - Fehler in der Persistenz
private void backupContainerList(ArrayList<BackupTask.ContainerEntry> containerList,
String backupRunID)
throws BackupException
containerList - Liste mit Containern, welche gesichert werden sollenbackupRunID - ID des Backuplaufes
BackupException - Fehler beim Backup
private void closeBackup(ArrayList<BackupTask.ContainerEntry> containerList)
throws BackupException
BackupException
private void clearCurrentIndexFile()
throws BackupException
BackupException
private void rollbackChanges(ArrayList<BackupTask.ContainerEntry> containerList)
throws BackupException
BackupException
private void requestBackupMedium(int backupMediumID,
String backupRunID)
throws BackupException
backupMediumID - MediumIDbackupRunID - ID des Backupvorgangs
BackupException - Medium nicht verfügbar
private 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 unsaved
BackupException - Fehler bei der Durchführung des Auftrags
private 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 Container
private 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
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||