/** * Get the best iterator for iterating over the contents of this * region. This method will either an iterator that uses hash * ordering from the entry map, or, in the case of an overflow * region, an iterator that iterates over the entries in disk order. */ public Iterator<RegionEntry> getBestIterator(boolean includeValues) { DiskRegion dr = this.getDiskRegion(); if (DiskPage.DISK_PAGE_SIZE > 0 && includeValues && dr != null) { //Wait for the disk region to recover values first. dr.waitForAsyncRecovery(); if(dr.getNumOverflowOnDisk() > 0) { return new DiskSavyIterator(); } } return this.entries.regionEntries().iterator(); }
if (recovValues) { assertEquals(1, dr.getNumEntriesInVM()); assertEquals(0, dr.getNumOverflowOnDisk()); } else { assertEquals(0, dr.getNumEntriesInVM()); assertEquals(1, dr.getNumOverflowOnDisk()); assertEquals(0, dr.getNumOverflowOnDisk()); if (recovValues) { assertEquals(1, dr.getNumEntriesInVM()); assertEquals(0, dr.getNumOverflowOnDisk()); } else { assertEquals(1, dr.getNumEntriesInVM()); assertEquals(0, dr.getNumOverflowOnDisk()); assertEquals(0, dr.getNumOverflowOnDisk()); if (recovValues) { assertEquals(1, dr.getNumEntriesInVM()); assertEquals(0, dr.getNumOverflowOnDisk()); } else { assertEquals(0, dr.getNumEntriesInVM()); assertEquals(1, dr.getNumOverflowOnDisk()); assertEquals(0, dr.getNumOverflowOnDisk()); if (recovValues) { assertEquals(1, dr.getNumEntriesInVM());
void statsClear(LocalRegion region) { if (region instanceof BucketRegion) { BucketRegion owner=(BucketRegion)region; long curInVM = owner.getNumEntriesInVM()*-1; long curOnDisk = owner.getNumOverflowOnDisk()*-1; long curBytesOnDisk = owner.getNumOverflowBytesOnDisk()*-1; incNumEntriesInVM(curInVM); incNumOverflowOnDisk(curOnDisk); incNumOverflowBytesOnDisk(curBytesOnDisk); owner.incNumEntriesInVM(curInVM); owner.incNumOverflowOnDisk(curOnDisk); owner.incNumOverflowBytesOnDisk(curBytesOnDisk); } else { // set them both to zero incNumEntriesInVM(getNumEntriesInVM()*-1); incNumOverflowOnDisk(getNumOverflowOnDisk()*-1); incNumOverflowBytesOnDisk(getNumOverflowBytesOnDisk()*-1); } }
void statsClear(LocalRegion region) { if (region instanceof BucketRegion) { BucketRegion owner=(BucketRegion)region; long curInVM = owner.getNumEntriesInVM()*-1; long curOnDisk = owner.getNumOverflowOnDisk()*-1; long curOnDiskBytes = owner.getNumOverflowBytesOnDisk()*-1; incNumEntriesInVM(curInVM); incNumOverflowOnDisk(curOnDisk); incNumOverflowBytesOnDisk(curOnDiskBytes); owner.incNumEntriesInVM(curInVM); owner.incNumOverflowOnDisk(curOnDisk); owner.incNumOverflowBytesOnDisk(curOnDiskBytes); } else { // set them both to zero incNumEntriesInVM(getNumEntriesInVM()*-1); incNumOverflowOnDisk(getNumOverflowOnDisk()*-1); incNumOverflowBytesOnDisk(getNumOverflowBytesOnDisk()*-1); } }
super.incNumOverflowOnDisk(getNumOverflowOnDisk()*-1); super.incNumOverflowBytesOnDisk(getNumOverflowBytesOnDisk()*-1); setEntriesMapIncompatible(true);