|
|||||||||
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.persistence.RestorePersDirTsk
public class RestorePersDirTsk
Diese Klasse teilt das Persistenzverzeichnis in disjunkte Teilbaeume auf und stellt alle Verwaltungsinformationen wieder her.
PersistenceManager.REBUILDINDEX_FILE_FLAG_NAME
,
PersistenceManager.rebuildIndex(Task, byte[], long, long, long, int, ArchiveDataKind)
Nested Class Summary |
---|
Nested classes/interfaces inherited from class java.lang.Thread |
---|
Thread.State, Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
private int |
_errorCount
Zähler für unerwartete RuntimeExceptions |
private int |
badDID
|
private boolean |
done
|
private int |
goodDID
|
private long |
maxArchiveTime
|
private long |
maxContID
|
private int |
maxMedienID
|
private PersistenceManager |
persMgr
|
private static int |
RESTORE_TEMP_MEM
|
private static RestorePersDirTsk[] |
restoreTasks
|
private List<File> |
startDirs
|
private static long |
startTime
|
static int |
test_badDID
|
static int |
test_frebuilt
|
static int |
test_goodDID
|
static int |
test_totalDID
|
static int |
test_viscont
|
private byte[] |
tmpMem
|
private int[] |
total_cont_rebuilt
|
private int |
totalDID
|
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
---|
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, ringOfDeathListener, taskStepListeners |
Fields inherited from class java.lang.Thread |
---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
---|---|
private |
RestorePersDirTsk(PersistenceManager pMgr,
List<File> startDirectories,
int tmpMemSize)
|
Method Summary | |
---|---|
private boolean |
anyIndexFileMissing(File didDir)
Prueft, ob im genannten Verzeichnis einer DId und Datenart mindestens eine Indexdatei fehlt. |
private static List<List<File>> |
calcPartitions(String persDir,
int numOfPartitions)
Teilt das uebergebene Verzeichnis in eine Liste (mit numOfPartitions Elementen) von Listen von Verzeichnissen ein. |
static void |
cleanUp()
Gibt den benutzten Speicher frei (insbes. |
private ContainerBackupIndex |
createContainerBackupIndex(File didDir)
Erstellt einen ContainerBackupIndex mit den zu sichernden ContainerIDs in einem Verzeichnis |
static int |
getBadDID()
|
static int |
getErrorCount()
|
static int |
getFullyRebuiltCont()
|
static int |
getGoodDID()
|
static long |
getMaxArchiveTime()
|
private long[] |
getMaxArchiveTimeMedID(File didDir,
long[] containerIds)
Gibt die maximale Archivzeit und MedienID aus einem Verzeichnis mit Containerdateien zurück. |
static long |
getMaxContID()
|
static int |
getMaxMedienID()
|
static int |
getTotalDID()
|
static int |
getVisitedCont()
|
static boolean |
restoreDone()
|
void |
run()
Durchlaueft mit Hilfe eines ContainerDataIterator jedes Verzeichnis aus startDirs und stellt die Verwaltungsinformation wieder her. |
private static boolean |
splitDirs(List<List<File>> dirs,
int pos)
Die uebergebene Liste enthaelt einen vollstaendigen Querschnitt durch die Verzeichnishierarchie. |
static void |
startRestore(PersistenceManager pMgr,
int numOfPartitions)
Zerlegt das Persistenzverzeichnis in eine Anzahl disjunkter Teile, erzeugt ebenso viele Wiederherstellungstasks und startet sie. |
static String |
status()
|
private static void |
stepDown(List<File> dirs)
Steigt solange die Verzeichnishierarchie hinab (maximal bis zur sv-Ebene), wie stets nur ein Verzeichnis auf dem Pfad liegt. |
static boolean |
success()
|
static String |
summary()
|
static void |
terminateRestore()
Bricht den Wiederherstellungslauf ab |
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 int RESTORE_TEMP_MEM
private static RestorePersDirTsk[] restoreTasks
private static long startTime
public static int test_totalDID
public static int test_badDID
public static int test_goodDID
public static int test_viscont
public static int test_frebuilt
private PersistenceManager persMgr
private List<File> startDirs
private byte[] tmpMem
private boolean done
private long maxArchiveTime
private long maxContID
private int maxMedienID
private int totalDID
private int badDID
private int goodDID
private int _errorCount
private int[] total_cont_rebuilt
Constructor Detail |
---|
private RestorePersDirTsk(PersistenceManager pMgr, List<File> startDirectories, int tmpMemSize)
Method Detail |
---|
public static void startRestore(PersistenceManager pMgr, int numOfPartitions)
PersistenceManager.REBUILDINDEX_FILE_FLAG_NAME
-Datei
(siehe Beschreibung dort) vorhanden ist.
pMgr
- Aufrufender PersistenceManagernumOfPartitions
- gewuenschte maximale Anzahl disjunkter Teilepublic static boolean restoreDone()
public static void terminateRestore()
public static void cleanUp()
public static long getMaxArchiveTime()
public static long getMaxContID()
public static int getMaxMedienID()
public static int getTotalDID()
public static int getGoodDID()
public static int getBadDID()
public static int getErrorCount()
public static int getVisitedCont()
public static int getFullyRebuiltCont()
public static boolean success()
public static String summary()
public static String status()
public void run()
ContainerDataIterator
jedes Verzeichnis aus startDirs
und stellt die Verwaltungsinformation wieder her.
run
in interface Runnable
run
in class Thread
private boolean anyIndexFileMissing(File didDir)
didDir
- Verzeichnis das geprüft werden soll
private long[] getMaxArchiveTimeMedID(File didDir, long[] containerIds)
didDir
- Verzeichnis mit den ContainerdateiencontainerIds
- Aufsteigend sortiertes Array mit den ContainerIDs der in diesem Verzeichnis enthaltenen Container (kann über PersistenceManager.getSortedContainerIDs(String)
ermittelt werden}
private ContainerBackupIndex createContainerBackupIndex(File didDir)
didDir
- Verzeichnis
private static List<List<File>> calcPartitions(String persDir, int numOfPartitions)
numOfPartitions
Elementen) von Listen von Verzeichnissen ein. Diese Liste repraesentiert
das vollstaendige Verzeichnis. Jedes Element kann von einem eigenen Thread bearbeitet werden.
persDir
- numOfPartitions
-
private static void stepDown(List<File> dirs)
dirs
- Verzeichnisse eines Verzeichnissesprivate static boolean splitDirs(List<List<File>> dirs, int pos)
pos
in zwei Haelften und fuegt die zweite Haelfte hinter pos
ein.
dirs
- Liste von Listen von Verzeichnissenpos
- Position
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |