DiskRegionVersionVector rvv = new DiskRegionVersionVector(id0); rvv.getNextVersion(); rvv.getNextVersion(); rvv.getNextVersion(); rvv.recordVersion(id1, 1); rvv.recordVersion(id1, 3); rvv.recordVersion(id1, 5); rvv.recordGCVersion(id1, 3); rvv.recordGCVersion(id2, 4950); rvv.recordVersion(id2, 5000); rvv.recordVersion(id2, 5001); rvv.recordVersion(id2, 5005); rvv.removeOldVersions(); assertEquals("expected gc version to be set to current version for " + rvv.fullToString(), rvv.getCurrentVersion(), rvv.getGCVersion(null)); assertEquals("expected gc version to be set to current version for " + rvv.fullToString(), rvv.getVersionForMember(id1), rvv.getGCVersion(id1)); assertEquals("expected gc version to be set to current version for " + rvv.fullToString(), rvv.getVersionForMember(id2), rvv.getGCVersion(id2)); assertEquals("expected exceptions to be erased for " + rvv.fullToString(), rvv.getExceptionCount(id1), 0); assertEquals("expected exceptions to be erased for " + rvv.fullToString(),
DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 3); DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id1); rvv1.recordVersions(rvv0); assertEquals(3, rvv1.getCurrentVersion()); assertFalse(rvv1.contains(id1, 2)); assertTrue(rvv1.contains(id1, 1)); assertTrue(rvv1.contains(id1, 3)); assertTrue(rvv1.contains(id0, 3)); assertTrue(rvv0.sameAs(rvv1)); rvv1.recordVersion(id1, 2); assertTrue(rvv1.isNewerThanOrCanFillExceptionsFor(rvv0)); assertFalse(rvv0.isNewerThanOrCanFillExceptionsFor(rvv1)); assertTrue(rvv1.dominates(rvv0)); assertFalse(rvv0.dominates(rvv1));
public void test48066_2() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); for (int i=1; i<=10; i++) { rvv0.recordVersion(id0, i); } DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id0); rvv0.recordVersions(rvv1); System.out.println("rvv0="+rvv0.fullToString()); rvv0.recordVersion(id0, 4); System.out.println("after record 4, rvv0="+rvv0.fullToString()); assertEquals(4, rvv0.getCurrentVersion()); rvv0.recordVersion(id0, 7); System.out.println("after record 7, rvv0="+rvv0.fullToString()); assertEquals(7, rvv0.getCurrentVersion()); assertFalse(rvv0.contains(id0, 5)); DiskRegionVersionVector rvv2 = (DiskRegionVersionVector)rvv0.getCloneForTransmission(); System.out.println("after clone, rvv2="+rvv2.fullToString()); assertEquals(11, rvv0.getNextVersion()); assertFalse(rvv2.contains(id0, 5)); assertEquals(11, rvv2.getNextVersion()); }
public void testRVVSnapshot() throws IOException, ClassNotFoundException { DiskStoreID ownerId = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); rvv.recordVersion(id1, 2); rvv.recordVersion(id1, 1); rvv.recordVersion(id1, 7); rvv.recordVersion(id1, 9); rvv.recordVersion(id1, 20); rvv.recordVersion(id1, 11); rvv.recordVersion(id1, 12); rvv.recordGCVersion(id2, 5); rvv.recordGCVersion(id1, 3); ConcurrentHashMap<DiskStoreID, RegionVersionHolder<DiskStoreID>> vector = rvv.getCopyOfSnapShotOfMemberVersion(); ConcurrentHashMap<DiskStoreID, Long> gcVersions = rvv.getMemberToGCVersionTest(); DiskRegionVersionVector snapShotRvv = new DiskRegionVersionVector(ownerId, vector, rvv.getCurrentVersion(), gcVersions, rvv.getGCVersion(null), false, rvv.getLocalExceptions()); assertTrue(rvv.sameAs(snapShotRvv)); }
public void test48066_1() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); for (int i=1; i<=3; i++) { rvv0.recordVersion(id0, i); } System.out.println("rvv0="+rvv0.fullToString()); DiskRegionVersionVector rvv1 = (DiskRegionVersionVector)rvv0.getCloneForTransmission(); System.out.println("after clone, rvv1="+rvv1.fullToString()); DiskRegionVersionVector rvv2 = new DiskRegionVersionVector(id0); for (int i=1; i<=10; i++) { rvv2.recordVersion(id0, i); } rvv2.recordVersions(rvv1); System.out.println("after init, rvv2="+rvv2.fullToString()); rvv2.recordVersion(id0, 4); System.out.println("after record 4, rvv2="+rvv2.fullToString()); assertEquals(4, rvv2.getCurrentVersion()); rvv2.recordVersion(id0, 7); System.out.println("after record 7, rvv2="+rvv2.fullToString()); assertEquals(7, rvv2.getCurrentVersion()); }
public void testRVVGII() { DiskStoreID id1 = new DiskStoreID(1, 0); DiskStoreID id2 = new DiskStoreID(2, 0); DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id1); for(int i=1;i<19;i++) { rvv1.recordVersion(id1,i,null); } for(int i=1;i<10;i++) { rvv1.recordVersion(id2,i,null); } System.out.println("This node init, rvv1= "+ rvv1.fullToString()); DiskRegionVersionVector rvv2 = new DiskRegionVersionVector(id2); for(int i=1;i<20;i++) { rvv2.recordVersion(id1,i,null); } for(int i=1;i<12;i++) { rvv2.recordVersion(id2,i,null); } System.out.println("This node init, rvv2="+rvv2.fullToString()); rvv1.recordVersions(rvv2, null); System.out.println("This node init, rvv1="+rvv1.fullToString()); rvv1.getCurrentVersion(); System.out.println("This node init, rvv1="+rvv1.fullToString()); assert(rvv1.fullToString().contentEquals("RegionVersionVector[00000000-0000-0001-0000-000000000000={rv19 gc0 localVersion=19 local exceptions=[]} others={00000000-0000-0001-0000-000000000000={rv19 bsv1 bs=[], 00000000-0000-0002-0000-000000000000={rv11 bsv11 bs=[0]}, gc={}]")); assert(rvv1.contains(id1,19)); }
public void testSpecialException() { DiskStoreID id0 = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 2); DiskRegionVersionVector rvv1 = new DiskRegionVersionVector(id1); rvv1.recordVersions(rvv0); rvv1.recordVersion(id1, 3); RegionVersionHolder holder_at_rvv1 = rvv1.getLocalExceptions(); RegionVersionHolder holder_at_rvv0 = rvv0.getMemberToVersion().get(id1); holder_at_rvv1.addException(2,4); assertFalse(rvv1.isNewerThanOrCanFillExceptionsFor(rvv0)); assertFalse(rvv0.isNewerThanOrCanFillExceptionsFor(rvv1)); assertTrue(rvv1.dominates(rvv0)); assertTrue(rvv0.dominates(rvv1)); }
@Override protected RegionVersionVector<DiskStoreID> createCopy(DiskStoreID ownerId, ConcurrentHashMap<DiskStoreID, RegionVersionHolder<DiskStoreID>> vector, long version, ConcurrentHashMap<DiskStoreID, Long> gcVersions, long gcVersion, boolean singleMember, RegionVersionHolder<DiskStoreID> localExceptions) { return new DiskRegionVersionVector(ownerId, vector, version, gcVersions, gcVersion, singleMember, localExceptions); }
DiskStoreID id1 = new DiskStoreID(0, 1); DiskRegionVersionVector rvv0 = new DiskRegionVersionVector(id0); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.getNextVersion(); rvv0.recordVersion(id1, 1); rvv0.recordVersion(id1, 3); rvv0.recordVersion(id1, 5); Map<DiskStoreID, RegionVersionHolder<DiskStoreID>> memberToVersion = rvv0.getMemberToVersion(); RegionVersionHolder<DiskStoreID> holder1 = memberToVersion.get(id1); rvv0.recordGCVersion(id0, 2); rvv0.recordGCVersion(id1, 3); Map<DiskStoreID, RegionVersionHolder<DiskStoreID>> memberToVersion = rvv0.getMemberToVersion(); RegionVersionHolder<DiskStoreID> holder0 = memberToVersion.get(id0); rvv0.pruneOldExceptions(); Map<DiskStoreID, RegionVersionHolder<DiskStoreID>> memberToVersion = rvv0.getMemberToVersion(); RegionVersionHolder<DiskStoreID> holder0 = memberToVersion.get(id0); RegionVersionHolder<DiskStoreID> holder1 = memberToVersion.get(id1);
public void testRVVSerialization() throws IOException, ClassNotFoundException { DiskStoreID ownerId = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); rvv.recordVersion(id1, 5); rvv.recordVersion(id1, 6); rvv.recordVersion(id1, 7); rvv.recordVersion(id1, 9); rvv.recordVersion(id1, 20); rvv.recordVersion(id1, 11); rvv.recordVersion(id1, 12); rvv.recordGCVersion(id2, 5); rvv.recordGCVersion(id1, 3); assertTrue(rvv.sameAs(rvv.getCloneForTransmission())); HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT); InternalDataSerializer.writeObject(rvv.getCloneForTransmission(), out); byte[] bytes = out.toByteArray(); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(bytes)); DiskRegionVersionVector rvv2 = InternalDataSerializer.readObject(dis); assertTrue(rvv.sameAs(rvv2)); }
}}); final DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); rvv.recordVersion(m1, 0); rvv.recordVersion(m1, 1); rvv.recordVersion(m1, 2); rvv.recordVersion(m1, 10); rvv.recordVersion(m1, 7); rvv.recordVersion(m2, 0); rvv.recordVersion(m2, 1); rvv.recordVersion(m2, 2); rvv.recordGCVersion(m1, 1); rvv.recordGCVersion(m2, 0); one(drs).recordRecoveredGCVersion(m1, 1); one(drs).recordRecoveredGCVersion(m2, 0); one(drs).recordRecoveredVersonHolder(ownerId, rvv.getMemberToVersion().get(ownerId), true); one(drs).recordRecoveredVersonHolder(m1, rvv.getMemberToVersion().get(m1), true); one(drs).recordRecoveredVersonHolder(m2, rvv.getMemberToVersion().get(m2), true); one(drs).setRVVTrusted(true); }});
public void testRVVSnapshotContains() throws IOException, ClassNotFoundException { DiskStoreID ownerId = new DiskStoreID(0, 0); DiskStoreID id1 = new DiskStoreID(0, 1); DiskStoreID id2 = new DiskStoreID(1, 0); DiskRegionVersionVector rvv = new DiskRegionVersionVector(ownerId); for(int i=0; i< 57; i++) { rvv.recordVersion(id1, i); } rvv.recordVersion(id1, 60); rvv.recordVersion(id1, 58); ConcurrentHashMap<DiskStoreID, RegionVersionHolder<DiskStoreID>> vector = rvv.getCopyOfSnapShotOfMemberVersion(); assertTrue(vector.get(id1).contains(2)); assertTrue(vector.get(id1).contains(1)); assertTrue(vector.get(id1).contains(7)); assertTrue(vector.get(id1).contains(9)); assertTrue(vector.get(id1).contains(20)); assertTrue(vector.get(id1).contains(11)); assertTrue(vector.get(id1).contains(12)); assertTrue(vector.get(id1).contains(3)); }
private void doExceptionsWithContains(DiskStoreID id, DiskRegionVersionVector rvv) { rvv.recordVersion(id, 10); //Make sure we have exceptions from 0-10 assertFalse(rvv.contains(id, 5)); rvv.recordVersion(id, 5); assertTrue(rvv.contains(id, 5)); assertFalse(rvv.contains(id, 4)); assertFalse(rvv.contains(id, 6)); for(int i =0; i < 10; i++) { rvv.recordVersion(id, i); } for(int i =0; i < 10; i++) { assertTrue(rvv.contains(id, i)); } assertEquals(0,rvv.getExceptionCount(id)); }
@Override protected RegionVersionVector<DiskStoreID> createCopy(DiskStoreID ownerId, ConcurrentHashMap<DiskStoreID, RegionVersionHolder<DiskStoreID>> vector, long version, ConcurrentHashMap<DiskStoreID, Long> gcVersions, long gcVersion, boolean singleMember, RegionVersionHolder<DiskStoreID> localExceptions) { return new DiskRegionVersionVector(ownerId, vector, version, gcVersions, gcVersion, singleMember, localExceptions); }
public static RegionVersionVector<?> create(VersionSource<?> versionMember) { if(versionMember instanceof DiskStoreID) { return new DiskRegionVersionVector((DiskStoreID) versionMember); } else { return new VMRegionVersionVector((InternalDistributedMember) versionMember); } }
public static RegionVersionVector<?> create(VersionSource<?> versionMember, LocalRegion owner) { if(versionMember instanceof DiskStoreID) { return new DiskRegionVersionVector((DiskStoreID)versionMember, owner); } else { return new VMRegionVersionVector((InternalDistributedMember)versionMember, owner); } }
public void resetRVV() { this.versionVector = new DiskRegionVersionVector(ds.getDiskStoreID()); }
public void resetRVV() { this.versionVector = new DiskRegionVersionVector(ds.getDiskStoreID()); }
public static RegionVersionVector<?> create(boolean persistent, DataInput in) throws IOException, ClassNotFoundException { RegionVersionVector<?> rvv; if (persistent) { rvv = new DiskRegionVersionVector(); } else { rvv = new VMRegionVersionVector(); } InternalDataSerializer.invokeFromData(rvv, in); return rvv; }
public static RegionVersionVector<?> create(boolean persistent, DataInput in) throws IOException, ClassNotFoundException { RegionVersionVector<?> rvv; if (persistent) { rvv = new DiskRegionVersionVector(); } else { rvv = new VMRegionVersionVector(); } InternalDataSerializer.invokeFromData(rvv, in); return rvv; }