You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2015/10/09 02:37:58 UTC
[40/50] [abbrv] incubator-geode git commit: GEODE-243: remove
deprecated Bridge feature
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
index 6a335a8..0dd2bae 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/doc-files/properties.html
@@ -3590,9 +3590,7 @@ TBA Is this class even used?
<p>
<em>Boolean</em> (default is false)
<p>
-See com.gemstone.gemfire.cache.util.BridgeLoader#init(Properties).
-<p>
-See com.gemstone.gemfire.cache.util.BridgeWriter#init(Properties).
+Removed in Geode 1.0 with removal of deprecated Bridge classes.
<p>
TBA
</dd>
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
index d4a33a6..1ef881c 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/execute/InternalFunctionService.java
@@ -90,9 +90,7 @@ public class InternalFunctionService {
*/
private static boolean isClientRegion(Region region) {
LocalRegion localRegion = (LocalRegion)region;
- return (localRegion.hasServerProxy()
- || AbstractRegion.isBridgeLoader(localRegion.getCacheLoader()) || AbstractRegion
- .isBridgeWriter(localRegion.getCacheWriter()));
+ return localRegion.hasServerProxy();
}
private static final FunctionServiceManager funcServiceManager = new FunctionServiceManager();
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
index f5cf679..e094648 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java
@@ -68,7 +68,7 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
import com.gemstone.gemfire.internal.Assert;
import com.gemstone.gemfire.internal.DataSerializableFixedID;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
import com.gemstone.gemfire.internal.cache.Conflatable;
import com.gemstone.gemfire.internal.cache.EventID;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
@@ -3013,9 +3013,9 @@ protected boolean checkEventForRemoval(Long counter, ThreadIdentifier threadid,
&& !queueRemovalMessageList.isEmpty()) { // messages exist
QueueRemovalMessage qrm = new QueueRemovalMessage();
qrm.resetRecipients();
- List<BridgeServerImpl> servers = this.cache.getBridgeServers();
+ List<CacheServerImpl> servers = this.cache.getCacheServers();
List<DistributedMember> recipients = new LinkedList();
- for (BridgeServerImpl server: servers) {
+ for (CacheServerImpl server: servers) {
recipients.addAll(server.getCacheServerAdvisor().adviseBridgeServers());
}
qrm.setRecipients(recipients);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
index 0e8c3d8..0498328 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PartitionedRegionObserverHolder.java
@@ -44,7 +44,7 @@ public class PartitionedRegionObserverHolder {
return oldObserver;
}
- /** Return the current BridgeObserver instance */
+ /** Return the current ClientServerObserver instance */
public static final PartitionedRegionObserver getInstance()
{
return _instance;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
index 2c7e0a5..685a142 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/ConnectionProxy.java
@@ -7,20 +7,10 @@
*/
package com.gemstone.gemfire.internal.cache.tier;
-import java.util.*;
-
-import com.gemstone.gemfire.CancelCriterion;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.util.EndpointDoesNotExistException;
-import com.gemstone.gemfire.cache.util.EndpointExistsException;
-import com.gemstone.gemfire.cache.util.EndpointInUseException;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.EventID;
-import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID;
/**
- * Defines the connection proxy interface, implementations of which
- * provide connection management facilities to the bridge loader.
+ * Provides the version of the client.
*
* @author Sudhir Menon
* @since 2.0.2
@@ -33,152 +23,4 @@ public interface ConnectionProxy {
* @since 5.7
*/
public static final Version VERSION = Version.CURRENT.getGemFireVersion();
-
- public abstract void finalizeProxy();
-
- /**
- * Returns the load balancing policy in effect for this connection
- * proxy.
- */
- public abstract String getLBPolicy();
-
- /**
- * Returns the number of milliseconds to wait before re-connecting
- * to a dead server.
- */
- public abstract int getRetryInterval();
-
- /**
- * Returns the number of milliseconds to wait before timing out
- * client/server communication.
- */
- public abstract int getReadTimeout();
-
-
- /**
- * Closes this connection proxy and all of its connections
- */
- public abstract void close();
-
- /**
- * Returned true if this ConnectionProxy has been initialized and not closed.
- */
- public abstract boolean isOpen();
-
- /**
- * Update bookkeeping on this proxy associated with the loss of a region.
- * In particular, remove all region interests.
- */
- public abstract void detachRegion(Region r);
-
- /**
- * Returns the number of connections that should be created
- * to every cache server.
- */
- public abstract int getConnectionsPerServer();
-
- /**
- * Notes that the server with the given name is unavailable
- */
- public abstract void setServerUnavailable(String name);
-
- /**
- * Notes that the server with the given name is available
- */
- public abstract void setServerAvailable(String name);
-
- /**
- * Stops this connection proxy and
- */
- public abstract void terminate();
-
- /**
- * Releases the connection associated with the current thread
- */
- public abstract void release();
-
- /**
- * Returns value of establishCallbackConnection property.
- * @since 4.2.3
- */
- public boolean getEstablishCallbackConnection();
-
- /**
- * Add an <code>Endpoint</code> to the known <code>Endpoint</code>s.
- *
- * @param name The name of the endpoint to add
- * @param host The host name or ip address of the endpoint to add
- * @param port The port of the endpoint to add
- *
- * @throws EndpointExistsException if the <code>Endpoint</code> to be
- * added already exists.
- *
- * @since 5.0.2
- */
- public void addEndpoint(String name, String host, int port)
- throws EndpointExistsException;
-
- /**
- * Remove an <code>Endpoint</code> from the dead <code>Endpoint</code>s.
- * The specified <code>Endpoint</code> must be dead.
- *
- * @param name The name of the endpoint to remove
- * @param host The host name or ip address of the endpoint to remove
- * @param port The port of the endpoint to remove
- *
- * @throws EndpointDoesNotExistException if the <code>Endpoint</code> to be
- * removed doesn't exist.
- *
- * @throws EndpointInUseException if the <code>Endpoint</code> to be removed
- * contains <code>Connection</code>s
- *
- * @since 5.0.2
- */
- public void removeEndpoint(String name, String host, int port)
- throws EndpointDoesNotExistException, EndpointInUseException;
-
- /**
- * @return Returns the threadIdToSequenceId.
- * @since 5.1
- */
- public Map getThreadIdToSequenceIdMap();
-
- /**
- * Verify if this EventId is already present in the map or not. If it is
- * already present then return true
- *
- * @param eventId the EventId of the incoming event
- * @return true if it is already present
- * @since 5.1
- */
- public abstract boolean verifyIfDuplicate(EventID eventId, boolean addToMap);
-
- /**
- * @return Returns the redundancy number
- * @since 5.1
- */
- public int getRedundancyLevel();
-
- /**
- * Returns the cancellation criterion for this proxy
- * @return the cancellation criterion
- */
- public CancelCriterion getCancelCriterion();
-
- /**
- * The configurable expiry time of last received sequence ID
- *
- * @return The configurable expiry time of last received sequence ID
- */
- public long getMessageTrackingTimeout();
-
- public boolean isDurableClient();
-
- public void reuse();
- public int getRetryAttempts();
-
- /**
- * Test hook for getting the client proxy membership id from this proxy.
- */
- public ClientProxyMembershipID getProxyID();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
deleted file mode 100755
index b0dc18f..0000000
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalBridgeMembership.java
+++ /dev/null
@@ -1,715 +0,0 @@
-/*=========================================================================
- * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
- * This product is protected by U.S. and international copyright
- * and intellectual property laws. Pivotal products are covered by
- * more patents listed at http://www.pivotal.io/patents.
- *=========================================================================
- */
-package com.gemstone.gemfire.internal.cache.tier;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.logging.log4j.Logger;
-
-import com.gemstone.gemfire.CancelException;
-import com.gemstone.gemfire.SystemFailure;
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.client.PoolManager;
-import com.gemstone.gemfire.cache.client.internal.PoolImpl;
-import com.gemstone.gemfire.cache.util.BridgeMembershipEvent;
-import com.gemstone.gemfire.cache.util.BridgeMembershipListener;
-import com.gemstone.gemfire.distributed.DistributedMember;
-import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
-import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
-import com.gemstone.gemfire.distributed.internal.ServerLocation;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl;
-import com.gemstone.gemfire.internal.cache.tier.sockets.ClientHealthMonitor;
-import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
-import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
-import com.gemstone.gemfire.management.membership.ClientMembershipEvent;
-import com.gemstone.gemfire.management.membership.ClientMembershipListener;
-
-/**
- * Handles registration and event notification duties for
- * <code>BridgeMembershipListener</code>s. The public counterpart for this
- * class is {@link com.gemstone.gemfire.cache.util.BridgeMembership}.
- *
- * @author Kirk Lund
- * @since 4.2.1
- */
-public final class InternalBridgeMembership {
-
- private static final Logger logger = LogService.getLogger();
-
- /**
- * The membership listeners registered on this InternalBridgeMembership
- *
- * This list is never modified in place, and a new list is installed
- * only under the control of (@link #membershipLock}.
- */
- private static volatile List<BridgeMembershipListener> membershipListeners = Collections.emptyList();
-
-
- private static volatile List<ClientMembershipListener> clientMembershipListeners = Collections.emptyList();
-
- /**
- * Must be locked whenever references to the volatile field
- * {@link #membershipListeners} is changed.
- */
- private static final Object membershipLock = new Object();
-
- /**
- * QueuedExecutor for firing BridgeMembershipEvents
- *
- * Access synchronized via {@link #systems}
- */
- private static ThreadPoolExecutor executor;
-
- private static final ThreadGroup threadGroup =
- LoggingThreadGroup.createThreadGroup(
- "BridgeMembership Event Invoker Group", logger);
-
- /** List of connected <code>DistributedSystem</code>s */
- private static final List systems = new ArrayList(1);
-
- /**
- * True if class is monitoring systems
- *
- * @guarded.By InternalBridgeMembership.class
- */
- private static boolean isMonitoring = false;
-
- /**
- * This work used to be in a class initializer. Unfortunately, this allowed
- * the class to escape before it was fully initialized, so now we just
- * make sure this work is done before any public static method on it
- * is invoked.
- */
- private static synchronized void startMonitoring() {
- if (isMonitoring) {
- return;
- }
-
- synchronized(systems) {
- // Initialize our own list of distributed systems via a connect listener
- List existingSystems = InternalDistributedSystem.addConnectListener(
- new InternalDistributedSystem.ConnectListener() {
- public void onConnect(InternalDistributedSystem sys) {
- addInternalDistributedSystem(sys);
- }
- });
-
- isMonitoring = true;
-
- // While still holding the lock on systems, add all currently known
- // systems to our own list
- for (Iterator iter = existingSystems.iterator(); iter.hasNext();) {
- InternalDistributedSystem sys = (InternalDistributedSystem) iter.next();
- try {
- if (sys.isConnected()) {
- addInternalDistributedSystem(sys);
- }
- }
- catch (DistributedSystemDisconnectedException e) {
- // it doesn't care (bug 37379)
- }
- }
-
- } // synchronized
- }
-
- private InternalBridgeMembership() {}
-
- /**
- * Registers a {@link BridgeMembershipListener} for notification of
- * connection changes for BridgeServers and bridge clients.
- * @param listener a BridgeMembershipListener to be registered
- * @deprecated use newer registerClientMembershipListener instead
- */
- public static void registerBridgeMembershipListener(BridgeMembershipListener listener) {
- startMonitoring();
- synchronized (membershipLock) {
- List<BridgeMembershipListener> oldListeners = membershipListeners;
- if (!oldListeners.contains(listener)) {
- List<BridgeMembershipListener> newListeners = new ArrayList<BridgeMembershipListener>(oldListeners);
- newListeners.add(listener);
- membershipListeners = newListeners;
- }
- }
- }
-
- /**
- * Registers a {@link ClientMembershipListener} for notification of connection
- * changes for CacheServer and clients.
- *
- * @param listener
- * a ClientMembershipListener to be registered
- */
- public static void registerClientMembershipListener(ClientMembershipListener listener) {
- startMonitoring();
- synchronized (membershipLock) {
- List<ClientMembershipListener> oldListeners = clientMembershipListeners;
- if (!oldListeners.contains(listener)) {
- List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
- newListeners.add(listener);
- clientMembershipListeners = newListeners;
- }
- }
- }
-
- /**
- * Removes registration of a previously registered {@link
- * BridgeMembershipListener}.
- * @param listener a BridgeMembershipListener to be unregistered
- * @deprecated
- */
- public static void unregisterBridgeMembershipListener(BridgeMembershipListener listener) {
- startMonitoring();
- synchronized (membershipLock) {
- List<BridgeMembershipListener> oldListeners = membershipListeners;
- if (oldListeners.contains(listener)) {
- List<BridgeMembershipListener> newListeners = new ArrayList<BridgeMembershipListener>(oldListeners);
- if (newListeners.remove(listener)) {
- membershipListeners = newListeners;
- }
- }
- }
- }
-
- /**
- * Removes registration of a previously registered
- * {@link ClientMembershipListener}.
- *
- * @param listener
- * a ClientMembershipListener to be unregistered
- */
- public static void unregisterClientMembershipListener(ClientMembershipListener listener) {
- startMonitoring();
- synchronized (membershipLock) {
- List<ClientMembershipListener> oldListeners = clientMembershipListeners;
- if (oldListeners.contains(listener)) {
- List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
- if (newListeners.remove(listener)) {
- clientMembershipListeners = newListeners;
- }
- }
- }
- }
-
- /**
- * Returns an array of all the currently registered
- * <code>BridgeMembershipListener</code>s. Modifications to the returned
- * array will not effect the registration of these listeners.
- * @return the registered <code>BridgeMembershipListener</code>s; an empty
- * array if no listeners
- * @deprecated
- */
- public static BridgeMembershipListener[] getBridgeMembershipListeners() {
- startMonitoring();
- // Synchronization is not needed because we never modify this list
- // in place.
-
- List<BridgeMembershipListener> l = membershipListeners; // volatile fetch
- // convert to an array
- BridgeMembershipListener[] listeners = (BridgeMembershipListener[])
- l.toArray(new BridgeMembershipListener[l.size()]);
- return listeners;
- }
-
- /**
- * Returns an array of all the currently registered
- * <code>ClientMembershipListener</code>s. Modifications to the returned array
- * will not effect the registration of these listeners.
- *
- * @return the registered <code>ClientMembershipListener</code>s; an empty
- * array if no listeners
- */
- public static ClientMembershipListener[] getClientMembershipListeners() {
- startMonitoring();
- // Synchronization is not needed because we never modify this list
- // in place.
-
- List<ClientMembershipListener> l = clientMembershipListeners; // volatile fetch
- // convert to an array
- ClientMembershipListener[] listeners = (ClientMembershipListener[]) l
- .toArray(new ClientMembershipListener[l.size()]);
- return listeners;
- }
-
- /**
- * Removes registration of all currently registered
- * <code>BridgeMembershipListener<code>s. and <code>ClientMembershipListener<code>s.
- */
- public static void unregisterAllListeners() {
- startMonitoring();
- synchronized (membershipLock) {
- membershipListeners = new ArrayList<BridgeMembershipListener>();
- clientMembershipListeners = new ArrayList<ClientMembershipListener>();
- }
- }
-
-
-
- /**
- * Returns a map of client memberIds to count of connections to that client.
- * The map entry key is a String representation of the client memberId, and
- * the map entry value is an Integer count of connections to that client.
- * Since a single client can have multiple ConnectionProxy objects, this
- * map will contain all the Connection objects across the ConnectionProxies
- * @param onlyClientsNotifiedByThisServer true will return only those clients
- * that are actively being updated by this server
- * @return map of client memberIds to count of connections to that client
- *
- *
- */
- public static Map getConnectedClients(boolean onlyClientsNotifiedByThisServer) {
- ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
- Set filterProxyIDs = null;
- if(onlyClientsNotifiedByThisServer) {
- // Note it is not necessary to synchronize on the list of bridge servers here,
- // since this is only a status (snapshot) of the system.
- for (Iterator bsii = CacheFactory.getAnyInstance().getBridgeServers().iterator(); bsii.hasNext(); ) {
- BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
- AcceptorImpl ai = bsi.getAcceptor();
- if (ai != null && ai.getCacheClientNotifier() != null) {
- if (filterProxyIDs != null) {
- // notifierClients is a copy set from CacheClientNotifier
- filterProxyIDs.addAll(ai.getCacheClientNotifier().getActiveClients());
- }
- else {
- // notifierClients is a copy set from CacheClientNotifier
- filterProxyIDs = ai.getCacheClientNotifier().getActiveClients();
- }
- }
- }
- }
-
- Map map = chMon.getConnectedClients(filterProxyIDs);
- /*if (onlyClientsNotifiedByThisServer) {
- Map notifyMap = new HashMap();
-
- for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
- String memberId = (String) iter.next();
- if (notifierClients.contains(memberId)) {
- // found memberId that is notified by this server
- notifyMap.put(memberId, map.get(memberId));
- }
- }
- map = notifyMap;
- }*/
- return map;
- }
-
- /**
- * This method returns the CacheClientStatus for all the clients that are
- * connected to this server. This method returns all clients irrespective of
- * whether subscription is enabled or not.
- *
- * @return Map of ClientProxyMembershipID against CacheClientStatus objects.
- */
- public static Map getStatusForAllClientsIgnoreSubscriptionStatus() {
- Map result = new HashMap();
- if (ClientHealthMonitor.getInstance() != null)
- result = ClientHealthMonitor.getInstance().getStatusForAllClients();
-
- return result;
- }
-
- /**
- * Caller must synchronize on cache.allBridgeServersLock
- * @return all the clients
- */
- public static Map getConnectedClients() {
-
- // Get all clients
- Map allClients = new HashMap();
- for (Iterator bsii = CacheFactory.getAnyInstance().getBridgeServers().iterator(); bsii.hasNext(); ) {
- BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
- AcceptorImpl ai = bsi.getAcceptor();
- if (ai != null && ai.getCacheClientNotifier() != null) {
- allClients.putAll(ai.getCacheClientNotifier().getAllClients());
- }
- }
-
- // Fill in the missing info, if HealthMonitor started
- if (ClientHealthMonitor.getInstance()!=null)
- ClientHealthMonitor.getInstance().fillInClientInfo(allClients);
-
- return allClients;
- }
-
- public static Map getClientQueueSizes() {
- Map clientQueueSizes = new HashMap();
- GemFireCacheImpl c = (GemFireCacheImpl)CacheFactory.getAnyInstance();
- if (c==null) // Add a NULL Check
- return clientQueueSizes;
-
- for (Iterator bsii = c.getBridgeServers().iterator(); bsii.hasNext(); ) {
- BridgeServerImpl bsi = (BridgeServerImpl) bsii.next();
- AcceptorImpl ai = bsi.getAcceptor();
- if (ai != null && ai.getCacheClientNotifier() != null) {
- clientQueueSizes.putAll(ai.getCacheClientNotifier().getClientQueueSizes());
- }
- } // for
- return clientQueueSizes;
- }
-
- /**
- * Returns a map of servers to count of pools connected to that server.
- * The map entry key is a String representation of the server,
- * @return map of servers to count of pools using that server
- */
- public static Map getConnectedServers() {
- final Map map = new HashMap(); // KEY:server (String), VALUE:List of active endpoints
- // returns an unmodifiable set
- Map/*<String,Pool>*/ poolMap = PoolManager.getAll();
- Iterator pools = poolMap.values().iterator();
- while(pools.hasNext()) {
- PoolImpl pi = (PoolImpl)pools.next();
- Map/*<ServerLocation,Endpoint>*/ eps = pi.getEndpointMap();
- Iterator it = eps.entrySet().iterator();
- while(it.hasNext()) {
- Map.Entry entry = (Map.Entry)it.next();
- ServerLocation loc = (ServerLocation)entry.getKey();
- com.gemstone.gemfire.cache.client.internal.Endpoint ep = (com.gemstone.gemfire.cache.client.internal.Endpoint)entry.getValue();
- String server = loc.getHostName()+"["+loc.getPort()+"]";
- Integer count = (Integer)map.get(server);
- if(count==null) {
- map.put(server,Integer.valueOf(1));
- } else {
- map.put(server,Integer.valueOf(count.intValue()+1));
- }
- }
- }
- return map;
- }
-
- public static Map getConnectedIncomingGateways() {
- Map connectedIncomingGateways = null;
- ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
- if (chMon == null) {
- connectedIncomingGateways = new HashMap();
- } else {
- connectedIncomingGateways = chMon.getConnectedIncomingGateways();
- }
- return connectedIncomingGateways;
- }
-
-
-
- /**
- * Notifies registered listeners that a bridge member has joined. The new
- * member may be a bridge client connecting to this process or a bridge
- * server that this process has just connected to.
- *
- * @param member the <code>DistributedMember</code>
- * @param client true if the member is a bridge client; false if bridge server
- */
- public static void notifyJoined(final DistributedMember member, final boolean client) {
- startMonitoring();
- ThreadPoolExecutor queuedExecutor = executor;
- if (queuedExecutor == null) {
- return;
- }
-
- final BridgeMembershipEvent event =
- new InternalBridgeMembershipEvent(member, client);
- if (forceSynchronous) {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_JOINED);
- }
- else {
- try {
- queuedExecutor.execute(new Runnable() {
- public void run() {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_JOINED);
- }
- });
- }
- catch (RejectedExecutionException e) {
- // executor must have been shutdown
- }
- }
- }
-
-
-
- /**
- * Notifies registered listeners that a bridge member has left. The departed
- * member may be a bridge client previously connected to this process or a
- * bridge server that this process was connected to.
- *
- * @param member the <code>DistributedMember</code>
- * @param client true if the member is a bridge client; false if bridge server
- */
- public static void notifyLeft(final DistributedMember member, final boolean client) {
- startMonitoring();
- ThreadPoolExecutor queuedExecutor = executor;
- if (queuedExecutor == null) {
- return;
- }
-
-
- final BridgeMembershipEvent event =
- new InternalBridgeMembershipEvent(member, client);
- if (forceSynchronous) {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_LEFT);
- }
- else {
- try {
- queuedExecutor.execute(new Runnable() {
- public void run() {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_LEFT);
- }
- });
- }
- catch (RejectedExecutionException e) {
- // executor must have been shutdown
- }
- }
- }
-
-
- /**
- * Notifies registered listeners that a bridge member has crashed. The
- * departed member may be a bridge client previously connected to this
- * process or a bridge server that this process was connected to.
- *
- * @param member the <code>DistributedMember</code>
- * @param client true if the member is a bridge client; false if bridge server
- */
- public static void notifyCrashed(final DistributedMember member, final boolean client) {
- ThreadPoolExecutor queuedExecutor = executor;
- if (queuedExecutor == null) {
- return;
- }
-
- final BridgeMembershipEvent event =
- new InternalBridgeMembershipEvent(member, client);
- if (forceSynchronous) {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
- }
- else {
-
- try {
- queuedExecutor.execute(new Runnable() {
- public void run() {
- doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
- doNotifyBridgeMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
- }
- });
- }
- catch (RejectedExecutionException e) {
- // executor must have been shutdown
- }
- }
- }
-
- private static void doNotifyClientMembershipListener(DistributedMember member, boolean client,
- ClientMembershipEvent clientMembershipEvent, EventType eventType) {
-
- for (Iterator<ClientMembershipListener> iter = clientMembershipListeners.iterator(); iter.hasNext();) {
-
- ClientMembershipListener listener = iter.next();
- try {
- if (eventType.equals(EventType.CLIENT_JOINED)) {
- listener.memberJoined(clientMembershipEvent);
- } else if (eventType.equals(EventType.CLIENT_LEFT)) {
- listener.memberLeft(clientMembershipEvent);
- } else {
- listener.memberCrashed(clientMembershipEvent);
- }
- } catch (CancelException e) {
- // this can be thrown by a bridge server when the system is shutting
- // down
- return;
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- SystemFailure.checkFailure();
- logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
- }
- }
- }
-
- private static void doNotifyBridgeMembershipListener(DistributedMember member, boolean client,
- BridgeMembershipEvent bridgeMembershipEvent, EventType eventType) {
-
- for (Iterator<BridgeMembershipListener> iter = membershipListeners.iterator(); iter.hasNext();) {
-
- BridgeMembershipListener listener = iter.next();
- try {
- if (eventType.equals(EventType.CLIENT_JOINED)) {
- listener.memberJoined(bridgeMembershipEvent);
- } else if (eventType.equals(EventType.CLIENT_LEFT)) {
- listener.memberLeft(bridgeMembershipEvent);
- } else {
- listener.memberCrashed(bridgeMembershipEvent);
- }
- } catch (CancelException e) {
- // this can be thrown by a bridge server when the system is shutting
- // down
- return;
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- SystemFailure.checkFailure();
- logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
- }
- }
- }
-
-
-// /**
-// * Returns true if there are any registered
-// * <code>BridgeMembershipListener</code>s.
-// */
-// private static boolean hasBridgeMembershipListeners() {
-// synchronized (membershipLock) {
-// return !membershipListeners.isEmpty();
-// }
-// }
-
- protected static void addInternalDistributedSystem(InternalDistributedSystem s) {
- synchronized(systems) {
- s.addDisconnectListener(
- new InternalDistributedSystem.DisconnectListener() {
- @Override
- public String toString() {
- return "Disconnect listener for InternalBridgeMembership";
- }
-
- public void onDisconnect(InternalDistributedSystem ss) {
- removeInternalDistributedSystem(ss);
- }
- });
- systems.add(s);
- // make sure executor is alive
- ensureExecutorIsRunning(); // optimized to do nothing if already running
- }
- }
-
- protected static void removeInternalDistributedSystem(InternalDistributedSystem sys) {
- synchronized(systems) {
- systems.remove(sys);
- if (systems.isEmpty()) {
- // clean up executor
-/*
-Object[] queueElementsBefore = new Object[executorQueue.size()];
-queueElementsBefore = executorQueue.toArray(queueElementsBefore);
-System.out.println("Before shut down, the executor's queue contains the following " + queueElementsBefore.length + " elements");
-for (int i=0; i<queueElementsBefore.length; i++) {
- System.out.println("\t" + queueElementsBefore[i]);
-}
-*/
- if (executor != null) {
- executor.shutdown();
- }
-/*
-Object[] queueElementsAfter = new Object[executorQueue.size()];
-queueElementsAfter = executorQueue.toArray(queueElementsAfter);
-System.out.println("After shut down, the executor's queue contains the following " + queueElementsAfter.length + " elements");
-for (int i=0; i<queueElementsAfter.length; i++) {
- System.out.println("\t" + queueElementsAfter[i]);
-}
-*/
- // deadcoded this clear to fix bug 35675 - clearing removed the shutdown token from the queue!
- // executorQueue.clear();
- executor = null;
- }
- }
- }
-
- /**
- * @guarded.By {@link #systems}
- */
- private static void ensureExecutorIsRunning() {
- // protected by calling method synchronized on systems
- if (executor == null) {
- final ThreadGroup group = threadGroup;
- ThreadFactory tf = new ThreadFactory() {
- public Thread newThread(Runnable command) {
- Thread thread =
- new Thread(group, command, "BridgeMembership Event Invoker");
- thread.setDaemon(true);
- return thread;
- }
- };
- LinkedBlockingQueue q = new LinkedBlockingQueue();
- executor = new ThreadPoolExecutor(1, 1/*max unused*/,
- 15, TimeUnit.SECONDS, q, tf);
- }
- }
-
- /**
- * Internal implementation of BridgeMembershipEvent.
- */
- protected static class InternalBridgeMembershipEvent
- implements BridgeMembershipEvent,ClientMembershipEvent {
-
- private final DistributedMember member;
- private final boolean client;
-
- /** Constructs new instance of event */
- protected InternalBridgeMembershipEvent(DistributedMember member, boolean client) {
- this.member = member;
- this.client = client;
- }
-
- public DistributedMember getMember() {
- return this.member;
- }
-
- public String getMemberId() {
- return this.member == null ? "unknown" : this.member.getId();
- }
-
- public boolean isClient() {
- return this.client;
- }
-
- @Override // GemStoneAddition
- public String toString() {
- final StringBuffer sb = new StringBuffer("[BridgeMembershipEvent: ");
- sb.append("member=").append(this.member);
- sb.append(", isClient=").append(this.client);
- sb.append("]");
- return sb.toString();
- }
- }
-
- /** If set to true for testing then notification will be synchronous */
- private static boolean forceSynchronous = false;
- /** Set to true if synchronous notification is needed for testing */
- public static void setForceSynchronous(boolean value) {
- forceSynchronous = value;
- }
-
- private static enum EventType{
- CLIENT_JOINED,
- CLIENT_LEFT,
- CLIENT_CRASHED
- }
-}
-
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
new file mode 100755
index 0000000..22fa0e3
--- /dev/null
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/InternalClientMembership.java
@@ -0,0 +1,617 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.gemstone.gemfire.internal.cache.tier;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.RejectedExecutionException;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.logging.log4j.Logger;
+
+import com.gemstone.gemfire.CancelException;
+import com.gemstone.gemfire.SystemFailure;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.client.internal.PoolImpl;
+import com.gemstone.gemfire.distributed.DistributedMember;
+import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.ServerLocation;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl;
+import com.gemstone.gemfire.internal.cache.tier.sockets.ClientHealthMonitor;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
+import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
+import com.gemstone.gemfire.management.membership.ClientMembershipEvent;
+import com.gemstone.gemfire.management.membership.ClientMembershipListener;
+
+/**
+ * Handles registration and event notification duties for
+ * <code>ClientMembershipListener</code>s. The public counterpart for this
+ * class is {@link com.gemstone.gemfire.management.membership.ClientMembership}.
+ *
+ * @author Kirk Lund
+ * @since 4.2.1
+ */
+public final class InternalClientMembership {
+
+ private static final Logger logger = LogService.getLogger();
+
+ /**
+ * The membership listeners registered on this InternalClientMembership
+ *
+ * This list is never modified in place, and a new list is installed
+ * only under the control of (@link #membershipLock}.
+ */
+ private static volatile List<ClientMembershipListener> clientMembershipListeners = Collections.emptyList();
+
+ /**
+ * Must be locked whenever references to the volatile field
+ * {@link #membershipListeners} is changed.
+ */
+ private static final Object membershipLock = new Object();
+
+ /**
+ * QueuedExecutor for firing ClientMembershipEvents
+ *
+ * Access synchronized via {@link #systems}
+ */
+ private static ThreadPoolExecutor executor;
+
+ private static final ThreadGroup threadGroup =
+ LoggingThreadGroup.createThreadGroup(
+ "ClientMembership Event Invoker Group", logger);
+
+ /** List of connected <code>DistributedSystem</code>s */
+ private static final List systems = new ArrayList(1);
+
+ /**
+ * True if class is monitoring systems
+ *
+ * @guarded.By InternalClientMembership.class
+ */
+ private static boolean isMonitoring = false;
+
+ /**
+ * This work used to be in a class initializer. Unfortunately, this allowed
+ * the class to escape before it was fully initialized, so now we just
+ * make sure this work is done before any public static method on it
+ * is invoked.
+ */
+ private static synchronized void startMonitoring() {
+ if (isMonitoring) {
+ return;
+ }
+
+ synchronized(systems) {
+ // Initialize our own list of distributed systems via a connect listener
+ List existingSystems = InternalDistributedSystem.addConnectListener(
+ new InternalDistributedSystem.ConnectListener() {
+ public void onConnect(InternalDistributedSystem sys) {
+ addInternalDistributedSystem(sys);
+ }
+ });
+
+ isMonitoring = true;
+
+ // While still holding the lock on systems, add all currently known
+ // systems to our own list
+ for (Iterator iter = existingSystems.iterator(); iter.hasNext();) {
+ InternalDistributedSystem sys = (InternalDistributedSystem) iter.next();
+ try {
+ if (sys.isConnected()) {
+ addInternalDistributedSystem(sys);
+ }
+ }
+ catch (DistributedSystemDisconnectedException e) {
+ // it doesn't care (bug 37379)
+ }
+ }
+
+ } // synchronized
+ }
+
+ private InternalClientMembership() {}
+
+ /**
+ * Registers a {@link ClientMembershipListener} for notification of connection
+ * changes for CacheServer and clients.
+ *
+ * @param listener
+ * a ClientMembershipListener to be registered
+ */
+ public static void registerClientMembershipListener(ClientMembershipListener listener) {
+ startMonitoring();
+ synchronized (membershipLock) {
+ List<ClientMembershipListener> oldListeners = clientMembershipListeners;
+ if (!oldListeners.contains(listener)) {
+ List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
+ newListeners.add(listener);
+ clientMembershipListeners = newListeners;
+ }
+ }
+ }
+
+ /**
+ * Removes registration of a previously registered
+ * {@link ClientMembershipListener}.
+ *
+ * @param listener
+ * a ClientMembershipListener to be unregistered
+ */
+ public static void unregisterClientMembershipListener(ClientMembershipListener listener) {
+ startMonitoring();
+ synchronized (membershipLock) {
+ List<ClientMembershipListener> oldListeners = clientMembershipListeners;
+ if (oldListeners.contains(listener)) {
+ List<ClientMembershipListener> newListeners = new ArrayList<ClientMembershipListener>(oldListeners);
+ if (newListeners.remove(listener)) {
+ clientMembershipListeners = newListeners;
+ }
+ }
+ }
+ }
+
+ /**
+ * Returns an array of all the currently registered
+ * <code>ClientMembershipListener</code>s. Modifications to the returned array
+ * will not effect the registration of these listeners.
+ *
+ * @return the registered <code>ClientMembershipListener</code>s; an empty
+ * array if no listeners
+ */
+ public static ClientMembershipListener[] getClientMembershipListeners() {
+ startMonitoring();
+ // Synchronization is not needed because we never modify this list
+ // in place.
+
+ List<ClientMembershipListener> l = clientMembershipListeners; // volatile fetch
+ // convert to an array
+ ClientMembershipListener[] listeners = (ClientMembershipListener[]) l
+ .toArray(new ClientMembershipListener[l.size()]);
+ return listeners;
+ }
+
+ /**
+ * Removes registration of all currently registered
+ * <code>ClientMembershipListener<code>s. and <code>ClientMembershipListener<code>s.
+ */
+ public static void unregisterAllListeners() {
+ startMonitoring();
+ synchronized (membershipLock) {
+ clientMembershipListeners = new ArrayList<ClientMembershipListener>();
+ }
+ }
+
+
+
+ /**
+ * Returns a map of client memberIds to count of connections to that client.
+ * The map entry key is a String representation of the client memberId, and
+ * the map entry value is an Integer count of connections to that client.
+ * Since a single client can have multiple ConnectionProxy objects, this
+ * map will contain all the Connection objects across the ConnectionProxies
+ * @param onlyClientsNotifiedByThisServer true will return only those clients
+ * that are actively being updated by this server
+ * @return map of client memberIds to count of connections to that client
+ *
+ *
+ */
+ public static Map getConnectedClients(boolean onlyClientsNotifiedByThisServer) {
+ ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
+ Set filterProxyIDs = null;
+ if(onlyClientsNotifiedByThisServer) {
+ // Note it is not necessary to synchronize on the list of Client servers here,
+ // since this is only a status (snapshot) of the system.
+ for (Iterator bsii = CacheFactory.getAnyInstance().getCacheServers().iterator(); bsii.hasNext(); ) {
+ CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+ AcceptorImpl ai = bsi.getAcceptor();
+ if (ai != null && ai.getCacheClientNotifier() != null) {
+ if (filterProxyIDs != null) {
+ // notifierClients is a copy set from CacheClientNotifier
+ filterProxyIDs.addAll(ai.getCacheClientNotifier().getActiveClients());
+ }
+ else {
+ // notifierClients is a copy set from CacheClientNotifier
+ filterProxyIDs = ai.getCacheClientNotifier().getActiveClients();
+ }
+ }
+ }
+ }
+
+ Map map = chMon.getConnectedClients(filterProxyIDs);
+ /*if (onlyClientsNotifiedByThisServer) {
+ Map notifyMap = new HashMap();
+
+ for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
+ String memberId = (String) iter.next();
+ if (notifierClients.contains(memberId)) {
+ // found memberId that is notified by this server
+ notifyMap.put(memberId, map.get(memberId));
+ }
+ }
+ map = notifyMap;
+ }*/
+ return map;
+ }
+
+ /**
+ * This method returns the CacheClientStatus for all the clients that are
+ * connected to this server. This method returns all clients irrespective of
+ * whether subscription is enabled or not.
+ *
+ * @return Map of ClientProxyMembershipID against CacheClientStatus objects.
+ */
+ public static Map getStatusForAllClientsIgnoreSubscriptionStatus() {
+ Map result = new HashMap();
+ if (ClientHealthMonitor.getInstance() != null)
+ result = ClientHealthMonitor.getInstance().getStatusForAllClients();
+
+ return result;
+ }
+
+ /**
+ * Caller must synchronize on cache.allClientServersLock
+ * @return all the clients
+ */
+ public static Map getConnectedClients() {
+
+ // Get all clients
+ Map allClients = new HashMap();
+ for (Iterator bsii = CacheFactory.getAnyInstance().getCacheServers().iterator(); bsii.hasNext(); ) {
+ CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+ AcceptorImpl ai = bsi.getAcceptor();
+ if (ai != null && ai.getCacheClientNotifier() != null) {
+ allClients.putAll(ai.getCacheClientNotifier().getAllClients());
+ }
+ }
+
+ // Fill in the missing info, if HealthMonitor started
+ if (ClientHealthMonitor.getInstance()!=null)
+ ClientHealthMonitor.getInstance().fillInClientInfo(allClients);
+
+ return allClients;
+ }
+
+ public static Map getClientQueueSizes() {
+ Map clientQueueSizes = new HashMap();
+ GemFireCacheImpl c = (GemFireCacheImpl)CacheFactory.getAnyInstance();
+ if (c==null) // Add a NULL Check
+ return clientQueueSizes;
+
+ for (Iterator bsii = c.getCacheServers().iterator(); bsii.hasNext(); ) {
+ CacheServerImpl bsi = (CacheServerImpl) bsii.next();
+ AcceptorImpl ai = bsi.getAcceptor();
+ if (ai != null && ai.getCacheClientNotifier() != null) {
+ clientQueueSizes.putAll(ai.getCacheClientNotifier().getClientQueueSizes());
+ }
+ } // for
+ return clientQueueSizes;
+ }
+
+ /**
+ * Returns a map of servers to count of pools connected to that server.
+ * The map entry key is a String representation of the server,
+ * @return map of servers to count of pools using that server
+ */
+ public static Map getConnectedServers() {
+ final Map map = new HashMap(); // KEY:server (String), VALUE:List of active endpoints
+ // returns an unmodifiable set
+ Map/*<String,Pool>*/ poolMap = PoolManager.getAll();
+ Iterator pools = poolMap.values().iterator();
+ while(pools.hasNext()) {
+ PoolImpl pi = (PoolImpl)pools.next();
+ Map/*<ServerLocation,Endpoint>*/ eps = pi.getEndpointMap();
+ Iterator it = eps.entrySet().iterator();
+ while(it.hasNext()) {
+ Map.Entry entry = (Map.Entry)it.next();
+ ServerLocation loc = (ServerLocation)entry.getKey();
+ com.gemstone.gemfire.cache.client.internal.Endpoint ep = (com.gemstone.gemfire.cache.client.internal.Endpoint)entry.getValue();
+ String server = loc.getHostName()+"["+loc.getPort()+"]";
+ Integer count = (Integer)map.get(server);
+ if(count==null) {
+ map.put(server,Integer.valueOf(1));
+ } else {
+ map.put(server,Integer.valueOf(count.intValue()+1));
+ }
+ }
+ }
+ return map;
+ }
+
+ public static Map getConnectedIncomingGateways() {
+ Map connectedIncomingGateways = null;
+ ClientHealthMonitor chMon = ClientHealthMonitor.getInstance();
+ if (chMon == null) {
+ connectedIncomingGateways = new HashMap();
+ } else {
+ connectedIncomingGateways = chMon.getConnectedIncomingGateways();
+ }
+ return connectedIncomingGateways;
+ }
+
+
+
+ /**
+ * Notifies registered listeners that a Client member has joined. The new
+ * member may be a client connecting to this process or a
+ * server that this process has just connected to.
+ *
+ * @param member the <code>DistributedMember</code>
+ * @param client true if the member is a client; false if server
+ */
+ public static void notifyJoined(final DistributedMember member, final boolean client) {
+ startMonitoring();
+ ThreadPoolExecutor queuedExecutor = executor;
+ if (queuedExecutor == null) {
+ return;
+ }
+
+ final ClientMembershipEvent event =
+ new InternalClientMembershipEvent(member, client);
+ if (forceSynchronous) {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
+ }
+ else {
+ try {
+ queuedExecutor.execute(new Runnable() {
+ public void run() {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_JOINED);
+ }
+ });
+ }
+ catch (RejectedExecutionException e) {
+ // executor must have been shutdown
+ }
+ }
+ }
+
+
+
+ /**
+ * Notifies registered listeners that a member has left. The departed
+ * member may be a client previously connected to this process or a
+ * server that this process was connected to.
+ *
+ * @param member the <code>DistributedMember</code>
+ * @param client true if the member is a client; false if server
+ */
+ public static void notifyLeft(final DistributedMember member, final boolean client) {
+ startMonitoring();
+ ThreadPoolExecutor queuedExecutor = executor;
+ if (queuedExecutor == null) {
+ return;
+ }
+
+
+ final ClientMembershipEvent event =
+ new InternalClientMembershipEvent(member, client);
+ if (forceSynchronous) {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
+ }
+ else {
+ try {
+ queuedExecutor.execute(new Runnable() {
+ public void run() {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_LEFT);
+ }
+ });
+ }
+ catch (RejectedExecutionException e) {
+ // executor must have been shutdown
+ }
+ }
+ }
+
+
+ /**
+ * Notifies registered listeners that a member has crashed. The
+ * departed member may be a client previously connected to this
+ * process or a server that this process was connected to.
+ *
+ * @param member the <code>DistributedMember</code>
+ * @param client true if the member is a client; false if server
+ */
+ public static void notifyCrashed(final DistributedMember member, final boolean client) {
+ ThreadPoolExecutor queuedExecutor = executor;
+ if (queuedExecutor == null) {
+ return;
+ }
+
+ final ClientMembershipEvent event =
+ new InternalClientMembershipEvent(member, client);
+ if (forceSynchronous) {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
+ }
+ else {
+
+ try {
+ queuedExecutor.execute(new Runnable() {
+ public void run() {
+ doNotifyClientMembershipListener(member, client, event,EventType.CLIENT_CRASHED);
+ }
+ });
+ }
+ catch (RejectedExecutionException e) {
+ // executor must have been shutdown
+ }
+ }
+ }
+
+ private static void doNotifyClientMembershipListener(DistributedMember member, boolean client,
+ ClientMembershipEvent clientMembershipEvent, EventType eventType) {
+
+ for (Iterator<ClientMembershipListener> iter = clientMembershipListeners.iterator(); iter.hasNext();) {
+
+ ClientMembershipListener listener = iter.next();
+ try {
+ if (eventType.equals(EventType.CLIENT_JOINED)) {
+ listener.memberJoined(clientMembershipEvent);
+ } else if (eventType.equals(EventType.CLIENT_LEFT)) {
+ listener.memberLeft(clientMembershipEvent);
+ } else {
+ listener.memberCrashed(clientMembershipEvent);
+ }
+ } catch (CancelException e) {
+ // this can be thrown by a server when the system is shutting
+ // down
+ return;
+ } catch (VirtualMachineError e) {
+ SystemFailure.initiateFailure(e);
+ throw e;
+ } catch (Throwable t) {
+ SystemFailure.checkFailure();
+ logger.warn(LocalizedMessage.create(LocalizedStrings.LocalRegion_UNEXPECTED_EXCEPTION), t);
+ }
+ }
+ }
+
+// /**
+// * Returns true if there are any registered
+// * <code>ClientMembershipListener</code>s.
+// */
+// private static boolean hasClientMembershipListeners() {
+// synchronized (membershipLock) {
+// return !membershipListeners.isEmpty();
+// }
+// }
+
+ protected static void addInternalDistributedSystem(InternalDistributedSystem s) {
+ synchronized(systems) {
+ s.addDisconnectListener(
+ new InternalDistributedSystem.DisconnectListener() {
+ @Override
+ public String toString() {
+ return "Disconnect listener for InternalClientMembership";
+ }
+
+ public void onDisconnect(InternalDistributedSystem ss) {
+ removeInternalDistributedSystem(ss);
+ }
+ });
+ systems.add(s);
+ // make sure executor is alive
+ ensureExecutorIsRunning(); // optimized to do nothing if already running
+ }
+ }
+
+ protected static void removeInternalDistributedSystem(InternalDistributedSystem sys) {
+ synchronized(systems) {
+ systems.remove(sys);
+ if (systems.isEmpty()) {
+ // clean up executor
+/*
+Object[] queueElementsBefore = new Object[executorQueue.size()];
+queueElementsBefore = executorQueue.toArray(queueElementsBefore);
+System.out.println("Before shut down, the executor's queue contains the following " + queueElementsBefore.length + " elements");
+for (int i=0; i<queueElementsBefore.length; i++) {
+ System.out.println("\t" + queueElementsBefore[i]);
+}
+*/
+ if (executor != null) {
+ executor.shutdown();
+ }
+/*
+Object[] queueElementsAfter = new Object[executorQueue.size()];
+queueElementsAfter = executorQueue.toArray(queueElementsAfter);
+System.out.println("After shut down, the executor's queue contains the following " + queueElementsAfter.length + " elements");
+for (int i=0; i<queueElementsAfter.length; i++) {
+ System.out.println("\t" + queueElementsAfter[i]);
+}
+*/
+ // deadcoded this clear to fix bug 35675 - clearing removed the shutdown token from the queue!
+ // executorQueue.clear();
+ executor = null;
+ }
+ }
+ }
+
+ /**
+ * @guarded.By {@link #systems}
+ */
+ private static void ensureExecutorIsRunning() {
+ // protected by calling method synchronized on systems
+ if (executor == null) {
+ final ThreadGroup group = threadGroup;
+ ThreadFactory tf = new ThreadFactory() {
+ public Thread newThread(Runnable command) {
+ Thread thread =
+ new Thread(group, command, "ClientMembership Event Invoker");
+ thread.setDaemon(true);
+ return thread;
+ }
+ };
+ LinkedBlockingQueue q = new LinkedBlockingQueue();
+ executor = new ThreadPoolExecutor(1, 1/*max unused*/,
+ 15, TimeUnit.SECONDS, q, tf);
+ }
+ }
+
+ /**
+ * Internal implementation of ClientMembershipEvent.
+ */
+ protected static class InternalClientMembershipEvent
+ implements ClientMembershipEvent {
+
+ private final DistributedMember member;
+ private final boolean client;
+
+ /** Constructs new instance of event */
+ protected InternalClientMembershipEvent(DistributedMember member, boolean client) {
+ this.member = member;
+ this.client = client;
+ }
+
+ public DistributedMember getMember() {
+ return this.member;
+ }
+
+ public String getMemberId() {
+ return this.member == null ? "unknown" : this.member.getId();
+ }
+
+ public boolean isClient() {
+ return this.client;
+ }
+
+ @Override // GemStoneAddition
+ public String toString() {
+ final StringBuffer sb = new StringBuffer("[ClientMembershipEvent: ");
+ sb.append("member=").append(this.member);
+ sb.append(", isClient=").append(this.client);
+ sb.append("]");
+ return sb.toString();
+ }
+ }
+
+ /** If set to true for testing then notification will be synchronous */
+ private static boolean forceSynchronous = false;
+ /** Set to true if synchronous notification is needed for testing */
+ public static void setForceSynchronous(boolean value) {
+ forceSynchronous = value;
+ }
+
+ private static enum EventType{
+ CLIENT_JOINED,
+ CLIENT_LEFT,
+ CLIENT_CRASHED
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
index aac9176..74cdfa9 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/AcceptorImpl.java
@@ -58,7 +58,7 @@ import com.gemstone.gemfire.ToDataException;
import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.RegionDestroyedException;
import com.gemstone.gemfire.cache.client.internal.PoolImpl;
-import com.gemstone.gemfire.cache.util.BridgeServer;
+import com.gemstone.gemfire.cache.server.CacheServer;
import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
import com.gemstone.gemfire.distributed.internal.DM;
import com.gemstone.gemfire.distributed.internal.DistributionConfig;
@@ -91,8 +91,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
* Implements the acceptor thread on the bridge server. Accepts connections from
* the edge and starts up threads to process requests from these.
*
- * @see com.gemstone.gemfire.cache.util.BridgeServer
- *
* @author Sudhir Menon
* @since 2.0.2
*/
@@ -328,7 +326,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
}
{
int tmp_maxThreads = maxThreads;
- if (maxThreads == BridgeServer.DEFAULT_MAX_THREADS) {
+ if (maxThreads == CacheServer.DEFAULT_MAX_THREADS) {
// consult system properties for 5.0.2 backwards compatibility
if (DEPRECATED_SELECTOR) {
tmp_maxThreads = DEPRECATED_SELECTOR_POOL_SIZE;
@@ -534,7 +532,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
this.localPort = port;
String sockName = this.serverSock.getLocalSocketAddress().toString();
logger.info(LocalizedMessage.create(
- LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_CONNECTION_LISTENER_BOUND_TO_ADDRESS_0_WITH_BACKLOG_1,
+ LocalizedStrings.AcceptorImpl_CACHE_SERVER_CONNECTION_LISTENER_BOUND_TO_ADDRESS_0_WITH_BACKLOG_1,
new Object[] {sockName, Integer.valueOf(backLog)}));
if(isGatewayReceiver){
this.stats = GatewayReceiverStats.createGatewayReceiverStats(sockName);
@@ -1357,7 +1355,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
if (isRunning()) {
if (!this.loggedAcceptError) {
this.loggedAcceptError = true;
- logger.error(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_UNEXPECTED_IOEXCEPTION_FROM_ACCEPT, e));
+ logger.error(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_UNEXPECTED_IOEXCEPTION_FROM_ACCEPT, e));
}
// Why sleep?
// try {Thread.sleep(3000);} catch (InterruptedException ie) {}
@@ -1370,7 +1368,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
catch (Exception e) {
closeSocket(s);
if (isRunning()) {
- logger.fatal(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_UNEXPECTED_EXCEPTION, e));
+ logger.fatal(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_UNEXPECTED_EXCEPTION, e));
}
}
}
@@ -1410,10 +1408,10 @@ public class AcceptorImpl extends Acceptor implements Runnable
if (!AcceptorImpl.this.loggedAcceptError) {
AcceptorImpl.this.loggedAcceptError = true;
if (ex instanceof SocketTimeoutException) {
- logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION_DUE_TO_SOCKET_TIMEOUT));
+ logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION_DUE_TO_SOCKET_TIMEOUT));
}
else {
- logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION__0, ex), ex);
+ logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_FAILED_ACCEPTING_CLIENT_CONNECTION__0, ex), ex);
}
}
}
@@ -1487,7 +1485,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask() {
@Override
public void run2() {
- logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_TIMED_OUT_WAITING_FOR_HANDSHAKE_FROM__0, s.getRemoteSocketAddress()));
+ logger.warn(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_TIMED_OUT_WAITING_FOR_HANDSHAKE_FROM__0, s.getRemoteSocketAddress()));
closeSocket(s);
}
};
@@ -1636,7 +1634,7 @@ public class AcceptorImpl extends Acceptor implements Runnable
try {
synchronized (syncLock) {
this.shutdown = true;
- logger.info(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_BRIDGE_SERVER_ON_PORT_0_IS_SHUTTING_DOWN, this.localPort));
+ logger.info(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_CACHE_SERVER_ON_PORT_0_IS_SHUTTING_DOWN, this.localPort));
if (this.thread != null) {
this.thread.interrupt();
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
index deddfd1..b1464b9 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
@@ -77,10 +77,10 @@ import com.gemstone.gemfire.internal.SocketCloser;
import com.gemstone.gemfire.internal.SocketUtils;
import com.gemstone.gemfire.internal.SystemTimer;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
-import com.gemstone.gemfire.internal.cache.BridgeRegionEventImpl;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientRegionEventImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
import com.gemstone.gemfire.internal.cache.CacheClientStatus;
import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor;
import com.gemstone.gemfire.internal.cache.CachedDeserializable;
@@ -1103,7 +1103,7 @@ public class CacheClientNotifier {
removeClientProxy(proxy);
if (PoolImpl.AFTER_QUEUE_DESTROY_MESSAGE_FLAG) {
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.afterQueueDestroyMessage();
}
@@ -1159,8 +1159,8 @@ public class CacheClientNotifier {
RegionEventImpl regionEvent = (RegionEventImpl)event;
callbackArgument = regionEvent.getRawCallbackArgument();
eventIdentifier = regionEvent.getEventId();
- if (event instanceof BridgeRegionEventImpl) {
- BridgeRegionEventImpl bridgeEvent = (BridgeRegionEventImpl)event;
+ if (event instanceof ClientRegionEventImpl) {
+ ClientRegionEventImpl bridgeEvent = (ClientRegionEventImpl)event;
membershipID = bridgeEvent.getContext();
}
}
@@ -2138,7 +2138,7 @@ public class CacheClientNotifier {
&& !HARegionQueue.HA_EVICTION_POLICY_NONE.equals(overflowAttributesList
.get(0))) {
haContainer = new HAContainerRegion(cache.getRegion(Region.SEPARATOR
- + BridgeServerImpl.clientMessagesRegion((GemFireCacheImpl)cache,
+ + CacheServerImpl.clientMessagesRegion((GemFireCacheImpl)cache,
(String)overflowAttributesList.get(0),
((Integer)overflowAttributesList.get(1)).intValue(),
((Integer)overflowAttributesList.get(2)).intValue(),
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
index 85c7493..9cfbbbe 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
@@ -66,8 +66,8 @@ import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
import com.gemstone.gemfire.internal.SystemTimer;
import com.gemstone.gemfire.internal.SystemTimer.SystemTimerTask;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisee;
import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor.InitialImageAdvice;
import com.gemstone.gemfire.internal.cache.Conflatable;
@@ -2796,7 +2796,7 @@ public class CacheClientProxy implements ClientSession {
latestValue);
if (AFTER_MESSAGE_CREATION_FLAG) {
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.afterMessageCreation(message);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
index 64731d1..07dc030 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientUpdater.java
@@ -65,8 +65,8 @@ import com.gemstone.gemfire.internal.SocketCreator;
import com.gemstone.gemfire.internal.SocketUtils;
import com.gemstone.gemfire.internal.StatisticsTypeFactoryImpl;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.BridgeObserver;
-import com.gemstone.gemfire.internal.cache.BridgeObserverHolder;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
import com.gemstone.gemfire.internal.cache.EntryEventImpl;
import com.gemstone.gemfire.internal.cache.EventID;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
@@ -1273,7 +1273,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
// // CALLBACK TESTING PURPOSE ONLY ////
if (PoolImpl.IS_INSTANTIATOR_CALLBACK) {
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.afterReceivingFromServer(eventId);
}
// /////////////////////////////////////
@@ -1323,7 +1323,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
// // CALLBACK TESTING PURPOSE ONLY ////
if (PoolImpl.IS_INSTANTIATOR_CALLBACK) {
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.afterReceivingFromServer(eventId);
}
///////////////////////////////////////
@@ -1794,7 +1794,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
if (errMessage == null) {
errMessage = "";
}
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.beforeFailoverByCacheClientUpdater(this.location);
eManager.serverCrashed(this.endpoint);
if (isDebugEnabled) {
@@ -1811,7 +1811,7 @@ public class CacheClientUpdater extends Thread implements ClientUpdater,
catch (Exception e) {
if (!quitting()) {
this.endPointDied = true;
- BridgeObserver bo = BridgeObserverHolder.getInstance();
+ ClientServerObserver bo = ClientServerObserverHolder.getInstance();
bo.beforeFailoverByCacheClientUpdater(this.location);
eManager.serverCrashed(this.endpoint);
String message = ": Caught the following exception and will exit: ";
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
index 01bcfac..73c3731 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientBlacklistProcessor.java
@@ -17,7 +17,7 @@ import com.gemstone.gemfire.distributed.internal.PooledDistributionMessage;
import com.gemstone.gemfire.distributed.internal.ReplyException;
import com.gemstone.gemfire.distributed.internal.ReplyMessage;
import com.gemstone.gemfire.distributed.internal.ReplyProcessor21;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import java.io.DataInput;
@@ -96,7 +96,7 @@ public class ClientBlacklistProcessor extends ReplyProcessor21 {
if (l != null) {
Iterator i = l.iterator();
while (i.hasNext()) {
- BridgeServerImpl bs = (BridgeServerImpl)i.next();
+ CacheServerImpl bs = (CacheServerImpl)i.next();
CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
//add client to the black list.
ccn.addToBlacklistedClient(this.proxyId);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
index 3e57a1b..6f0e033 100755
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/RemoveClientFromBlacklistMessage.java
@@ -21,7 +21,7 @@ import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.distributed.DistributedSystem;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.PooledDistributionMessage;
-import com.gemstone.gemfire.internal.cache.BridgeServerImpl;
+import com.gemstone.gemfire.internal.cache.CacheServerImpl;
import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
import com.gemstone.gemfire.internal.logging.LogService;
/**
@@ -60,7 +60,7 @@ public class RemoveClientFromBlacklistMessage extends PooledDistributionMessage
if (l != null) {
Iterator i = l.iterator();
while (i.hasNext()) {
- BridgeServerImpl bs = (BridgeServerImpl)i.next();
+ CacheServerImpl bs = (CacheServerImpl)i.next();
CacheClientNotifier ccn = bs.getAcceptor().getCacheClientNotifier();
Set s = ccn.getBlacklistedClient();
if (s != null) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
index b307b95..9fe595b 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
@@ -47,7 +47,7 @@ import com.gemstone.gemfire.internal.cache.tier.Acceptor;
import com.gemstone.gemfire.internal.cache.tier.CachedRegionHelper;
import com.gemstone.gemfire.internal.cache.tier.ClientHandShake;
import com.gemstone.gemfire.internal.cache.tier.Command;
-import com.gemstone.gemfire.internal.cache.tier.InternalBridgeMembership;
+import com.gemstone.gemfire.internal.cache.tier.InternalClientMembership;
import com.gemstone.gemfire.internal.cache.tier.MessageType;
import com.gemstone.gemfire.internal.cache.tier.sockets.command.Default;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
@@ -571,7 +571,7 @@ public class ServerConnection implements Runnable {
this.crHelper.checkCancelInProgress(null);
if (clientJoined && isFiringMembershipEvents()) {
// This is a new client. Notify bridge membership and heartbeat monitor.
- InternalBridgeMembership.notifyJoined(this.proxyId.getDistributedMember(),
+ InternalClientMembership.notifyJoined(this.proxyId.getDistributedMember(),
true);
}
@@ -871,9 +871,9 @@ public class ServerConnection implements Runnable {
// the heartbeat monitor; other wise just remove the connection.
if (clientDeparted && isFiringMembershipEvents()) {
if (this.clientDisconnectedCleanly && !forceClientCrashEvent) {
- InternalBridgeMembership.notifyLeft(proxyId.getDistributedMember(), true);
+ InternalClientMembership.notifyLeft(proxyId.getDistributedMember(), true);
} else {
- InternalBridgeMembership.notifyCrashed(this.proxyId.getDistributedMember(), true);
+ InternalClientMembership.notifyCrashed(this.proxyId.getDistributedMember(), true);
}
// The client has departed. Remove this last connection and unregister it.
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
index 0d169e9..b334ebb 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/doc-files/communication-architecture.fig
@@ -119,10 +119,10 @@ Single
4 0 0 50 -1 0 12 0.0000 4 180 1245 600 3900 ConnectionProxy\001
-6
6 600 2775 1725 3075
-# HREF="../../../../cache/util/BridgeLoader.html" ALT="BridgeLoader"
+# HREF="../../../../cache/client/Pool.html" ALT="ClientPool"
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
600 2775 1725 2775 1725 3075 600 3075 600 2775
-4 0 0 50 -1 -1 12 0.0000 4 180 975 675 3000 BridgeLoader\001
+4 0 0 50 -1 -1 12 0.0000 4 180 975 675 3000 ClientPool\001
-6
2 1 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 2
6450 375 6450 6750