private String getBaseRegionName() { String id = isDurable() ? getDurableId() : getDSMembership(); if (id.indexOf('/') >= 0) { id = id.replace('/', ':'); } StringBuffer buffer = new StringBuffer().append("_gfe_").append(isDurable() ? "" : "non_") .append("durable_client_").append("with_id_" + id).append("_").append(this.uniqueId); return buffer.toString(); }
protected boolean isDurable() { return getProxyID().isDurable(); }
default boolean isDurable() { return getMembershipId().isDurable(); }
boolean isSameDSMember(ClientProxyMembershipID that) { if (that != null) { // Test whether: // - the durable ids are equal (if durable) or // - the identities are equal (if non-durable) return isDurable() ? this.getDurableId().equals(that.getDurableId()) : Arrays.equals(this.identity, that.identity); } else { return false; } }
@Override public int hashCode() { int result = 17; final int mult = 37; if (isDurable()) { result = mult * result + getDurableId().hashCode(); } else { if (this.identity != null && this.identity.length > 0) { for (int i = 0; i < this.identity.length; i++) { result = mult * result + this.identity[i]; } } } // we can't use unique_id in hashCode // because of HandShake's hashCode using our HashCode but // its equals using our isSameDSMember which ignores unique_id // result = mult * result + this.unique_id; return result; }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if ((obj == null) || !(obj instanceof ClientProxyMembershipID)) { return false; } ClientProxyMembershipID that = (ClientProxyMembershipID) obj; if (this.uniqueId != that.uniqueId) { return false; } boolean isDurable = this.isDurable(); if (isDurable && !that.isDurable()) { return false; } if (isDurable) { return this.getDurableId().equals(that.getDurableId()); } return Arrays.equals(this.identity, that.identity); }
/** * @return Returns the serverCqName. */ @Override public String constructServerCqName(String cqName, ClientProxyMembershipID clientProxyId) { ConcurrentHashMap<ClientProxyMembershipID, String> cache = serverCqNameCache.computeIfAbsent(cqName, key -> new ConcurrentHashMap<>()); String cName = cache.get(clientProxyId); if (null == cName) { final StringBuilder sb = new StringBuilder(cqName).append("__"); if (clientProxyId.isDurable()) { sb.append(clientProxyId.getDurableId()); } else { sb.append(clientProxyId.getDSMembership()); } cName = sb.toString(); cache.put(clientProxyId, cName); } return cName; }
/** * TODO - this algorithm could be cleaned up. Right now we have to connect to every server in the * system to find where our durable queue lives. */ @Override public synchronized List findServersForQueue(Set excludedServers, int numServers, ClientProxyMembershipID proxyId, boolean findDurableQueue) { if (PoolImpl.TEST_DURABLE_IS_NET_DOWN) { return new ArrayList(); } if (numServers == -1) { numServers = Integer.MAX_VALUE; } if (findDurableQueue && proxyId.isDurable()) { return findDurableQueues(excludedServers, numServers); } else { return pickQueueServers(excludedServers, numServers); } }
if (clientRequest.isFindDurable() && clientRequest.getProxyId().isDurable()) { servers = FindDurableQueueProcessor.sendAndFind(this, clientRequest.getProxyId(), getDistributionManager());
if (proxy.getProxyID().isDurable()) { registerFilters(region, proxy, true);
if (clientID.isDurable()) { getInterestMaps(pf, rName, DURABLE, clientID.getDurableId());
String unsuccessfulMsg = null; boolean successful = true; boolean clientIsDurable = proxyId.isDurable(); if (logger.isDebugEnabled()) { if (clientIsDurable) {
int queueSize = 0; if (this.proxyId.isDurable()) { if (isDebugEnabled) { logger.debug("looking if the Proxy existed for this durable client or not :{}",
((HAContainerWrapper) proxy._cacheClientNotifier.getHaContainer()) .putProxy(HARegionQueue.createRegionName(getProxy().getHARegionName()), getProxy()); boolean createDurableQueue = proxy.proxyID.isDurable(); boolean canHandleDelta = (proxy.clientVersion.compareTo(Version.GFE_61) >= 0) && InternalDistributedSystem.getAnyInstance().getConfig().getDeltaPropagation()
private ClientQueueDetail getClientQueueDetail(CacheClientProxy p) { ClientQueueDetail queueDetail = new ClientQueueDetail(); ClientProxyMembershipID proxyID = p.getProxyID(); if (!p.isConnected() && !proxyID.isDurable()) { return null; } queueDetail.setClientId(getClientIdFromCacheClientProxy(p)); HARegionQueue queue = p.getHARegionQueue(); if (queue == null) { return queueDetail; } queueDetail.setQueueSize(p.getQueueSizeStat()); queueDetail.setEventsConflated(queue.getStatistics().getEventsConflated()); queueDetail.setEventsEnqued(queue.getStatistics().getEventsEnqued()); queueDetail.setEventsExpired(queue.getStatistics().getEventsExpired()); queueDetail.setEventsRemoved(queue.getStatistics().getEventsRemoved()); queueDetail.setEventsRemovedByQrm(queue.getStatistics().getEventsRemovedByQrm()); queueDetail.setEventsTaken(queue.getStatistics().getEventsTaken()); queueDetail.setMarkerEventsConflated(queue.getStatistics().getMarkerEventsConflated()); queueDetail.setNumVoidRemovals(queue.getStatistics().getNumVoidRemovals()); return queueDetail; }
CacheClientProxy proxy = CacheClientNotifier.getInstance().getClientProxy(proxyId); if (proxy != null && !proxy.isConnected() && !proxyId.isDurable()) { return null;