Package de.bsvrz.ars.ars.mgmt.datatree
Class IndexTree
java.lang.Object
de.bsvrz.ars.ars.mgmt.datatree.IndexTree
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
FieldsModifier and TypeFieldDescriptionstatic final long
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
ConstructorsConstructorDescriptionIndexTree
(int maximumIndexSizeBytes, PersistenceDirectory persistenceDirectory) Konstruktor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Schließt alle Indexe, die vom aktuellen Thread geöffnet wurden.void
closeIndexes
(LockedContainerDirectory containerDirectory) Schließt alle vom aktuellen Thread geöffneten Indexe und schreibt die Puffer auf die Festplatte.void
deleteIndex
(LockedContainerDirectory containerDirectory, RebuildResult result) Löscht alle Indexe und Indexdateien in einem Containerverzeichnis.void
Debug-Methode.void
flushIndexes
(LockedContainerDirectory containerDirectory) Schreibt die Puffer für alle vom aktuellen Thread geöffneten Indexe auf die Festplatte ohne den Index zu schließen.Optional<? extends ArchiveTimeIndex>
getArchiveTimeIndex
(LockedContainerDirectory containerDirectory) Optional<? extends ContainerManagementIndex>
getContainerManagementIndex
(LockedContainerDirectory containerDirectory) Optional<? extends DataIndexIndex>
getDataIndexIndex
(LockedContainerDirectory containerDirectory) Optional<? extends DataTimeIndex>
getDataTimeIndex
(LockedContainerDirectory containerDirectory) void
recreateIndex
(LockedContainerDirectory containerDirectory, RebuildResult result) Erstellt alle Indexe aus den Containerdaten neu.
-
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:
-
-
Constructor Details
-
IndexTree
Konstruktor.- Parameters:
maximumIndexSizeBytes
- Maximale Anzahl Bytes, die ein Index im Speicher Cachen darfpersistenceDirectory
- Verwaltung der Persistenz
-
-
Method Details
-
closeIndexes
public void closeIndexes()Schließt alle Indexe, die vom aktuellen Thread geöffnet wurden. -
getContainerManagementIndex
public Optional<? extends ContainerManagementIndex> getContainerManagementIndex(LockedContainerDirectory containerDirectory) throws IndexException - Throws:
IndexException
-
getDataIndexIndex
public Optional<? extends DataIndexIndex> getDataIndexIndex(LockedContainerDirectory containerDirectory) throws IndexException - Throws:
IndexException
-
getDataTimeIndex
public Optional<? extends DataTimeIndex> getDataTimeIndex(LockedContainerDirectory containerDirectory) throws IndexException - Throws:
IndexException
-
getArchiveTimeIndex
public Optional<? extends ArchiveTimeIndex> getArchiveTimeIndex(LockedContainerDirectory containerDirectory) throws IndexException - Throws:
IndexException
-
recreateIndex
public void recreateIndex(LockedContainerDirectory containerDirectory, @Nullable RebuildResult result) throws IndexException Erstellt alle Indexe aus den Containerdaten neu.- Parameters:
result
- Ergebnis (Statistik) oder null- Throws:
IndexException
- Falls die Indexe nicht neu erstellt werden konnten
-
deleteIndex
public void deleteIndex(LockedContainerDirectory containerDirectory, @Nullable RebuildResult result) throws IndexException Löscht alle Indexe und Indexdateien in einem Containerverzeichnis.- Parameters:
result
- Statistik (die Zahl der gelöschten Indexdateien wird in result.indexesDeleted gespeichert)- Throws:
IndexException
- Fehler beim Löschen
-
closeIndexes
Schließt alle vom aktuellen Thread geöffneten Indexe und schreibt die Puffer auf die Festplatte.- Throws:
IndexException
- Fehler beim Schreiben der Indexdateien
-
flushIndexes
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. -
ensureNoCached
public void ensureNoCached()Debug-Methode. Wirft eine Exception, wenn der aktuelle Thread aktuell Indexe geöffnet hat.
-