Package de.bsvrz.ars.ars.mgmt.datatree
Class IndexTree
java.lang.Object
de.bsvrz.ars.ars.mgmt.datatree.IndexTree
public final class IndexTree
extends java.lang.Object
Diese Klasse verwaltet die vom aktuellen Thread geöffneten Indexe. Wenn die Synchronisierung auf eine Datenidentifikation beendet wird, werden automatisch alle Indexe hier freigegeben und können dann von anderen Threads in Anspruch genommen werden.
-
Field Summary
Fields Modifier and Type Field Description static long
ENTRIES_WARN_LIMIT
Limit ab dem der User über zu viele Containerdateien in einer DID gewarnt wird. 32000 ist schon recht hoch, es gibt aber viele "volle" Archivsysteme, und wir wollen keinen Debug-Spam erzeugen. -
Constructor Summary
Constructors Constructor Description IndexTree(int maximumIndexSizeBytes, PersistenceManager persistenceManager)
Konstruktor. -
Method Summary
Modifier and Type Method Description void
closeIndexes()
Schließt alle Indexe, die vom aktuellen Thread geöffnet wurden.void
closeIndexes(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
Schließt alle vom aktuellen Thread geöffneten Indexe und schreibt die Puffer auf die Festplatte.void
deleteIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind, PersistenceManager.RebuildResult result)
Löscht alle Indexe und Indexdateien in einem Containerverzeichnis.void
ensureNoCached()
Debug-Methode.void
flushIndexes(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
Schreibt die Puffer für alle vom aktuellen Thread geöffneten Indexe auf die Festplatte ohne den Index zu schließen.ArchiveTimeIndex
getArchiveTimeIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
ContainerManagementIndex
getContainerManagementIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
DataIndexIndex
getDataIndexIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
DataTimeIndex
getDataTimeIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)
void
recreateIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind, PersistenceManager.RebuildResult result)
Erstellt alle Indexe aus den Containerdaten neu.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
ENTRIES_WARN_LIMIT
public static final long ENTRIES_WARN_LIMITLimit ab dem der User über zu viele Containerdateien in einer DID gewarnt wird. 32000 ist schon recht hoch, es gibt aber viele "volle" Archivsysteme, und wir wollen keinen Debug-Spam erzeugen.- See Also:
- Constant Field Values
-
-
Constructor Details
-
IndexTree
Konstruktor.- Parameters:
maximumIndexSizeBytes
- Maximale Anzahl Bytes, die ein Index im Speicher Cachen darfpersistenceManager
- Verwaltung der Persistenz
-
-
Method Details
-
closeIndexes
public void closeIndexes()Schließt alle Indexe, die vom aktuellen Thread geöffnet wurden. -
getContainerManagementIndex
public ContainerManagementIndex getContainerManagementIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind) throws IndexException- Throws:
IndexException
-
getDataIndexIndex
public DataIndexIndex getDataIndexIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind) throws IndexException- Throws:
IndexException
-
getDataTimeIndex
public DataTimeIndex getDataTimeIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind) throws IndexException- Throws:
IndexException
-
getArchiveTimeIndex
public ArchiveTimeIndex getArchiveTimeIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind) throws IndexException- Throws:
IndexException
-
recreateIndex
public void recreateIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind, @Nullable PersistenceManager.RebuildResult result) throws IndexExceptionErstellt alle Indexe aus den Containerdaten neu.- Parameters:
lock
- Synchronisierung auf DatenidentifikationarchiveDataKind
- Archivdatenartresult
- Ergebnis (Statistik) oder null- Throws:
IndexException
- Falls die Indexe nicht neu erstellt werden konnten
-
deleteIndex
public void deleteIndex(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind, @Nullable PersistenceManager.RebuildResult result) throws IndexExceptionLöscht alle Indexe und Indexdateien in einem Containerverzeichnis.- Parameters:
lock
- Synchronisierung auf DatenidentifikationarchiveDataKind
- Archivdatenartresult
- Statistik (die Zahl der gelöschten Indexdateien wird in result.containerIgnored gespeichert)- Throws:
IndexException
- Fehler beim Löschen
-
closeIndexes
public void closeIndexes(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind) throws IndexExceptionSchließt alle vom aktuellen Thread geöffneten Indexe und schreibt die Puffer auf die Festplatte.- Parameters:
lock
- Synchronisierung auf DatenidentifikationarchiveDataKind
- Archivdatenart- Throws:
IndexException
- Fehler beim Schreiben der Indexdateien
-
flushIndexes
public void flushIndexes(SyncKey<IdDataIdentification> lock, de.bsvrz.dav.daf.main.archive.ArchiveDataKind archiveDataKind)Schreibt die Puffer für alle vom aktuellen Thread geöffneten Indexe auf die Festplatte ohne den Index zu schließen. Fehler werden dabei ignoriert udn führen zu einer Warnung. Diese Methode wird vom Datenkonsistenten Backup benutzt. Hier ist bei Fehlern keine bessere Fehlerbehandlung sinnvoll.- Parameters:
lock
- Synchronisierung auf DatenidentifikationarchiveDataKind
- Archivdatenart
-
ensureNoCached
public void ensureNoCached()Debug-Methode. Wirft eine Exception wenn der aktuelle Thread aktuell Idnexe geöffnet hat.
-