Package de.bsvrz.ars.ars.mgmt.datatree
Klasse 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.
-
Feldübersicht
FelderModifizierer und TypFeldBeschreibungstatic 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. -
Konstruktorübersicht
KonstruktorenKonstruktorBeschreibungIndexTree
(int maximumIndexSizeBytes, PersistenceDirectory persistenceDirectory) Konstruktor. -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungvoid
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.
-
Felddetails
-
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.- Siehe auch:
-
-
Konstruktordetails
-
IndexTree
Konstruktor.- Parameter:
maximumIndexSizeBytes
- Maximale Anzahl Bytes, die ein Index im Speicher Cachen darfpersistenceDirectory
- Verwaltung der Persistenz
-
-
Methodendetails
-
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 - Löst aus:
IndexException
-
getDataIndexIndex
public Optional<? extends DataIndexIndex> getDataIndexIndex(LockedContainerDirectory containerDirectory) throws IndexException - Löst aus:
IndexException
-
getDataTimeIndex
public Optional<? extends DataTimeIndex> getDataTimeIndex(LockedContainerDirectory containerDirectory) throws IndexException - Löst aus:
IndexException
-
getArchiveTimeIndex
public Optional<? extends ArchiveTimeIndex> getArchiveTimeIndex(LockedContainerDirectory containerDirectory) throws IndexException - Löst aus:
IndexException
-
recreateIndex
public void recreateIndex(LockedContainerDirectory containerDirectory, @Nullable RebuildResult result) throws IndexException Erstellt alle Indexe aus den Containerdaten neu.- Parameter:
result
- Ergebnis (Statistik) oder null- Löst aus:
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.- Parameter:
result
- Statistik (die Zahl der gelöschten Indexdateien wird in result.indexesDeleted gespeichert)- Löst aus:
IndexException
- Fehler beim Löschen
-
closeIndexes
Schließt alle vom aktuellen Thread geöffneten Indexe und schreibt die Puffer auf die Festplatte.- Löst aus:
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.
-