/** * Checks if the entry is a valid entry * * @return true if entry not null or entry is not removed * */ protected boolean checkEntryNotValid(RegionEntry mapEntry) { return (mapEntry == null || (mapEntry.isRemoved() && !mapEntry.isTombstone())); }
/** * Checks if the entry is a valid entry * * @return true if entry not null or entry is not removed * */ protected boolean checkEntryNotValid(RegionEntry mapEntry) { return (mapEntry == null || (mapEntry.isRemoved() && !mapEntry.isTombstone())); }
public void run() { RegionEntry entry = CCRegion.getRegionEntry("object2"); Assert.assertTrue(entry != null); Assert.assertTrue(entry.isTombstone()); } };
private Set<RegionEntry> getTombstones(Set<Object> ignoreKeys, Set<Object> gatherKeys) { Set<RegionEntry> result = new HashSet<RegionEntry>(); for (Iterator it=regionEntries().iterator(); it.hasNext(); ) { RegionEntry re = (RegionEntry)it.next(); if (re.isTombstone() && !ignoreKeys.contains(re.getKey())) { result.add(re); gatherKeys.add(re.getKey()); } } return result; }
public DiskEntry getDiskEntry(Object key) { // should return tombstone as an valid entry RegionEntry re = this.entries.getEntry(key); if (re != null && re.isRemoved() && !re.isTombstone()) { re = null; } return (DiskEntry)re; }
public final Object readEntry(final ExclusiveSharedLockObject lockObj, final Object context, int iContext, boolean allowTombstones) { final RegionEntry re = (RegionEntry)lockObj; if ((re.isTombstone() && allowTombstones) || !re.isDestroyedOrRemoved()) { return new EntrySnapshot(re, (LocalRegion)context, partitionedRegion, allowTombstones); } return null; } };
public DiskEntry getDiskEntry(Object key) { // should return tombstone as an valid entry RegionEntry re = this.entries.getEntry(key); if (re != null && re.isRemoved() && !re.isTombstone()) { re = null; } return (DiskEntry)re; }
public DiskEntry getDiskEntry(Object key) { RegionEntry re = getRecoveredEntryMap().getEntry(key); if (re != null && re.isRemoved() && !re.isTombstone()) { re = null; } return (DiskEntry)re; } public DiskEntry initializeRecoveredEntry(Object key, DiskEntry.RecoveredEntry value) {
public DiskEntry getDiskEntry(Object key) { RegionEntry re = getRecoveredEntryMap().getEntry(key); if (re != null && re.isRemoved() && !re.isTombstone()) { re = null; } return (DiskEntry)re; } public DiskEntry initializeRecoveredEntry(Object key, DiskEntry.RecoveredEntry value) {
private int getTombstoneCount(LocalRegion region) { int regionCount = region.getTombstoneCount(); int actualCount = 0; for(RegionEntry entry : region.entries.regionEntries()) { if(entry.isTombstone()) { actualCount++; } } assertEquals(actualCount, regionCount); return actualCount; }
protected void updateEntry(EntryEventImpl event, boolean requireOldValue, Object oldValueForDelta, RegionEntry re, int oldSize) throws RegionClearedException { final boolean wasTombstone = re.isTombstone(); processVersionTag(re, event); event.putExistingEntry(event.getLocalRegion(), re, requireOldValue, oldValueForDelta, oldSize); EntryLogger.logPut(event); updateSize(event, oldSize, true/* isUpdate */, wasTombstone); }
public final void removeEntry(Object key, RegionEntry re, boolean updateStat) { if (re.isTombstone() && _getMap().get(key) == re && !re.isMarkedForEviction()){ logger.fatal(LocalizedMessage.create(LocalizedStrings.AbstractRegionMap_ATTEMPT_TO_REMOVE_TOMBSTONE), new Exception("stack trace")); return; // can't remove tombstones except from the tombstone sweeper } if (_getMap().remove(key, re)) { re.removePhase2(); if (updateStat) { incEntryCount(-1); } } }
public boolean isTombstoneNotNeeded(RegionEntry re, int destroyedVersion) { // no need for synchronization - stale values are okay here // GFXD can return RegionEntry itself in getKey() call that fails when sent // to HDFS due to serialization attempt (#49887) RegionEntry actualRe = getEntry( getEntryNeedKeyCopy() ? re.getKeyCopy() : re.getKey()); // TODO this looks like a problem for regionEntry pooling if (actualRe != re) { // null actualRe is okay here return true; // tombstone was evicted at some point } int entryVersion = re.getVersionStamp().getEntryVersion(); boolean isSameTombstone = (entryVersion == destroyedVersion && re.isTombstone()); return !isSameTombstone; }
protected void updateEntry(EntryEventImpl event, boolean requireOldValue, Object oldValueForDelta, RegionEntry re) throws RegionClearedException { final int oldSize = event.getLocalRegion().calculateRegionEntryValueSize(re); final boolean wasTombstone = re.isTombstone(); processVersionTag(re, event); event.putExistingEntry(event.getLocalRegion(), re, requireOldValue, oldValueForDelta); EntryLogger.logPut(event); updateSize(event, oldSize, true/* isUpdate */, wasTombstone); }
public final void removeEntry(Object key, RegionEntry re, boolean updateStat) { final LocalRegion owner = _getOwner(); if (re.isTombstone() && _getMap().get(key) == re && !re.isMarkedForEviction()) { owner.getLogWriterI18n().severe(LocalizedStrings.AbstractRegionMap_ATTEMPT_TO_REMOVE_TOMBSTONE, key, new Exception("stack trace")); return; // can't remove tombstones except from the tombstone sweeper } // _getOwner().getLogWriterI18n().info(LocalizedStrings.DEBUG, "DEBUG: removing entry " + re, new Exception("stack trace")); if (_getMap().remove(key, re)) { re.removePhase2(owner); if (updateStat) { incEntryCount(-1); } } }
protected void createEntry(EntryEventImpl event, final LocalRegion owner, RegionEntry re) throws RegionClearedException { final boolean wasTombstone = re.isTombstone(); processVersionTag(re, event); event.putNewEntry(owner, re); updateSize(event, 0, false, wasTombstone); if (!event.getLocalRegion().isInitialized()) { owner.getImageState().removeDestroyedEntry(event.getKey()); } }
protected void createEntry(EntryEventImpl event, final LocalRegion owner, RegionEntry re) throws RegionClearedException { final boolean wasTombstone = re.isTombstone(); processVersionTag(re, event); event.putNewEntry(owner, re); updateSize(event, 0, false, wasTombstone); if (!event.getLocalRegion().isInitialized()) { owner.getImageState().removeDestroyedEntry(event.getKey()); } }
public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null && re.isTombstone()) { VersionStamp stamp = re.getVersionStamp(); if(getRegionVersionVector().isTombstoneTooOld(stamp.getMemberID(), stamp.getRegionVersion())) { drs.destroyRecoveredEntry(de.getKeyCopy()); } } } } });
public void handleRegionEntry(RegionEntry re) { DiskEntry de = (DiskEntry)re; synchronized (de) { DiskId id = de.getDiskId(); if (id != null && re.isTombstone()) { VersionStamp stamp = re.getVersionStamp(); if(getRegionVersionVector().isTombstoneTooOld(stamp.getMemberID(), stamp.getRegionVersion())) { drs.destroyRecoveredEntry(de.getKey()); } } } } });
public DiskEntry initializeRecoveredEntry(Object key, DiskEntry.RecoveredEntry value) { RegionEntry re = getRecoveredEntryMap().initRecoveredEntry(key, value); if (!(re.isTombstone() || re.isInvalidOrRemoved()) && callback.isSnappyStore()) { long size = calculateEntryOverhead(re); boolean success = callback.acquireStorageMemory(getFullPath(), size, null, false, false); if (!success){ Set<DistributedMember> sm = Collections.singleton(GemFireCacheImpl.getExisting().getMyId()); throw new LowMemoryException("Could not obtain memory of size " + size, sm); } } if (re == null) { throw new InternalGemFireError(LocalizedStrings.LocalRegion_ENTRY_ALREADY_EXISTED_0.toLocalizedString(key)); } return (DiskEntry)re; }