Commit 417032b1 authored by Jonathan Haas's avatar Jonathan Haas

Weitere Korrektur, den richtigen Index aktualisieren...

parent 561f36b7
......@@ -1325,7 +1325,7 @@ public final class DataIdentNode {
updateContainerIndex(containerFile, getHeaderIdx(containerFile.getArchiveDataKind()));
}
private static void updateContainerIndex(final ContainerManagementData containerFile, final ContainerManagementIndex index) throws PersistenceException {
public static void updateContainerIndex(final ContainerManagementData containerFile, final ContainerManagementIndex index) throws PersistenceException {
for(ContainerManagementInformation information : ContainerManagementInformation.values()) {
if(information.isNumeric()) {
long paramAsLong = containerFile.getContainerHeaderParamAsLong(information);
......
......@@ -213,10 +213,21 @@ public class ContainerFileHandle extends BasicContainerFileHandle {
* @throws PersistenceException Lesefehler im Persistenzverzeichnis
*/
public void writeContainerHeader() throws PersistenceException {
writeContainerHeaderWithoutUpdatingIndex();
_din.updateContainerIndex(this);
}
/**
* Die mit {@link #setContainerHeaderParam(KeyValParam, String)} gesetzten Parameter werden im Container-Header persistiert.
*
* Diese Methode aktualisiert den Verwaltugnsdatenindex nicht und kann z. B. benutzt werden, währen ein Container repariert wird bevor der Index aufgebaut ist.
*
* @throws PersistenceException Lesefehler im Persistenzverzeichnis
*/
public void writeContainerHeaderWithoutUpdatingIndex() throws PersistenceException {
assertWriteAccess();
getContainerFile().writeContainerHeader();
_din.updateContainerIndex(this);
}
......
......@@ -1334,7 +1334,11 @@ public final class PersistenceManager {
containerFileHandle.setContainerHeaderParam(ContainerHdr.CHP_DATA_TIME_MAX, maxDtime);
containerFileHandle.setContainerHeaderParam(ContainerHdr.CHP_ARC_TIME_MIN, minAtime);
containerFileHandle.setContainerHeaderParam(ContainerHdr.CHP_ARC_TIME_MAX, maxAtime);
containerFileHandle.writeContainerHeader();
// Den gerade wiederhergestellten Index korrigieren, nicht den in der DataIdentNode
containerFileHandle.writeContainerHeaderWithoutUpdatingIndex();
DataIdentNode.updateContainerIndex(containerFileHandle, containerRestoreParams.getContHdrIdx());
logger.warning("Container-Header musste wiederhergestellt werden: " + didPath + " Container: " + contFile);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment