public class ArchiveTask extends Task
Modifier and Type | Class and Description |
---|---|
static class |
ArchiveTask.CloseContainerObject
Eine Instanz dieser Klasse wird eingefuegt, wenn ein Container aufgrund einer Parametrierungs-Aenderung abgeschlossen werden soll.
|
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
protected ArchiveDataKind |
adk |
protected long |
arsTime |
protected long |
aspID |
protected AttributeGroup |
atg |
private static AtomicLong |
CLOSE_CONT_SUCCESS |
protected Deflater |
compresser |
private static ContainerSettings |
containerSettings
Container-Einstellungen des Archivsystems (aus atg.archivContainer).
|
protected int |
dataEntryLen
Laenge des serislisierten Datensatzes inklusive Datensatz-Header
|
protected long |
dataIdx |
protected long |
dataTime |
protected String |
didPath |
protected String |
didPathA |
protected String |
didPathN |
protected DataIdentNode |
din |
protected byte[] |
idxBuffer |
private ArchiveRingBuffer |
inputDataQueue |
private long |
lastAContID |
private long |
lastADataIdx |
private static long |
lastArchiveTime
Letzte verwendete Archivzeit.
|
private long |
lastDataIdx |
private long |
lastDataTime |
private boolean |
lastDataWasGapMarker |
private long |
lastNDataIdx |
static String |
MSG_PID_DATAINDEX_ANOMALY
Kennzeichen der Betriebsmeldung
|
protected static ArchiveDataKind |
NA |
protected static ArchiveDataKind |
NN |
private static ArchiveDataKind |
OA |
protected long |
objID |
private static ArchiveDataKind |
ON |
protected static boolean |
ONLINE |
protected long |
openContID |
private ArchiveRingBuffer.PopObject |
popObject |
private ResultData |
rd |
protected static boolean |
REQUESTED |
protected int |
sv |
private static AtomicLong |
TOTAL_DS_FAIL |
private static AtomicLong |
TOTAL_DS_QUEUED |
private static AtomicLong |
TOTAL_DS_SUCCESS |
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor and Description |
---|
ArchiveTask(ArchiveManager archiveMgr,
RingOfDeathListener rodl,
int tskIdx,
ArchiveRingBuffer inQueue)
Konstruktor des Archiv-Tasks.
|
Modifier and Type | Method and Description |
---|---|
protected void |
assignIndexes(boolean requested) |
private boolean |
checkCloseCondition(ContainerSettings.CloseCondition closeCond)
Prueft ob der aktuelle Container die angegebenen Kriterien zum Container-Abschliessen erfuellt.
|
private void |
closeContainer(long closeObjID,
ArchiveTask.CloseContainerObject cco)
Schliesst einen Container ab.
|
protected void |
createRebuildIndexFlagFile()
Erzeugt die Kennzeichen-Datei, ob die Indexe veraendert wurden, um nach einem Absturz den Wiederanlauf zu beschleunigen.
|
static long |
getCloseContainerSuccess() |
static ContainerSettings |
getContainerSettings()
Liefert die Container-Einstellungen des Archivsystems.
|
static long |
getLastArchiveTime() |
static long |
getTotalDS_Fail() |
static long |
getTotalDS_Processed() |
static long |
getTotalDS_Queued() |
static long |
getTotalDS_Success() |
protected void |
handleErr(Exception e,
ArchiveTask.CloseContainerObject cco) |
protected void |
handleErr(Exception e,
String corpusDelicti) |
private boolean |
handleIndexBackstep()
Prueft, ob der Datenindex plausibel ist und sendet ggf. die entsprechenden Betriebsmeldungen.
|
protected void |
handleSevereErr(Throwable e,
String corpusDelicti) |
static void |
incrementTotalDS_Queued()
Wird vom
InQueuesMgr.ArchiveDataReceiver aufgerufen, nachdem er einen zu archivierenden Datensatz in eine der Queues gelegt
hat. |
private boolean |
isDataGap()
Prueft, ob eine potentielle Datenluecke vorliegt.
|
private void |
logDataGap() |
protected void |
logManualCloseContainer(long closeObjID,
ArchiveTask.CloseContainerObject cco) |
protected void |
logNewContainer() |
protected void |
logReceivedData(ResultData rd) |
protected void |
logWriteData() |
protected void |
lookupLastDataIdxes(boolean requested)
Sucht die letzten Datenindexe im Index sowie den Container aus dem .
|
protected boolean |
mustCloseContainer(boolean requested)
Prueft ob ein Container abgeschlossen werden muss.
|
private void |
presetData(ResultData resultData,
long archTime)
Setzt Flags, IDs, holt den DataIdentNode, usw.
|
static void |
resetDSCounter()
Setzt alle Zaehler auf 0.
|
void |
run() |
private boolean |
scanOAContForLastNoSrc()
Durchlaeuft den aktuellen Container und prueft, ob der letzte Datensatz die Kennung "keine Quelle" hat (langsam!).
|
private void |
sendAck(ResultData rd)
Sendet eine Quittung fuer den angegebenen Datensatz.
|
static void |
setContainerSettings(ContainerSettings cs)
Setzt die Container-Einstellungen des Archivsystems.
|
static void |
setLastArchiveTime(long atime) |
protected boolean |
storeData() |
protected boolean |
tooLargeForNewContainer()
Prueft extra auf Containergroesse.
|
void |
work(Object resultData,
long archTime)
Archiviert den uebergebenen Datensatz unter dem angegebenen Archivzeitstempel.
|
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
protected static final boolean REQUESTED
protected static final boolean ONLINE
private static final ArchiveDataKind OA
private static final ArchiveDataKind ON
protected static final ArchiveDataKind NA
protected static final ArchiveDataKind NN
public static final String MSG_PID_DATAINDEX_ANOMALY
private static AtomicLong TOTAL_DS_QUEUED
private static AtomicLong TOTAL_DS_SUCCESS
private static AtomicLong TOTAL_DS_FAIL
private static AtomicLong CLOSE_CONT_SUCCESS
protected byte[] idxBuffer
private ArchiveRingBuffer inputDataQueue
private ArchiveRingBuffer.PopObject popObject
private static long lastArchiveTime
private ResultData rd
protected long objID
protected long aspID
protected long arsTime
protected long dataTime
protected long dataIdx
protected long openContID
protected AttributeGroup atg
protected int sv
protected ArchiveDataKind adk
protected String didPath
protected String didPathA
protected String didPathN
protected DataIdentNode din
protected int dataEntryLen
private long lastADataIdx
private long lastNDataIdx
private long lastDataIdx
private long lastDataTime
private long lastAContID
private boolean lastDataWasGapMarker
protected Deflater compresser
private static ContainerSettings containerSettings
public ArchiveTask(ArchiveManager archiveMgr, RingOfDeathListener rodl, int tskIdx, ArchiveRingBuffer inQueue)
tMgr
- Task-ManagerpMgr
- Persistenz-Managerpublic static void setContainerSettings(ContainerSettings cs)
cs
- Container-Einstellungenpublic static ContainerSettings getContainerSettings()
public static void incrementTotalDS_Queued()
InQueuesMgr.ArchiveDataReceiver
aufgerufen, nachdem er einen zu archivierenden Datensatz in eine der Queues gelegt
hat.public static long getTotalDS_Queued()
public static long getTotalDS_Processed()
public static long getTotalDS_Success()
public static long getTotalDS_Fail()
public static long getCloseContainerSuccess()
resetDSCounter()
erfolgreich verarbeiteten Close-Container-Datensaetze. Kann zur
Test-Synchronisation verwendet werden.public static void resetDSCounter()
public static void setLastArchiveTime(long atime)
public static long getLastArchiveTime()
protected void assignIndexes(boolean requested) throws DIdNodeNotFoundException, IndexException, PersistenceException
public void work(Object resultData, long archTime)
resultData
- ErgebnisdatensatzarchTime
- Archivzeitstempelprotected boolean storeData() throws PersistenceException, IndexException
PersistenceException
IndexException
private void presetData(ResultData resultData, long archTime) throws DIdNodeNotFoundException
resultData
- Aktueller ErgebnisdatensatzarchTime
- ArchivzeitstempelDIdNodeNotFoundException
private void closeContainer(long closeObjID, ArchiveTask.CloseContainerObject cco)
closeObjID
- cco
- private boolean scanOAContForLastNoSrc() throws PersistenceException
DataIdentNode#lastOADataWasNoSource
. Der Aufrufer dieser Methode muss die Synchronisierung ueber den
DataIdentNode durchfuehren.PersistenceException
protected void lookupLastDataIdxes(boolean requested) throws IndexException
IndexException
private boolean isDataGap() throws IndexException
IndexException
private boolean handleIndexBackstep() throws IndexException
IndexException
private void sendAck(ResultData rd)
rd
- Datensatzprotected void handleErr(Exception e, ArchiveTask.CloseContainerObject cco)
protected void createRebuildIndexFlagFile() throws PersistenceException
PersistenceException
protected void logReceivedData(ResultData rd)
protected void logWriteData() throws IndexException
IndexException
protected void logNewContainer()
private void logDataGap()
protected void logManualCloseContainer(long closeObjID, ArchiveTask.CloseContainerObject cco)
protected boolean mustCloseContainer(boolean requested) throws PersistenceException, IndexException
containerSettings
und dem mit de.bsvrz.ars.ars.persistence.PersistenceManager#accessContainer()
im Zugriff befindlichen Daten. Der Aufrufer dieser Methode muss die Synchronisierung
ueber den DataIdentNode durchfuehren.requested
- Wahr fuer nachgeforderte, falsch fuer aktuelle Daten.PersistenceException
IndexException
protected boolean tooLargeForNewContainer() throws PersistenceException
PersistenceException
private boolean checkCloseCondition(ContainerSettings.CloseCondition closeCond) throws PersistenceException, IndexException
closeCond
- Container-Abschluss-kriterienPersistenceException
IndexException