/** * obtain locks preventing generation of new versions in other members */ private void obtainWriteLocksForClear(RegionEventImpl regionEvent, Set<InternalDistributedMember> participants) { lockLocallyForClear(getDistributionManager(), getMyId(), regionEvent); DistributedClearOperation.lockAndFlushToOthers(regionEvent, participants); }
public static DistributedTombstoneOperation gc(DistributedRegion region, EventID eventId) { RegionEventImpl rev = new RegionEventImpl(region, Operation.REGION_EXPIRE_DESTROY, null, false, region.getMyId()); rev.setEventID(eventId); DistributedTombstoneOperation top = new DistributedTombstoneOperation(rev); top.op = TOperation.GC; return top; }
@Override protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { RegionEventImpl event = createRegionEvent(rgn); event.setEventID(this.eventID); if (this.filterRouting != null) { event.setLocalFilterInfo(this.filterRouting.getFilterInfo(rgn.getMyId())); } return event; }
private EntryEventImpl createEventForLoad(KeyInfo keyInfo, boolean generateCallbacks, ClientProxyMembershipID requestingClient, Operation op) { // Do not generate Event ID EntryEventImpl event = EntryEventImpl.create(this, op, keyInfo.getKey(), null /* newValue */, keyInfo.getCallbackArg(), false, getMyId(), generateCallbacks); if (requestingClient != null) { event.setContext(requestingClient); } return event; }
@Override protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { RegionEventImpl event = createRegionEvent(rgn); if (this.filterRouting != null) { event.setLocalFilterInfo( this.filterRouting.getFilterInfo((InternalDistributedMember) rgn.getMyId())); } event.setEventID(this.eventID); return event; }
@Override protected boolean operateOnRegion(CacheEvent event, ClusterDistributionManager dm) throws EntryNotFoundException { boolean sendReply = true; DistributedRegion region = (DistributedRegion) event.getRegion(); region.getCachePerfStats().incTombstoneGCCount(); FilterInfo routing = null; if (this.filterRouting != null) { routing = this.filterRouting.getFilterInfo(region.getMyId()); } region.expireTombstones(this.regionGCVersions, this.eventID, routing); this.appliedOperation = true; return sendReply; }
@Override public void cleanupFailedInitialization() { super.cleanupFailedInitialization(); try { RegionEventImpl ev = new RegionEventImpl(this, Operation.REGION_CLOSE, null, false, getMyId(), generateEventID()); distributeDestroyRegion(ev, true); distributedRegionCleanup(null); } catch (RegionDestroyedException ignore) { // someone else must have concurrently destroyed the region (maybe a distributed destroy) } catch (CancelException ignore) { // cache or DS is closed, ignore } catch (VirtualMachineError e) { SystemFailure.initiateFailure(e); throw e; } catch (Throwable t) { logger.warn("Error cleaning up after failed region initialization of region " + this, t); } }
@Override protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { RegionEventImpl event = new RegionEventImpl(rgn, getOperation(), this.callbackArg, true, getSender()); event.setEventID(this.eventID); if (this.filterRouting != null) { event.setLocalFilterInfo( this.filterRouting.getFilterInfo((InternalDistributedMember) rgn.getMyId())); } return event; }
@Override public void run() { try { if (ra.isReinitialize()) { if (logger.isDebugEnabled()) { logger.debug("Reliability resumption for action of reinitialize"); } if (!isDestroyed() && !cache.isClosed()) { RegionEventImpl event = new RegionEventImpl(DistributedRegion.this, Operation.REGION_REINITIALIZE, null, false, getMyId(), generateEventID()); reinitialize(null, event); } synchronized (missingRequiredRoles) { // any number of threads may be waiting on missingRequiredRoles missingRequiredRoles.notifyAll(); if (hasListener() && id != null) { // fire afterRoleGain event RoleEventImpl relEvent = new RoleEventImpl(DistributedRegion.this, Operation.REGION_CREATE, null, true, id, newlyAcquiredRoles); dispatchListenerEvent(EnumListenerEvent.AFTER_ROLE_GAIN, relEvent); } } } } catch (Exception e) { logger.fatal("Unexpected exception:", e); } } });
/** * releases the locks obtained in obtainWriteLocksForClear */ private void releaseWriteLocksForClear(RegionEventImpl regionEvent, Set<InternalDistributedMember> participants) { ARMLockTestHook armLockTestHook = getRegionMap().getARMLockTestHook(); if (armLockTestHook != null) { armLockTestHook.beforeRelease(this, regionEvent); } getVersionVector().unlockForClear(getMyId()); DistributedClearOperation.releaseLocks(regionEvent, participants); if (armLockTestHook != null) { armLockTestHook.afterRelease(this, regionEvent); } }
DistributedMember target = getTransactionalNode(); if (target != null) { if (target.equals(getMyId())) { return executeLocally(execution, function, args, 0, rc, filter, sender); || this.getAttributes().getDataPolicy().withPreloaded()) { final Set<InternalDistributedMember> singleMember = Collections.singleton(getMyId()); execution.validateExecution(function, singleMember); execution.setExecutionNodes(singleMember);
RegionEventImpl localEvent = new RegionEventImpl(this, Operation.REGION_LOCAL_DESTROY, event.getCallbackArgument(), false, getMyId(), generateEventID()/* generate EventID */); distributeDestroyRegion(localEvent, false/* fixes bug 41111 */); this.cache.endDestroy(path, this); RegionLogger.logDestroy(path, getMyId(), getPersistentID(), isClose);
@Override @Retained protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { @Retained EntryEventImpl ev = EntryEventImpl.create(rgn, getOperation(), this.key, null, this.callbackArg, true, getSender()); ev.setEventId(this.eventId); setOldValueInEvent(ev); ev.setVersionTag(this.versionTag); if (this.filterRouting != null) { ev.setLocalFilterInfo(this.filterRouting.getFilterInfo(rgn.getMyId())); } ev.setInhibitAllNotifications(this.inhibitAllNotifications); return ev; }
@Override @Retained protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { EntryEventImpl ev = createEntryEvent(rgn); boolean evReturned = false; try { ev.setEventId(this.eventId); ev.setOldValueFromRegion(); ev.setVersionTag(this.versionTag); if (this.filterRouting != null) { ev.setLocalFilterInfo(this.filterRouting.getFilterInfo(rgn.getMyId())); } ev.setTailKey(tailKey); ev.setInhibitAllNotifications(this.inhibitAllNotifications); evReturned = true; return ev; } finally { if (!evReturned) { ev.release(); } } }
/** * If its client, get the value from server. */ private EntryEventImpl findOnServer(KeyInfo keyInfo, Operation op, boolean generateCallbacks, EntryEventImpl clientEvent) { if (this.serverRegionProxy == null) { return null; } EntryEventImpl event = null; VersionTagHolder holder = new VersionTagHolder(); Object aCallbackArgument = keyInfo.getCallbackArg(); Object value = this.serverRegionProxy.get(keyInfo.getKey(), aCallbackArgument, holder); if (value != null) { event = EntryEventImpl.create(this, op, keyInfo.getKey(), value, aCallbackArgument, false, getMyId(), generateCallbacks); event.setVersionTag(holder.getVersionTag()); event.setFromServer(true); // fix for bug 39358 if (clientEvent != null && clientEvent.getVersionTag() == null) { clientEvent.setVersionTag(holder.getVersionTag()); } } return event; }
if (!event.getDistributedMember().equals(this.getMyId())) { return event.getVersionTag() == null; // one-hop remote message
@Override @Retained protected InternalCacheEvent createEvent(DistributedRegion rgn) throws EntryNotFoundException { EntryEventImpl ev = createEntryEvent(rgn); boolean evReturned = false; try { ev.setEventId(this.eventId); ev.setDeltaBytes(this.deltaBytes); if (hasDelta()) { this.newValueObj = null; // New value will be set once it is generated with fromDelta() inside // EntryEventImpl.processDeltaBytes() ev.setNewValue(this.newValueObj); } else { setNewValueInEvent(this.newValue, this.newValueObj, ev, this.deserializationPolicy); } if (this.filterRouting != null) { ev.setLocalFilterInfo(this.filterRouting.getFilterInfo(rgn.getMyId())); } ev.setTailKey(tailKey); ev.setVersionTag(this.versionTag); ev.setInhibitAllNotifications(this.inhibitAllNotifications); evReturned = true; return ev; } finally { if (!evReturned) { ev.release(); } } }
InternalDistributedMember id = rgn.getMyId(); ev.setLocalFilterInfo(entry.filterRouting.getFilterInfo(id));
InternalDistributedMember id = rgn.getMyId(); ev.setLocalFilterInfo(entry.filterRouting.getFilterInfo(id));