@@ -164,7 +164,7 @@ public class DOMFile extends BTree implements Lockable {
164
164
LogEntryTypes .addEntryType (LOG_UPDATE_LINK , UpdateLinkLoggable ::new );
165
165
}
166
166
167
- public final static short FILE_FORMAT_VERSION_ID = 9 ;
167
+ public final static short FILE_FORMAT_VERSION_ID = 10 ;
168
168
169
169
//Page types
170
170
public final static byte LOB = 21 ;
@@ -2178,13 +2178,13 @@ public synchronized final void setOwnerObject(final Object ownerObject) {
2178
2178
*/
2179
2179
2180
2180
private boolean requiresRedo (final Loggable loggable , final DOMPage page ) {
2181
- return loggable .getLsn () > page .getPageHeader ().getLsn ();
2181
+ return loggable .getLsn (). compareTo ( page .getPageHeader ().getLsn ()) > 0 ;
2182
2182
}
2183
2183
2184
2184
protected void redoCreatePage (final CreatePageLoggable loggable ) {
2185
2185
final DOMPage newPage = getDOMPage (loggable .newPage );
2186
2186
final DOMFilePageHeader newPageHeader = newPage .getPageHeader ();
2187
- if (newPageHeader .getLsn () == Lsn .LSN_INVALID || requiresRedo (loggable , newPage )) {
2187
+ if (newPageHeader .getLsn (). equals ( Lsn .LSN_INVALID ) || requiresRedo (loggable , newPage )) {
2188
2188
try {
2189
2189
dropFreePageList ();
2190
2190
newPageHeader .setStatus (RECORD );
@@ -2240,7 +2240,7 @@ protected void undoCreatePage(final CreatePageLoggable loggable) {
2240
2240
protected void redoAddValue (final AddValueLoggable loggable ) {
2241
2241
final DOMPage page = getDOMPage (loggable .pageNum );
2242
2242
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2243
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2243
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2244
2244
try {
2245
2245
ByteConversion .shortToByte (loggable .tid , page .data , page .len );
2246
2246
page .len += LENGTH_TID ;
@@ -2272,7 +2272,7 @@ protected void undoAddValue(final AddValueLoggable loggable) {
2272
2272
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2273
2273
2274
2274
// is there anything to undo?
2275
- if (pageHeader .getLsn () == Lsn .LSN_INVALID || pageHeader .getStatus () == UNUSED ) {
2275
+ if (pageHeader .getLsn (). equals ( Lsn .LSN_INVALID ) || pageHeader .getStatus () == UNUSED ) {
2276
2276
LOG .warn ("Nothing to undo, but received: AddValueLoggable(txnId=" + loggable .getTransactionId ()
2277
2277
+ ", lsn=" + loggable .getLsn () + ", pageNum=" + loggable .pageNum
2278
2278
+ ", isOverflow=" + loggable .isOverflow + ")" );
@@ -2304,7 +2304,7 @@ protected void undoAddValue(final AddValueLoggable loggable) {
2304
2304
protected void redoUpdateValue (final UpdateValueLoggable loggable ) {
2305
2305
final DOMPage page = getDOMPage (loggable .pageNum );
2306
2306
final DOMFilePageHeader ph = page .getPageHeader ();
2307
- if (ph .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2307
+ if ((! ph .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2308
2308
final RecordPos rec = page .findRecord (ItemId .getId (loggable .tid ));
2309
2309
SanityCheck .THROW_ASSERT (rec != null ,
2310
2310
"tid " + ItemId .getId (loggable .tid ) +
@@ -2344,7 +2344,7 @@ protected void undoUpdateValue(final UpdateValueLoggable loggable) {
2344
2344
protected void redoRemoveValue (final RemoveValueLoggable loggable ) {
2345
2345
final DOMPage page = getDOMPage (loggable .pageNum );
2346
2346
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2347
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2347
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2348
2348
final RecordPos pos = page .findRecord (ItemId .getId (loggable .tid ));
2349
2349
SanityCheck .ASSERT (pos != null ,
2350
2350
"Record not found: " + ItemId .getId (loggable .tid ) + ": " +
@@ -2447,7 +2447,7 @@ protected void undoRemoveValue(final RemoveValueLoggable loggable) {
2447
2447
protected void redoRemoveEmptyPage (final RemoveEmptyPageLoggable loggable ) {
2448
2448
final DOMPage page = getDOMPage (loggable .pageNum );
2449
2449
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2450
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2450
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2451
2451
removePage (page );
2452
2452
}
2453
2453
}
@@ -2489,7 +2489,7 @@ protected void undoRemoveEmptyPage(final RemoveEmptyPageLoggable loggable) {
2489
2489
protected void redoRemovePage (final RemovePageLoggable loggable ) {
2490
2490
final DOMPage page = getDOMPage (loggable .pageNum );
2491
2491
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2492
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2492
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2493
2493
try {
2494
2494
pageHeader .setNextDataPage (Page .NO_PAGE );
2495
2495
pageHeader .setPrevDataPage (Page .NO_PAGE );
@@ -2533,7 +2533,7 @@ protected void redoWriteOverflow(final WriteOverflowPageLoggable loggable) {
2533
2533
try {
2534
2534
final Page page = getPage (loggable .pageNum );
2535
2535
final PageHeader pageHeader = page .getPageHeader ();
2536
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2536
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2537
2537
2538
2538
dropFreePageList ();
2539
2539
pageHeader .setStatus (RECORD );
@@ -2568,7 +2568,7 @@ protected void redoRemoveOverflow(final RemoveOverflowLoggable loggable) {
2568
2568
final Page page = getPage (loggable .pageNum );
2569
2569
page .read ();
2570
2570
final PageHeader pageHeader = page .getPageHeader ();
2571
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2571
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2572
2572
unlinkPages (page );
2573
2573
}
2574
2574
} catch (final IOException e ) {
@@ -2599,7 +2599,7 @@ protected void undoRemoveOverflow(final RemoveOverflowLoggable loggable) {
2599
2599
protected void redoInsertValue (final InsertValueLoggable loggable ) {
2600
2600
final DOMPage page = getDOMPage (loggable .pageNum );
2601
2601
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2602
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2602
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2603
2603
final int dlen = pageHeader .getDataLength ();
2604
2604
int offset = loggable .offset ;
2605
2605
// insert in the middle of the page?
@@ -2686,7 +2686,7 @@ protected void undoInsertValue(final InsertValueLoggable loggable) {
2686
2686
protected void redoSplitPage (final SplitPageLoggable loggable ) {
2687
2687
final DOMPage page = getDOMPage (loggable .pageNum );
2688
2688
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2689
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2689
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2690
2690
final byte [] oldData = page .data ;
2691
2691
page .data = new byte [fileHeader .getWorkSize ()];
2692
2692
System .arraycopy (oldData , 0 , page .data , 0 , loggable .splitOffset );
@@ -2718,7 +2718,7 @@ protected void undoSplitPage(final SplitPageLoggable loggable) {
2718
2718
protected void redoAddLink (final AddLinkLoggable loggable ) {
2719
2719
final DOMPage page = getDOMPage (loggable .pageNum );
2720
2720
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2721
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2721
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2722
2722
ByteConversion .shortToByte (ItemId .setIsLink (loggable .tid ), page .data , page .len );
2723
2723
page .len += LENGTH_TID ;
2724
2724
ByteConversion .longToByte (loggable .link , page .data , page .len );
@@ -2754,7 +2754,7 @@ protected void undoAddLink(final AddLinkLoggable loggable) {
2754
2754
protected void redoUpdateLink (final UpdateLinkLoggable loggable ) {
2755
2755
final DOMPage page = getDOMPage (loggable .pageNum );
2756
2756
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2757
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2757
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2758
2758
ByteConversion .longToByte (loggable .link , page .data , loggable .offset );
2759
2759
pageHeader .setLsn (loggable .getLsn ());
2760
2760
page .setDirty (true );
@@ -2774,7 +2774,7 @@ protected void undoUpdateLink(final UpdateLinkLoggable loggable) {
2774
2774
protected void redoAddMovedValue (final AddMovedValueLoggable loggable ) {
2775
2775
final DOMPage page = getDOMPage (loggable .pageNum );
2776
2776
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2777
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2777
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2778
2778
try {
2779
2779
ByteConversion .shortToByte (ItemId .setIsRelocated (loggable .tid ), page .data , page .len );
2780
2780
page .len += LENGTH_TID ;
@@ -2842,7 +2842,7 @@ protected void undoAddMovedValue(final AddMovedValueLoggable loggable) {
2842
2842
protected void redoUpdateHeader (final UpdateHeaderLoggable loggable ) {
2843
2843
final DOMPage page = getDOMPage (loggable .pageNum );
2844
2844
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2845
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2845
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2846
2846
if (loggable .nextPage != Page .NO_PAGE ) {
2847
2847
pageHeader .setNextDataPage (loggable .nextPage );
2848
2848
}
@@ -3192,7 +3192,7 @@ public String dumpPage() {
3192
3192
public boolean sync (final boolean syncJournal ) {
3193
3193
if (isDirty ()) {
3194
3194
write ();
3195
- if (isRecoveryEnabled () && syncJournal && logManager .get ().lastWrittenLsn () < pageHeader .getLsn ()) {
3195
+ if (isRecoveryEnabled () && syncJournal && logManager .get ().lastWrittenLsn (). compareTo ( pageHeader .getLsn ()) < 0 ) {
3196
3196
logManager .get ().flush (true , false );
3197
3197
}
3198
3198
return true ;
0 commit comments