de.bsvrz.ars.ars.mgmt.tasks
Class RequestGapTask.RequestGapWorker
java.lang.Object
java.lang.Thread
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.RequestGapTask.RequestGapWorker
- All Implemented Interfaces:
- SuspendableTask, Runnable
- Enclosing class:
- RequestGapTask
private class RequestGapTask.RequestGapWorker
- extends Task
Method Summary |
private ArchiveDataSpecification |
buildRequest(long startIdx,
long endIdx)
|
private long |
calcLastDIdx(long obj,
long atg,
long asp,
short sv,
ArchiveTimeSpecification ats,
IndexResult oa,
IndexResult on,
IndexResult na,
IndexResult nn)
Errechnet den groessten Datenindex aus allen Containerlisten, der unter dem angegebenen TimingType noch innerhalb des nachzufordernden Bereichs liegt. |
private void |
closeMultiContIter(MultiContainerDataIterator multiContIt)
|
private List<SystemObject> |
copyReqArSFromDIN(DataIdentNode din)
Kopiert die Liste der Nachforderungs-Archive aus dem DataIdentNode. |
private String[] |
extractUnaskedArS(List<SystemObject> reqArchives,
String[] failedArchives)
|
private IndexResult |
getIndexResult(long obj,
long atg,
long asp,
short sv,
ArchiveTimeSpecification ats,
DataIdentNode din,
ArchiveDataKind archiveDataKind)
|
private long |
getMaxContainerDataIndexMaxArchiveTime(long maxTime,
File containerFile)
Gibt von einer Containerdatei den höchsten DataIndex zurück, von dem die ArchiveTime nicht älter als die angegebene Zeit ist |
private long |
getMaxContainerDataIndexMaxDataTime(long maxTime,
File containerFile)
Gibt von einer Containerdatei den höchsten DataIndex zurück, von dem die DataTime nicht älter als die angegebene Zeit ist |
private long |
idx(ArchiveData ad)
|
private boolean |
isGap(long start,
long end)
|
private long |
noModBits(ArchiveData ad)
|
private long |
noModBits(long dataIndex)
|
private boolean |
properDataState(ArchiveData ad)
|
private void |
requestDID(long obj,
long atg,
long asp,
short sv,
DataIdentNode din,
ArchiveTimeSpecification ats)
Fordert die angegebene Datenidentifikation innerhalb des angegebenen Bereichs nach. |
private void |
requestGap(List<SystemObject> archs,
int aIdx,
long lowBnd,
long upBnd,
String[] unaskedPreviousFailedArS,
RequestGapTask.GapFile oldGaps,
RequestGapTask.GapMarker newGaps)
Diese Methode fragt die uebergebene Datenluecke rekursiv bei der Liste der Archivsysteme ab. |
void |
run()
|
private boolean |
startCondition(ArchiveTimeSpecification ats,
long lowDidx,
long lowDTime,
long lowATime)
Prueft, ob der anstehende Datensatz innerhalb der Grenzen liegt |
Methods inherited from class java.lang.Thread |
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 |
workerIndex
public int workerIndex
dataDesc
private DataDescription dataDesc
object
private SystemObject object
iqm
private InQueuesMgr iqm
indexMem
private byte[] indexMem
RequestGapTask.RequestGapWorker
public RequestGapTask.RequestGapWorker(ArchiveManager aMgr,
int wkIndex)
run
public void run()
- Specified by:
run
in interface Runnable
- Overrides:
run
in class Thread
requestDID
private void requestDID(long obj,
long atg,
long asp,
short sv,
DataIdentNode din,
ArchiveTimeSpecification ats)
- Fordert die angegebene Datenidentifikation innerhalb des angegebenen Bereichs nach. Diese Methode pausiert, solange das Archivsystem im kritsichen Zustand
(d.h. Warteschlange fast voll) ist.
calcLastDIdx
private long calcLastDIdx(long obj,
long atg,
long asp,
short sv,
ArchiveTimeSpecification ats,
IndexResult oa,
IndexResult on,
IndexResult na,
IndexResult nn)
throws PersistenceException
- Errechnet den groessten Datenindex aus allen Containerlisten, der unter dem angegebenen TimingType noch innerhalb des nachzufordernden Bereichs liegt.
- Parameters:
obj
- ObjektIDatg
- AttributgruppenIDasp
- AspektIDsv
- imVarats
- Bereichoa
- Liste der OA-Container (mit Hilfe der Indexe ermittelt)on
- Liste der ON-Container (mit Hilfe der Indexe ermittelt)na
- Liste der NA-Container (mit Hilfe der Indexe ermittelt)nn
- Liste der NN-Container (mit Hilfe der Indexe ermittelt)
- Returns:
- groessten passenden Datenindex
- Throws:
PersistenceException
PersistenceException
getMaxContainerDataIndexMaxDataTime
private long getMaxContainerDataIndexMaxDataTime(long maxTime,
File containerFile)
throws PersistenceException
- Gibt von einer Containerdatei den höchsten DataIndex zurück, von dem die DataTime nicht älter als die angegebene Zeit ist
- Parameters:
maxTime
- Maximalzeit der Datenindexe, die berücksichtigt werdencontainerFile
- Die zu öffnende Containerdatei
- Returns:
- Den maximalen Datenindex innerhalb der Containerdatei oder -1 falls die Containerdatei gelöscht ist oder keine Daten enthält
- Throws:
PersistenceException
- Fehler in der Persistenz
getMaxContainerDataIndexMaxArchiveTime
private long getMaxContainerDataIndexMaxArchiveTime(long maxTime,
File containerFile)
throws PersistenceException
- Gibt von einer Containerdatei den höchsten DataIndex zurück, von dem die ArchiveTime nicht älter als die angegebene Zeit ist
- Parameters:
maxTime
- Maximalzeit der Datenindexe, die berücksichtigt werdencontainerFile
- Die zu öffnende Containerdatei
- Returns:
- Den maximalen Datenindex innerhalb der Containerdatei oder -1 falls die Containerdatei gelöscht ist oder keine Daten enthält
- Throws:
PersistenceException
- Fehler in der Persistenz
startCondition
private boolean startCondition(ArchiveTimeSpecification ats,
long lowDidx,
long lowDTime,
long lowATime)
- Prueft, ob der anstehende Datensatz innerhalb der Grenzen liegt
- Parameters:
ats
- GrenzenlowDidx
- Datenindex der unteren LueckenkantelowDTime
- Datenzeit der unteren LueckenkantelowATime
- Archivzeit der unteren Lueckenkante
- Returns:
- Wahr, wenn der anstehende Datensatz innerhalb der Grenzen liegt, falsch sonst
getIndexResult
private IndexResult getIndexResult(long obj,
long atg,
long asp,
short sv,
ArchiveTimeSpecification ats,
DataIdentNode din,
ArchiveDataKind archiveDataKind)
throws Exception
- Throws:
Exception
extractUnaskedArS
private String[] extractUnaskedArS(List<SystemObject> reqArchives,
String[] failedArchives)
copyReqArSFromDIN
private List<SystemObject> copyReqArSFromDIN(DataIdentNode din)
- Kopiert die Liste der Nachforderungs-Archive aus dem DataIdentNode. Jedes Archivsystem wird nur einmal in die Ergebnisliste aufgenommen.
- Parameters:
din
-
- Returns:
- Liste von Archiv-Objekten
requestGap
private void requestGap(List<SystemObject> archs,
int aIdx,
long lowBnd,
long upBnd,
String[] unaskedPreviousFailedArS,
RequestGapTask.GapFile oldGaps,
RequestGapTask.GapMarker newGaps)
throws InterruptedException
- Diese Methode fragt die uebergebene Datenluecke rekursiv bei der Liste der Archivsysteme ab. Bei jeder Luecke in der aktuellen Anfrage wird rekursiv eine
Anfrage bis Lueckenende an das in der Liste nachfolgende Archivsystem gestellt. Dadurch werden immer alle parametrierten Archivsysteme angefragt,
bevor der Datenindex an ein Lueckenende springt. Wenn fuer eine Luecke und ein Archivsystem vermerkt ist, dass dieses die Luecke nicht schliessen kann,
wird keine Nachforderungsanfrage gestellt.
- Parameters:
archs
- Liste von ArchivsystemenaIdx
- Archivsystem in der Liste, bei dem diese Anfrage gestellt werden solllowBnd
- Untergrenze der Anfrage (letzter vorhandener DS)upBnd
- Obergrenze der Anfrage (erster wieder vorhandener DS)
- Throws:
InterruptedException
buildRequest
private ArchiveDataSpecification buildRequest(long startIdx,
long endIdx)
isGap
private boolean isGap(long start,
long end)
properDataState
private boolean properDataState(ArchiveData ad)
idx
private long idx(ArchiveData ad)
noModBits
private long noModBits(long dataIndex)
noModBits
private long noModBits(ArchiveData ad)
closeMultiContIter
private void closeMultiContIter(MultiContainerDataIterator multiContIt)