Ian Maxon has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/919
Change subject: Change storage valid int and add explicit version
......................................................................
Change storage valid int and add explicit version
This change will stop old versions from possibly corrupting data written
by newer versions of Hyracks. It also adds an explicit version to the
tree metadata that must match the version at runtime.
Change-Id: I888ff0eacf5b3cb6ad7ec002c74f113c6ffcd496
---
M
hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
2 files changed, 16 insertions(+), 2 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/19/919/1
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
index e33b949..e9fe92b 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
@@ -62,4 +62,7 @@
public long getLSN();
public void setLSN(long lsn);
+
+ public int getVersion();
+
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
index 16fdecd..d9c8673 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
@@ -32,7 +32,10 @@
public class LIFOMetaDataFrame implements ITreeIndexMetaDataFrame {
// Arbitrarily chosen magic integer.
- protected static final int MAGIC_VALID_INT = 0x5bd1e995;
+ protected static final int MAGIC_VALID_INT = 0xDEADBEEF;
+ //Storage version #. Change this if you alter any tree frame formats to
stop
+ // possible corruption from old versions reading new formats.
+ protected static final int VERSION = 1;
protected static final int tupleCountOff = 0; //0
protected static final int freeSpaceOff = tupleCountOff + 4; //4
@@ -46,6 +49,7 @@
// It is only set in the first meta page other meta pages (i.e., with
level -2) have junk in the max page field.
private static final int additionalFilteringPageOff = validOff + 4; // 29
public static final int lsnOff = additionalFilteringPageOff + 4; // 33
+ public static final int storageVersionOff = lsnOff + 4;
protected ICachedPage page = null;
protected ByteBuffer buf = null;
@@ -116,6 +120,7 @@
buf.put(levelOff, level);
buf.putInt(nextPageOff, -1);
buf.putInt(additionalFilteringPageOff, -1);
+ buf.putInt(storageVersionOff, VERSION);
setValid(false);
}
@@ -131,7 +136,8 @@
@Override
public boolean isValid() {
- return buf.getInt(validOff) == MAGIC_VALID_INT;
+ return buf.getInt(validOff) == MAGIC_VALID_INT
+ && getVersion() == VERSION;
}
@Override
@@ -154,6 +160,11 @@
}
@Override
+ public int getVersion() {
+ return buf.getInt(storageVersionOff);
+ }
+
+ @Override
public int getLSMComponentFilterPageId() {
return buf.getInt(additionalFilteringPageOff);
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/919
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I888ff0eacf5b3cb6ad7ec002c74f113c6ffcd496
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Ian Maxon <[email protected]>