@Override protected RegionEntry basicPutEntry(EntryEventImpl event, long lastModified) throws TimeoutException, CacheWriterException { final boolean isTraceEnabled = logger.isTraceEnabled(); if (isTraceEnabled) { logger.trace("basicPutEntry invoked for event {}", event); } if (this.requiresOneHopForMissingEntry(event)) { // bug #45704: see if a one-hop must be done for this operation RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { final boolean ifNew = false; final boolean ifOld = false; boolean didDistribute = RemotePutMessage.distribute(event, lastModified, ifNew, ifOld, null, false, !this.generateVersionTag); if (!this.generateVersionTag && !didDistribute) { throw new PersistentReplicatesOfflineException(); } if (didDistribute && isTraceEnabled) { logger.trace("Event after remotePut for basicPutEntry: {}", event); } } } return super.basicPutEntry(event, lastModified); }
public void testDestroyCreatesTombstone() throws Exception { String name = getName(); Properties props = new Properties(); props.put(DistributionConfig.LOCATORS_NAME, ""); props.put(DistributionConfig.MCAST_PORT_NAME, "0"); props.put(DistributionConfig.LOG_LEVEL_NAME, "config"); GemFireCacheImpl cache = (GemFireCacheImpl)CacheFactory.create(DistributedSystem.connect(props)); RegionFactory f = cache.createRegionFactory(RegionShortcut.REPLICATE); DistributedRegion region = (DistributedRegion)f.create(name); EntryEventImpl ev = EntryEventImpl.create(region, Operation.DESTROY, "myDestroyedKey", null, null, true, new InternalDistributedMember(InetAddress.getLocalHost(), 1234)); VersionTag tag = VersionTag.create((InternalDistributedMember)ev.getDistributedMember()); tag.setIsRemoteForTesting(); tag.setEntryVersion(2); tag.setRegionVersion(12345); tag.setVersionTimeStamp(System.currentTimeMillis()); tag.setDistributedSystemId(1); ev.setVersionTag(tag); cache.getLogger().info("destroyThread is trying to destroy the entry: " + region.getRegionEntry("myDestroyedKey")); region.basicDestroy(ev, false, null); // expectedOldValue not supported on RegionEntry entry = region.getRegionEntry("myDestroyedKey"); Assert.assertTrue(entry != null, "expected to find a region entry for myDestroyedKey"); Assert.assertTrue(entry.isTombstone(), "expected entry to be found and be a tombstone but it is " + entry); }
RegionEntry re = getRegionEntry(event.getKey()); if (re == null/* || re.isTombstone()*/ || !this.generateVersionTag) { if (this.srp == null) {
tag.setDistributedSystemId(1); ev.setVersionTag(tag); cache.getLogger().info("destroyThread is trying to destroy the entry: " + region.getRegionEntry(key)); region.basicDestroy(ev, false, entry = (VersionedThinRegionEntryHeap)region.getRegionEntry(key); region.dumpBackingMap(); Assert.assertTrue(entry != null, "expected to find a region entry for " + key); tag.setDistributedSystemId(1); ev.setVersionTag(tag); cache.getLogger().info("destroyThread is trying to destroy the entry: " + region.getRegionEntry(key)); boolean caught = false; try {
protected RegionEntry basicPutEntry(EntryEventImpl event, final TXStateInterface tx, long lastModified) throws TimeoutException, CacheWriterException { if (getLogWriterI18n().finerEnabled()) { getLogWriterI18n().finer("basicPutEntry invoked for event " + event); } if (this.requiresOneHopForMissingEntry(event)) { // bug #45704: see if a one-hop must be done for this operation RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { final boolean ifNew = false; final boolean ifOld = false; boolean didDistribute = RemotePutMessage.distribute(event, lastModified, ifNew, ifOld, null, false, !this.generateVersionTag); if (!this.generateVersionTag && !didDistribute) { throw new PersistentReplicatesOfflineException(); } if (didDistribute) { if (getLogWriterI18n().finerEnabled()) { getLogWriterI18n().finer("Event after remotePut for basicPutEntry: " + event); } } } } return super.basicPutEntry(event, lastModified); }
if (this.requiresOneHopForMissingEntry(event)) { RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { if (!event.isBulkOpInProgress() || this.dataPolicy.withStorage()) {
RegionEntry re = getRegionEntry(event.getKey()); if (re == null/* || re.isTombstone()*/ || !this.generateVersionTag) { if (this.srp == null) {
if (this.requiresOneHopForMissingEntry(event)) { RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { if (this.srp == null) {
if (this.requiresOneHopForMissingEntry(event)) { RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { if (this.srp == null) {
re = getRegionEntry(key); if (re != null) { event.setNewValue(re.getValue(this)); // OFFHEAP: need to incrc, copy to heap to setNewValue, decrc
if (this.requiresOneHopForMissingEntry(event)) { RegionEntry re = getRegionEntry(event.getKey()); if (re == null /*|| re.isTombstone()*/ || !this.generateVersionTag) { if (event.getPutAllOperation() == null || this.dataPolicy.withStorage()) {
re = getRegionEntry(key); if (re != null) { event.setNewValue(re.getValue(this)); // OFFHEAP: need to incrc, copy to heap to setNewValue, decrc