Class ArchiveTask

Direct Known Subclasses:
ArchiveRequestedTask

public class ArchiveTask
extends RepeatingTask
Task zur Archivierung von Datensätzen. Ist nicht von SingleTask abgeleitet, weil ein spezieller ArchiveRingBuffer verwendet wird, der zwei Objekte (ResultData und Archivzeit) speichern kann. Die work()-Methode hat deswegen zwei Parameter.
  • Field Details

    • MSG_PID_DATAINDEX_ANOMALY

      public static final java.lang.String MSG_PID_DATAINDEX_ANOMALY
      Kennzeichen der Betriebsmeldung
      See Also:
      Constant Field Values
    • _successCount

      protected final java.util.concurrent.atomic.AtomicLong _successCount
    • _failCount

      protected final java.util.concurrent.atomic.AtomicLong _failCount
    • _closeCount

      protected final java.util.concurrent.atomic.AtomicLong _closeCount
    • arsTime

      protected long arsTime
    • dataTime

      protected long dataTime
    • dataIdx

      protected long dataIdx
    • openContID

      protected long openContID
    • adk

      protected de.bsvrz.dav.daf.main.archive.ArchiveDataKind adk
    • didPath

      protected DataIdentificationDir didPath
    • din

      protected DataIdentNode din
    • dataEntryLen

      protected int dataEntryLen
      Länge des serislisierten Datensatzes inklusive Datensatz-Header
    • compresser

      protected final java.util.zip.Deflater compresser
  • Constructor Details

    • ArchiveTask

      public ArchiveTask​(ArchiveManager archiveMgr, int tskIdx, de.bsvrz.sys.funclib.losb.ringbuffer.ArchiveRingBuffer inQueue)
      Konstruktor des Archiv-Tasks.
      Parameters:
      archiveMgr - Archiv-Manager
      tskIdx - Task-ID
      inQueue - Input-Queue
  • Method Details

    • setContainerSettings

      public static void setContainerSettings​(de.bsvrz.sys.funclib.losb.datk.ContainerSettings cs)
      Setzt die Container-Einstellungen des Archivsystems.
      Parameters:
      cs - Container-Einstellungen
    • getContainerSettings

      public static de.bsvrz.sys.funclib.losb.datk.ContainerSettings getContainerSettings()
      Liefert die Container-Einstellungen des Archivsystems.
      Returns:
      Container-Einstellungen
    • step

      public void step() throws java.lang.InterruptedException
      Description copied from class: RepeatingTask
      Implementiert die beliebige wiederholt auszuführende Aufgabe
      Specified by:
      step in class RepeatingTask
      Throws:
      java.lang.InterruptedException - Thread unterbrochen
    • terminateTask

      public void terminateTask()
      Description copied from class: AbstractTask
      Terminiert den Task indem dafür gesorgt wird, das AbstractTask.shouldTerminate() true zurückliefert. Der Task sollte diese Funktion regelmäßig aufrufen um dann bei Rückgabe von true den Task zeitnah zu beenden.
      Overrides:
      terminateTask in class AbstractTask
    • getProcessedCount

      public long getProcessedCount()
      Returns:
      Anzahl der seit Systemstart zur Archivierung verarbeiteten Datensätze (erfolgreich und nicht erfolgreich archiviert)
    • getSuccessCount

      public long getSuccessCount()
      Returns:
      Anzahl der seit Systemstart erfolgreich archivierten Datensätze
    • getFailedCount

      public long getFailedCount()
      Returns:
      Anzahl der seit Systemstart nicht erfolgreich archivierten Datensätze
    • getCloseContainerSuccess

      public long getCloseContainerSuccess()
      Returns:
      Zahl aller seit dem Start oder letzten resetDSCounter() erfolgreich verarbeiteten Close-Container-Datensätze. Kann zur Test-Synchronisation verwendet werden.
    • resetDSCounter

      public void resetDSCounter()
      Setzt alle Zähler auf 0.
    • setLastArchiveTime

      public static void setLastArchiveTime​(long atime)
    • getLastArchiveTime

      public static long getLastArchiveTime()
    • work

      public void work​(java.lang.Object resultData, long archTime)
      Archiviert den übergebenen Datensatz unter dem angegebenen Archivzeitstempel.
      Parameters:
      resultData - Ergebnisdatensatz
      archTime - Archivzeitstempel
    • storeData

      protected boolean storeData() throws PersistenceException, IndexException, SynchronizationFailedException
      Throws:
      PersistenceException
      IndexException
      SynchronizationFailedException
    • lookupLastDataIdxes

      protected void lookupLastDataIdxes​(IdDataIdentification dataIdentification, boolean requested) throws IndexException, SynchronizationFailedException
      Sucht die letzten Datenindexe im Index sowie den Container.
      Throws:
      IndexException - Lesefehler der Indexe (z. B. korrupt)
      SynchronizationFailedException
    • handleErr

      protected void handleErr​(java.lang.Exception e, java.lang.String corpusDelicti)
    • handleErr

      protected void handleErr​(java.lang.Exception e, ArchiveTask.CloseContainerObject cco)
    • createRebuildIndexFlagFile

      protected void createRebuildIndexFlagFile() throws PersistenceException
      Erzeugt die Kennzeichen-Datei, ob die Indexe verändert wurden, um nach einem Absturz den Wiederanlauf zu beschleunigen.
      Throws:
      PersistenceException - Lesefehler im Persistenzverzeichnis