@@ -162,7 +162,7 @@ public class DOMFile extends BTree implements Lockable {
162
162
LogEntryTypes .addEntryType (LOG_UPDATE_LINK , UpdateLinkLoggable ::new );
163
163
}
164
164
165
- public final static short FILE_FORMAT_VERSION_ID = 9 ;
165
+ public final static short FILE_FORMAT_VERSION_ID = 10 ;
166
166
167
167
private final LockManager lockManager ;
168
168
@@ -2176,13 +2176,13 @@ public synchronized final void setOwnerObject(final Object ownerObject) {
2176
2176
*/
2177
2177
2178
2178
private boolean requiresRedo (final Loggable loggable , final DOMPage page ) {
2179
- return loggable .getLsn () > page .getPageHeader ().getLsn ();
2179
+ return loggable .getLsn (). compareTo ( page .getPageHeader ().getLsn ()) > 0 ;
2180
2180
}
2181
2181
2182
2182
protected void redoCreatePage (final CreatePageLoggable loggable ) {
2183
2183
final DOMPage newPage = getDOMPage (loggable .newPage );
2184
2184
final DOMFilePageHeader newPageHeader = newPage .getPageHeader ();
2185
- if (newPageHeader .getLsn () == Lsn .LSN_INVALID || requiresRedo (loggable , newPage )) {
2185
+ if (newPageHeader .getLsn (). equals ( Lsn .LSN_INVALID ) || requiresRedo (loggable , newPage )) {
2186
2186
try {
2187
2187
dropFreePageList ();
2188
2188
newPageHeader .setStatus (RECORD );
@@ -2238,7 +2238,7 @@ protected void undoCreatePage(final CreatePageLoggable loggable) {
2238
2238
protected void redoAddValue (final AddValueLoggable loggable ) {
2239
2239
final DOMPage page = getDOMPage (loggable .pageNum );
2240
2240
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2241
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2241
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2242
2242
try {
2243
2243
ByteConversion .shortToByte (loggable .tid , page .data , page .len );
2244
2244
page .len += LENGTH_TID ;
@@ -2270,7 +2270,7 @@ protected void undoAddValue(final AddValueLoggable loggable) {
2270
2270
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2271
2271
2272
2272
// is there anything to undo?
2273
- if (pageHeader .getLsn () == Lsn .LSN_INVALID || pageHeader .getStatus () == UNUSED ) {
2273
+ if (pageHeader .getLsn (). equals ( Lsn .LSN_INVALID ) || pageHeader .getStatus () == UNUSED ) {
2274
2274
LOG .warn ("Nothing to undo, but received: AddValueLoggable(txnId=" + loggable .getTransactionId ()
2275
2275
+ ", lsn=" + loggable .getLsn () + ", pageNum=" + loggable .pageNum
2276
2276
+ ", isOverflow=" + loggable .isOverflow + ")" );
@@ -2302,7 +2302,7 @@ protected void undoAddValue(final AddValueLoggable loggable) {
2302
2302
protected void redoUpdateValue (final UpdateValueLoggable loggable ) {
2303
2303
final DOMPage page = getDOMPage (loggable .pageNum );
2304
2304
final DOMFilePageHeader ph = page .getPageHeader ();
2305
- if (ph .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2305
+ if ((! ph .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2306
2306
final RecordPos rec = page .findRecord (ItemId .getId (loggable .tid ));
2307
2307
SanityCheck .THROW_ASSERT (rec != null ,
2308
2308
"tid " + ItemId .getId (loggable .tid ) +
@@ -2342,7 +2342,7 @@ protected void undoUpdateValue(final UpdateValueLoggable loggable) {
2342
2342
protected void redoRemoveValue (final RemoveValueLoggable loggable ) {
2343
2343
final DOMPage page = getDOMPage (loggable .pageNum );
2344
2344
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2345
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2345
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2346
2346
final RecordPos pos = page .findRecord (ItemId .getId (loggable .tid ));
2347
2347
SanityCheck .ASSERT (pos != null ,
2348
2348
"Record not found: " + ItemId .getId (loggable .tid ) + ": " +
@@ -2445,7 +2445,7 @@ protected void undoRemoveValue(final RemoveValueLoggable loggable) {
2445
2445
protected void redoRemoveEmptyPage (final RemoveEmptyPageLoggable loggable ) {
2446
2446
final DOMPage page = getDOMPage (loggable .pageNum );
2447
2447
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2448
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2448
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2449
2449
removePage (page );
2450
2450
}
2451
2451
}
@@ -2487,7 +2487,7 @@ protected void undoRemoveEmptyPage(final RemoveEmptyPageLoggable loggable) {
2487
2487
protected void redoRemovePage (final RemovePageLoggable loggable ) {
2488
2488
final DOMPage page = getDOMPage (loggable .pageNum );
2489
2489
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2490
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2490
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2491
2491
try {
2492
2492
pageHeader .setNextDataPage (Page .NO_PAGE );
2493
2493
pageHeader .setPrevDataPage (Page .NO_PAGE );
@@ -2531,7 +2531,7 @@ protected void redoWriteOverflow(final WriteOverflowPageLoggable loggable) {
2531
2531
try {
2532
2532
final Page page = getPage (loggable .pageNum );
2533
2533
final PageHeader pageHeader = page .getPageHeader ();
2534
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2534
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2535
2535
2536
2536
dropFreePageList ();
2537
2537
pageHeader .setStatus (RECORD );
@@ -2566,7 +2566,7 @@ protected void redoRemoveOverflow(final RemoveOverflowLoggable loggable) {
2566
2566
final Page page = getPage (loggable .pageNum );
2567
2567
page .read ();
2568
2568
final PageHeader pageHeader = page .getPageHeader ();
2569
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2569
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2570
2570
unlinkPages (page );
2571
2571
}
2572
2572
} catch (final IOException e ) {
@@ -2597,7 +2597,7 @@ protected void undoRemoveOverflow(final RemoveOverflowLoggable loggable) {
2597
2597
protected void redoInsertValue (final InsertValueLoggable loggable ) {
2598
2598
final DOMPage page = getDOMPage (loggable .pageNum );
2599
2599
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2600
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2600
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2601
2601
final int dlen = pageHeader .getDataLength ();
2602
2602
int offset = loggable .offset ;
2603
2603
// insert in the middle of the page?
@@ -2684,7 +2684,7 @@ protected void undoInsertValue(final InsertValueLoggable loggable) {
2684
2684
protected void redoSplitPage (final SplitPageLoggable loggable ) {
2685
2685
final DOMPage page = getDOMPage (loggable .pageNum );
2686
2686
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2687
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2687
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2688
2688
final byte [] oldData = page .data ;
2689
2689
page .data = new byte [fileHeader .getWorkSize ()];
2690
2690
System .arraycopy (oldData , 0 , page .data , 0 , loggable .splitOffset );
@@ -2716,7 +2716,7 @@ protected void undoSplitPage(final SplitPageLoggable loggable) {
2716
2716
protected void redoAddLink (final AddLinkLoggable loggable ) {
2717
2717
final DOMPage page = getDOMPage (loggable .pageNum );
2718
2718
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2719
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2719
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2720
2720
ByteConversion .shortToByte (ItemId .setIsLink (loggable .tid ), page .data , page .len );
2721
2721
page .len += LENGTH_TID ;
2722
2722
ByteConversion .longToByte (loggable .link , page .data , page .len );
@@ -2752,7 +2752,7 @@ protected void undoAddLink(final AddLinkLoggable loggable) {
2752
2752
protected void redoUpdateLink (final UpdateLinkLoggable loggable ) {
2753
2753
final DOMPage page = getDOMPage (loggable .pageNum );
2754
2754
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2755
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2755
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2756
2756
ByteConversion .longToByte (loggable .link , page .data , loggable .offset );
2757
2757
pageHeader .setLsn (loggable .getLsn ());
2758
2758
page .setDirty (true );
@@ -2772,7 +2772,7 @@ protected void undoUpdateLink(final UpdateLinkLoggable loggable) {
2772
2772
protected void redoAddMovedValue (final AddMovedValueLoggable loggable ) {
2773
2773
final DOMPage page = getDOMPage (loggable .pageNum );
2774
2774
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2775
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2775
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2776
2776
try {
2777
2777
ByteConversion .shortToByte (ItemId .setIsRelocated (loggable .tid ), page .data , page .len );
2778
2778
page .len += LENGTH_TID ;
@@ -2840,7 +2840,7 @@ protected void undoAddMovedValue(final AddMovedValueLoggable loggable) {
2840
2840
protected void redoUpdateHeader (final UpdateHeaderLoggable loggable ) {
2841
2841
final DOMPage page = getDOMPage (loggable .pageNum );
2842
2842
final DOMFilePageHeader pageHeader = page .getPageHeader ();
2843
- if (pageHeader .getLsn () != Lsn .LSN_INVALID && requiresRedo (loggable , page )) {
2843
+ if ((! pageHeader .getLsn (). equals ( Lsn .LSN_INVALID )) && requiresRedo (loggable , page )) {
2844
2844
if (loggable .nextPage != Page .NO_PAGE ) {
2845
2845
pageHeader .setNextDataPage (loggable .nextPage );
2846
2846
}
@@ -3190,7 +3190,7 @@ public String dumpPage() {
3190
3190
public boolean sync (final boolean syncJournal ) {
3191
3191
if (isDirty ()) {
3192
3192
write ();
3193
- if (isRecoveryEnabled () && syncJournal && logManager .get ().lastWrittenLsn () < pageHeader .getLsn ()) {
3193
+ if (isRecoveryEnabled () && syncJournal && logManager .get ().lastWrittenLsn (). compareTo ( pageHeader .getLsn ()) < 0 ) {
3194
3194
logManager .get ().flush (true , false );
3195
3195
}
3196
3196
return true ;
0 commit comments