/** * For test purposes, see if two RVVs have seen the same events and GC version vectors * * @return true if the RVVs are the same. */ public boolean sameAs(RegionVersionVector<T> other) { // Compare the version version vectors Map<T, RegionVersionHolder<T>> myMemberToVersion = getMemberToVersion(); Map<T, RegionVersionHolder<T>> otherMemberToVersion = other.getMemberToVersion(); if (!myMemberToVersion.keySet().equals(otherMemberToVersion.keySet())) { return false; } for (Iterator<T> it = myMemberToVersion.keySet().iterator(); it.hasNext();) { T key = it.next(); if (!myMemberToVersion.get(key).sameAs(otherMemberToVersion.get(key))) { return false; } } Map<T, Long> myGCVersion = getMemberToGCVersion(); Map<T, Long> otherGCVersion = other.getMemberToGCVersion(); if (!myGCVersion.equals(otherGCVersion)) { return false; } return true; }
for (Map.Entry<T, RegionVersionHolder<T>> entry : otherVector.getMemberToVersion() .entrySet()) { T mbr = entry.getKey();
/** * Write a clear with an RVV record. */ private void writeClearRecord(DiskRegionView dr, RegionVersionVector rvv) { try { HeapDataOutputStream hdos = new HeapDataOutputStream(32, Version.CURRENT); hdos.write(IFREC_CLEAR_REGION_WITH_RVV_ID); writeDiskRegionID(hdos, dr.getId()); // We only need the memberToVersionMap for clear purposes Map<DiskStoreID, RegionVersionHolder> memberToVersion = rvv.getMemberToVersion(); hdos.writeInt(memberToVersion.size()); for (Map.Entry<DiskStoreID, RegionVersionHolder> entry : memberToVersion.entrySet()) { InternalDataSerializer.invokeToData(entry.getKey(), hdos); synchronized (entry.getValue()) { InternalDataSerializer.invokeToData(entry.getValue(), hdos); } } hdos.write(END_OF_RECORD_ID); writeIFRecord(hdos, false); // don't do stats for these small records } catch (IOException ex) { DiskAccessException dae = new DiskAccessException( String.format("Failed writing data to initialization file because: %s", ex), this.parent); if (!this.compactInProgress) { this.parent.handleDiskAccessException(dae); } throw dae; } }
Map<VersionSource, RegionVersionHolder> memberToVersion = rvv.getMemberToVersion(); InternalDataSerializer.writeUnsignedVL(memberToVersion.size(), out); for (Map.Entry<VersionSource, RegionVersionHolder> memberEntry : memberToVersion
assertTrue(singletonRVV.isForSynchronization()); assertEquals(singletonRVV.getOwnerId(), server1); assertTrue(singletonRVV.getMemberToVersion().containsKey(server2)); assertFalse(singletonRVV.getMemberToVersion().containsKey(server3));
RegionVersionHolder h = (RegionVersionHolder) rv1.getMemberToVersion().get(server2); long versionBoundary = h.getBitSetVersionForTesting(); assertEquals("expected holder bitset version to roll to this value", boundary - 1,