public class RestorePersDirTsk extends Task
PersistenceManager.REBUILDINDEX_FILE_FLAG_NAME
,
PersistenceManager.rebuildIndex(Task, byte[], long, long, long, int, ArchiveDataKind)
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
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 |
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, ringOfDeathListener, taskStepListeners
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Modifier | Constructor and Description |
---|---|
private |
RestorePersDirTsk(PersistenceManager pMgr,
List<File> startDirectories,
int tmpMemSize) |
Modifier and Type | Method and Description |
---|---|
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. den von den einzelnen Tasks zum Wiederherstellen der Indexe benoetigten Speicher)
|
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
|
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
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
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 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
private RestorePersDirTsk(PersistenceManager pMgr, List<File> startDirectories, int tmpMemSize)
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.private boolean anyIndexFileMissing(File didDir)
didDir
- Verzeichnis das geprüft werden sollprivate 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
- Verzeichnisprivate 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