Return-Path: X-Original-To: apmail-geode-commits-archive@minotaur.apache.org Delivered-To: apmail-geode-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 38BCF1897A for ; Fri, 16 Oct 2015 20:42:18 +0000 (UTC) Received: (qmail 14645 invoked by uid 500); 16 Oct 2015 20:42:13 -0000 Delivered-To: apmail-geode-commits-archive@geode.apache.org Received: (qmail 14609 invoked by uid 500); 16 Oct 2015 20:42:12 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 14600 invoked by uid 99); 16 Oct 2015 20:42:12 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2015 20:42:12 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 5E2BEC63B1 for ; Fri, 16 Oct 2015 20:42:12 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.791 X-Spam-Level: * X-Spam-Status: No, score=1.791 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id ExZxVpFDez1V for ; Fri, 16 Oct 2015 20:42:00 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with SMTP id 9C49F26BC5 for ; Fri, 16 Oct 2015 20:41:43 +0000 (UTC) Received: (qmail 8874 invoked by uid 99); 16 Oct 2015 20:41:43 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Oct 2015 20:41:43 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 71ED7E0231; Fri, 16 Oct 2015 20:41:43 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: klund@apache.org To: commits@geode.incubator.apache.org Date: Fri, 16 Oct 2015 20:42:21 -0000 Message-Id: In-Reply-To: <95c7941e4a5d4eb8ad528cab2ad71fba@git.apache.org> References: <95c7941e4a5d4eb8ad528cab2ad71fba@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [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/admin/remote/RemoteGemFireVM.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGemFireVM.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGemFireVM.java index 8c18e61..ab64026 100644 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGemFireVM.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGemFireVM.java @@ -672,7 +672,7 @@ public abstract class RemoteGemFireVM implements GemFireVM { return setCacheConfigValue(c, SEARCH_TIMEOUT_CODE, v); } - public AdminBridgeServer addBridgeServer(CacheInfo cache) + public AdminBridgeServer addCacheServer(CacheInfo cache) throws AdminException { BridgeServerRequest request = http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractBridgeServer.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractBridgeServer.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractBridgeServer.java deleted file mode 100644 index 383239e..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractBridgeServer.java +++ /dev/null @@ -1,425 +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; - -import com.gemstone.gemfire.CancelException; -import com.gemstone.gemfire.cache.Cache; -import com.gemstone.gemfire.cache.server.CacheServer; -import com.gemstone.gemfire.cache.server.ClientSubscriptionConfig; -import com.gemstone.gemfire.cache.server.ServerLoadProbe; -import com.gemstone.gemfire.cache.util.BridgeMembership; -import com.gemstone.gemfire.cache.util.BridgeMembershipEvent; -import com.gemstone.gemfire.cache.util.BridgeMembershipListener; -import com.gemstone.gemfire.cache.util.BridgeMembershipListenerAdapter; -import com.gemstone.gemfire.cache.util.BridgeServer; -import com.gemstone.gemfire.distributed.DistributedMember; -import com.gemstone.gemfire.distributed.internal.DM; -import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem; -import com.gemstone.gemfire.internal.admin.ClientMembershipMessage; -import com.gemstone.gemfire.internal.cache.xmlcache.CacheCreation; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Set; - -/** - * Abstract class that contains common code that all true implementations - * of {@link CacheServer} can use. - * - * @author darrel - * @since 5.7 - */ -public abstract class AbstractBridgeServer implements CacheServer, BridgeServer { - - public static final String TEST_OVERRIDE_DEFAULT_PORT_PROPERTY = "gemfire.test.CacheServer.OVERRIDE_DEFAULT_PORT"; - - /** The cache that is served by this bridge server */ - protected final InternalCache cache; - - /** The port that the bridge server was configured to run on */ - protected int port; - - /** The maximum number of connections that the BridgeServer will accept */ - protected int maxConnections; - - /** The maximum number of threads that the BridgeServer will create */ - protected int maxThreads; - - /** Whether the bridge server notifies by subscription */ - protected boolean notifyBySubscription = true; - - /** - * The buffer size in bytes of the socket for this - * BridgeServer - */ - protected int socketBufferSize; - - /** - * The tcpNoDelay setting for outgoing sockets - */ - protected boolean tcpNoDelay; - - /** - * The maximum amount of time between client pings. This value is used by - * the ClientHealthMonitor to determine the health of this - * BridgeServer's clients. - */ - protected int maximumTimeBetweenPings; - - /** the maximum number of messages that can be enqueued in a client-queue. */ - protected int maximumMessageCount; - - /** - * the time (in seconds) after which a message in the client queue will - * expire. - */ - protected int messageTimeToLive; - /** - * The groups this server belongs to. Use getGroups to read. - * @since 5.7 - */ - protected String[] groups; - - protected ServerLoadProbe loadProbe; - - /** - * The ip address or host name that this server is to listen on. - * @since 5.7 - */ - protected String bindAddress; - /** - * The ip address or host name that will be given to clients so they can connect - * to this server - * @since 5.7 - */ - protected String hostnameForClients; - - /** - * How frequency to poll the load on this server. - */ - protected long loadPollInterval; - - protected ClientSubscriptionConfig clientSubscriptionConfig; - - /** - * Listener that would listen to bridge membership and notify the admin - * members(if any exist) as clients of this server leave/crash. - */ - protected final BridgeMembershipListener listener; - - /** - * The number of seconds to keep transaction states for disconnected clients. - * This allows the client to fail over to another server and still find - * the transaction state to complete the transaction. - */ - private int transactionTimeToLive; - - ////////////////////// Constructors ////////////////////// - - /** - * Creates a new BridgeServer with the default - * configuration. - * - * @param cache - * The cache being served - */ - public AbstractBridgeServer(InternalCache cache) { - this(cache, true); - } - - public AbstractBridgeServer(InternalCache cache, boolean attachListener) { - this.cache = cache; - this.port = Integer.getInteger(TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, CacheServer.DEFAULT_PORT); - this.maxConnections = CacheServer.DEFAULT_MAX_CONNECTIONS; - this.maxThreads = CacheServer.DEFAULT_MAX_THREADS; - this.socketBufferSize = CacheServer.DEFAULT_SOCKET_BUFFER_SIZE; - this.tcpNoDelay = CacheServer.DEFAULT_TCP_NO_DELAY; - this.maximumTimeBetweenPings = CacheServer.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS; - this.maximumMessageCount = CacheServer.DEFAULT_MAXIMUM_MESSAGE_COUNT; - this.messageTimeToLive = CacheServer.DEFAULT_MESSAGE_TIME_TO_LIVE; - // TODO this should be configurable in CacheServer - this.transactionTimeToLive = Integer.getInteger("gemfire.cacheServer.transactionTimeToLive", 180); - this.groups = CacheServer.DEFAULT_GROUPS; - this.bindAddress = CacheServer.DEFAULT_BIND_ADDRESS; - this.hostnameForClients = CacheServer.DEFAULT_HOSTNAME_FOR_CLIENTS; - this.loadProbe = CacheServer.DEFAULT_LOAD_PROBE; - this.loadPollInterval = CacheServer.DEFAULT_LOAD_POLL_INTERVAL; - this.clientSubscriptionConfig = new ClientSubscriptionConfigImpl(); - - if (!attachListener) { - this.listener = null; - return; - } - listener = new BridgeMembershipListenerAdapter() { - /** - * Invoked when a client connected to this process or when this process - * has got connected with a BridgeServer. - * - * @param event - * BridgeMembershipEvent associated with client getting connected - */ - @Override - public void memberJoined(BridgeMembershipEvent event) { - /* process events for clients only */ - if (event.isClient()) { - createAndSendMessage(event, ClientMembershipMessage.JOINED); - } - } - - /** - * Invoked when a client has gracefully disconnected from this process - * or when this process has gracefully disconnected from a BridgeServer. - * - * @param event - * BridgeMembershipEvent associated with client leaving gracefully - */ - @Override - public void memberLeft(BridgeMembershipEvent event) { - /* process events for clients only */ - if (event.isClient()) { - createAndSendMessage(event, ClientMembershipMessage.LEFT); - } - } - - /** - * Invoked when a client has unexpectedly disconnected from this process - * or when this process has unexpectedly disconnected from a BridgeServer. - * - * @param event - * BridgeMembershipEvent associated with client getting - * disconnected unexpectedly - */ - @Override - public void memberCrashed(BridgeMembershipEvent event) { - /* process events for clients only */ - if (event.isClient()) { - createAndSendMessage(event, ClientMembershipMessage.CRASHED); - } - } - - /** - * Method to create & send the ClientMembershipMessage to admin members. - * The message is sent only if there are any admin members in the - * distribution system. - * - * @param event - * BridgeMembershipEvent associated for a change in client - * membership - * @param type - * type of event - one of ClientMembershipMessage.JOINED, - * ClientMembershipMessage.LEFT, ClientMembershipMessage.CRASHED - */ - private void createAndSendMessage(BridgeMembershipEvent event, int type) { - InternalDistributedSystem ds = null; - Cache cacheInstance = AbstractBridgeServer.this.cache; - if (cacheInstance != null && !(cacheInstance instanceof CacheCreation)) { - ds = (InternalDistributedSystem)cacheInstance.getDistributedSystem(); - } else { - ds = InternalDistributedSystem.getAnyInstance(); - } - - //ds could be null - if (ds != null && ds.isConnected()) { - DM dm = ds.getDistributionManager(); - Set adminMemberSet = dm.getAdminMemberSet(); - - /* check if there are any admin members at all */ - if (!adminMemberSet.isEmpty()) { - DistributedMember member = event.getMember(); - - ClientMembershipMessage msg = - new ClientMembershipMessage(event.getMemberId(), - member == null ? null : member.getHost(), - type); - - msg.setRecipients(adminMemberSet); - dm.putOutgoing(msg); - } - } - } - }; - - BridgeMembership.registerBridgeMembershipListener(listener); - } - - ///////////////////// Instance Methods ///////////////////// - - public int getPort() { - return this.port; - } - - public void setPort(int port) { - this.port = port; - } - - public String getBindAddress() { - return this.bindAddress; - } - - public void setBindAddress(String address) { - this.bindAddress = address; - } - - public String getHostnameForClients() { - return this.hostnameForClients; - } - - public void setHostnameForClients(String name) { - this.hostnameForClients = name; - } - - public int getMaxConnections() { - return this.maxConnections; - } - - public void setMaxConnections(int maxCon) { - this.maxConnections = maxCon; - } - - public int getMaxThreads() { - return this.maxThreads; - } - - public void setMaxThreads(int maxThreads) { - this.maxThreads = maxThreads; - } - - public void start() throws IOException { - // This method is invoked during testing, but it is not necessary - // to do anything. - } - - public void setNotifyBySubscription(boolean b) { - //this.notifyBySubscription = true; - } - - public boolean getNotifyBySubscription() { - return this.notifyBySubscription; - } - - public void setSocketBufferSize(int socketBufferSize) { - this.socketBufferSize = socketBufferSize; - } - - public int getSocketBufferSize() { - return this.socketBufferSize; - } - - public void setMaximumTimeBetweenPings(int maximumTimeBetweenPings) { - this.maximumTimeBetweenPings = maximumTimeBetweenPings; - } - - public int getMaximumTimeBetweenPings() { - return this.maximumTimeBetweenPings; - } - - public int getMaximumMessageCount() { - return this.maximumMessageCount; - } - - public void setMaximumMessageCount(int maximumMessageCount) { - this.maximumMessageCount = maximumMessageCount; - } - - public void setTransactionTimeToLive(int seconds) { - this.transactionTimeToLive = seconds; - } - - public int getTransactionTimeToLive() { - return this.transactionTimeToLive; - } - - public int getMessageTimeToLive() { - return this.messageTimeToLive; - } - - public void setMessageTimeToLive(int messageTimeToLive) { - this.messageTimeToLive = messageTimeToLive; - } - - public void setGroups(String[] groups) { - if (groups == null) { - this.groups = CacheServer.DEFAULT_GROUPS; - } - else if (groups.length > 0) { - // copy it for isolation - String [] copy = new String[groups.length]; - System.arraycopy(groups, 0, copy, 0, groups.length); - this.groups = copy; - } else { - this.groups = CacheServer.DEFAULT_GROUPS; // keep findbugs happy - } - } - - public String[] getGroups() { - String[] result = this.groups; - if (result.length > 0) { - // copy it for isolation - String [] copy = new String[result.length]; - System.arraycopy(result, 0, copy, 0, result.length); - result = copy; - } - return result; - } - - public ServerLoadProbe getLoadProbe() { - return loadProbe; - } - - public void setLoadProbe(ServerLoadProbe loadProbe) { - this.loadProbe = loadProbe; - } - - public long getLoadPollInterval() { - return loadPollInterval; - } - - public void setLoadPollInterval(long loadPollInterval) { - this.loadPollInterval = loadPollInterval; - } - - public void setTcpNoDelay(boolean setting) { - this.tcpNoDelay = setting; - } - - public boolean getTcpNoDelay() { - return this.tcpNoDelay; - } - - public Cache getCache() { - return this.cache; - } - - private static boolean eq(String s1, String s2) { - if (s1 == null) { - return s2 == null; - } else { - return s1.equals(s2); - } - } - - /** - * Returns whether or not this bridge server has the same - * configuration as another bridge server. - */ - public boolean sameAs(CacheServer other) { - return getPort() == other.getPort() - && eq(getBindAddress(), other.getBindAddress()) - && getSocketBufferSize() == other.getSocketBufferSize() - && getMaximumTimeBetweenPings() == other.getMaximumTimeBetweenPings() - && getNotifyBySubscription() == other.getNotifyBySubscription() - && getMaxConnections() == other.getMaxConnections() - && getMaxThreads() == other.getMaxThreads() - && getMaximumMessageCount() == other.getMaximumMessageCount() - && getMessageTimeToLive() == other.getMessageTimeToLive() - && Arrays.equals(getGroups(), other.getGroups()) - && getLoadProbe().equals(other.getLoadProbe()) - && getLoadPollInterval() == other.getLoadPollInterval() - && getTcpNoDelay() == other.getTcpNoDelay(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractCacheServer.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractCacheServer.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractCacheServer.java new file mode 100644 index 0000000..42b6bcd --- /dev/null +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractCacheServer.java @@ -0,0 +1,398 @@ +/*========================================================================= + * 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; + +import com.gemstone.gemfire.CancelException; +import com.gemstone.gemfire.cache.Cache; +import com.gemstone.gemfire.cache.server.CacheServer; +import com.gemstone.gemfire.cache.server.ClientSubscriptionConfig; +import com.gemstone.gemfire.cache.server.ServerLoadProbe; +import com.gemstone.gemfire.distributed.DistributedMember; +import com.gemstone.gemfire.distributed.internal.DM; +import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem; +import com.gemstone.gemfire.internal.admin.ClientMembershipMessage; +import com.gemstone.gemfire.internal.cache.xmlcache.CacheCreation; +import com.gemstone.gemfire.management.membership.ClientMembership; +import com.gemstone.gemfire.management.membership.ClientMembershipEvent; +import com.gemstone.gemfire.management.membership.ClientMembershipListener; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Set; + +/** + * Abstract class that contains common code that all true implementations + * of {@link CacheServer} can use. + * + * @author darrel + * @since 5.7 + */ +public abstract class AbstractCacheServer implements CacheServer { + + public static final String TEST_OVERRIDE_DEFAULT_PORT_PROPERTY = "gemfire.test.CacheServer.OVERRIDE_DEFAULT_PORT"; + + /** The cache that is served by this bridge server */ + protected final InternalCache cache; + + /** The port that the bridge server was configured to run on */ + protected int port; + + /** The maximum number of connections that the BridgeServer will accept */ + protected int maxConnections; + + /** The maximum number of threads that the BridgeServer will create */ + protected int maxThreads; + + /** Whether the bridge server notifies by subscription */ + protected boolean notifyBySubscription = true; + + /** + * The buffer size in bytes of the socket for this + * BridgeServer + */ + protected int socketBufferSize; + + /** + * The tcpNoDelay setting for outgoing sockets + */ + protected boolean tcpNoDelay; + + /** + * The maximum amount of time between client pings. This value is used by + * the ClientHealthMonitor to determine the health of this + * BridgeServer's clients. + */ + protected int maximumTimeBetweenPings; + + /** the maximum number of messages that can be enqueued in a client-queue. */ + protected int maximumMessageCount; + + /** + * the time (in seconds) after which a message in the client queue will + * expire. + */ + protected int messageTimeToLive; + /** + * The groups this server belongs to. Use getGroups to read. + * @since 5.7 + */ + protected String[] groups; + + protected ServerLoadProbe loadProbe; + + /** + * The ip address or host name that this server is to listen on. + * @since 5.7 + */ + protected String bindAddress; + /** + * The ip address or host name that will be given to clients so they can connect + * to this server + * @since 5.7 + */ + protected String hostnameForClients; + + /** + * How frequency to poll the load on this server. + */ + protected long loadPollInterval; + + protected ClientSubscriptionConfig clientSubscriptionConfig; + + /** + * Listens to client membership events and notifies any admin + * members as clients of this server leave/crash. + */ + protected final ClientMembershipListener listener; + + /** + * The number of seconds to keep transaction states for disconnected clients. + * This allows the client to fail over to another server and still find + * the transaction state to complete the transaction. + */ + private int transactionTimeToLive; + + ////////////////////// Constructors ////////////////////// + + /** + * Creates a new BridgeServer with the default + * configuration. + * + * @param cache + * The cache being served + */ + public AbstractCacheServer(InternalCache cache) { + this(cache, true); + } + + public AbstractCacheServer(InternalCache cache, boolean attachListener) { + this.cache = cache; + this.port = Integer.getInteger(TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, CacheServer.DEFAULT_PORT); + this.maxConnections = CacheServer.DEFAULT_MAX_CONNECTIONS; + this.maxThreads = CacheServer.DEFAULT_MAX_THREADS; + this.socketBufferSize = CacheServer.DEFAULT_SOCKET_BUFFER_SIZE; + this.tcpNoDelay = CacheServer.DEFAULT_TCP_NO_DELAY; + this.maximumTimeBetweenPings = CacheServer.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS; + this.maximumMessageCount = CacheServer.DEFAULT_MAXIMUM_MESSAGE_COUNT; + this.messageTimeToLive = CacheServer.DEFAULT_MESSAGE_TIME_TO_LIVE; + // TODO this should be configurable in CacheServer + this.transactionTimeToLive = Integer.getInteger("gemfire.cacheServer.transactionTimeToLive", 180); + this.groups = CacheServer.DEFAULT_GROUPS; + this.bindAddress = CacheServer.DEFAULT_BIND_ADDRESS; + this.hostnameForClients = CacheServer.DEFAULT_HOSTNAME_FOR_CLIENTS; + this.loadProbe = CacheServer.DEFAULT_LOAD_PROBE; + this.loadPollInterval = CacheServer.DEFAULT_LOAD_POLL_INTERVAL; + this.clientSubscriptionConfig = new ClientSubscriptionConfigImpl(); + + if (!attachListener) { + this.listener = null; + return; + } + listener = new ClientMembershipListener() { + + @Override + public void memberJoined(ClientMembershipEvent event) { + if (event.isClient()) { + createAndSendMessage(event, ClientMembershipMessage.JOINED); + } + } + + @Override + public void memberLeft(ClientMembershipEvent event) { + if (event.isClient()) { + createAndSendMessage(event, ClientMembershipMessage.LEFT); + } + } + + @Override + public void memberCrashed(ClientMembershipEvent event) { + if (event.isClient()) { + createAndSendMessage(event, ClientMembershipMessage.CRASHED); + } + } + + /** + * Method to create & send the ClientMembershipMessage to admin members. + * The message is sent only if there are any admin members in the + * distribution system. + * + * @param event + * describes a change in client membership + * @param type + * type of event - one of ClientMembershipMessage.JOINED, + * ClientMembershipMessage.LEFT, ClientMembershipMessage.CRASHED + */ + private void createAndSendMessage(ClientMembershipEvent event, int type) { + InternalDistributedSystem ds = null; + Cache cacheInstance = AbstractCacheServer.this.cache; + if (cacheInstance != null && !(cacheInstance instanceof CacheCreation)) { + ds = (InternalDistributedSystem)cacheInstance.getDistributedSystem(); + } else { + ds = InternalDistributedSystem.getAnyInstance(); + } + + //ds could be null + if (ds != null && ds.isConnected()) { + DM dm = ds.getDistributionManager(); + Set adminMemberSet = dm.getAdminMemberSet(); + + /* check if there are any admin members at all */ + if (!adminMemberSet.isEmpty()) { + DistributedMember member = event.getMember(); + + ClientMembershipMessage msg = + new ClientMembershipMessage(event.getMemberId(), + member == null ? null : member.getHost(), + type); + + msg.setRecipients(adminMemberSet); + dm.putOutgoing(msg); + } + } + } + }; + + ClientMembership.registerClientMembershipListener(listener); + } + + ///////////////////// Instance Methods ///////////////////// + + public int getPort() { + return this.port; + } + + public void setPort(int port) { + this.port = port; + } + + public String getBindAddress() { + return this.bindAddress; + } + + public void setBindAddress(String address) { + this.bindAddress = address; + } + + public String getHostnameForClients() { + return this.hostnameForClients; + } + + public void setHostnameForClients(String name) { + this.hostnameForClients = name; + } + + public int getMaxConnections() { + return this.maxConnections; + } + + public void setMaxConnections(int maxCon) { + this.maxConnections = maxCon; + } + + public int getMaxThreads() { + return this.maxThreads; + } + + public void setMaxThreads(int maxThreads) { + this.maxThreads = maxThreads; + } + + public void start() throws IOException { + // This method is invoked during testing, but it is not necessary + // to do anything. + } + + public void setNotifyBySubscription(boolean b) { + //this.notifyBySubscription = true; + } + + public boolean getNotifyBySubscription() { + return this.notifyBySubscription; + } + + public void setSocketBufferSize(int socketBufferSize) { + this.socketBufferSize = socketBufferSize; + } + + public int getSocketBufferSize() { + return this.socketBufferSize; + } + + public void setMaximumTimeBetweenPings(int maximumTimeBetweenPings) { + this.maximumTimeBetweenPings = maximumTimeBetweenPings; + } + + public int getMaximumTimeBetweenPings() { + return this.maximumTimeBetweenPings; + } + + public int getMaximumMessageCount() { + return this.maximumMessageCount; + } + + public void setMaximumMessageCount(int maximumMessageCount) { + this.maximumMessageCount = maximumMessageCount; + } + + public void setTransactionTimeToLive(int seconds) { + this.transactionTimeToLive = seconds; + } + + public int getTransactionTimeToLive() { + return this.transactionTimeToLive; + } + + public int getMessageTimeToLive() { + return this.messageTimeToLive; + } + + public void setMessageTimeToLive(int messageTimeToLive) { + this.messageTimeToLive = messageTimeToLive; + } + + public void setGroups(String[] groups) { + if (groups == null) { + this.groups = CacheServer.DEFAULT_GROUPS; + } + else if (groups.length > 0) { + // copy it for isolation + String [] copy = new String[groups.length]; + System.arraycopy(groups, 0, copy, 0, groups.length); + this.groups = copy; + } else { + this.groups = CacheServer.DEFAULT_GROUPS; // keep findbugs happy + } + } + + public String[] getGroups() { + String[] result = this.groups; + if (result.length > 0) { + // copy it for isolation + String [] copy = new String[result.length]; + System.arraycopy(result, 0, copy, 0, result.length); + result = copy; + } + return result; + } + + public ServerLoadProbe getLoadProbe() { + return loadProbe; + } + + public void setLoadProbe(ServerLoadProbe loadProbe) { + this.loadProbe = loadProbe; + } + + public long getLoadPollInterval() { + return loadPollInterval; + } + + public void setLoadPollInterval(long loadPollInterval) { + this.loadPollInterval = loadPollInterval; + } + + public void setTcpNoDelay(boolean setting) { + this.tcpNoDelay = setting; + } + + public boolean getTcpNoDelay() { + return this.tcpNoDelay; + } + + public Cache getCache() { + return this.cache; + } + + private static boolean eq(String s1, String s2) { + if (s1 == null) { + return s2 == null; + } else { + return s1.equals(s2); + } + } + + /** + * Returns whether or not this bridge server has the same + * configuration as another bridge server. + */ + public boolean sameAs(CacheServer other) { + return getPort() == other.getPort() + && eq(getBindAddress(), other.getBindAddress()) + && getSocketBufferSize() == other.getSocketBufferSize() + && getMaximumTimeBetweenPings() == other.getMaximumTimeBetweenPings() + && getNotifyBySubscription() == other.getNotifyBySubscription() + && getMaxConnections() == other.getMaxConnections() + && getMaxThreads() == other.getMaxThreads() + && getMaximumMessageCount() == other.getMaximumMessageCount() + && getMessageTimeToLive() == other.getMessageTimeToLive() + && Arrays.equals(getGroups(), other.getGroups()) + && getLoadProbe().equals(other.getLoadProbe()) + && getLoadPollInterval() == other.getLoadPollInterval() + && getTcpNoDelay() == other.getTcpNoDelay(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegion.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegion.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegion.java index 90dcb41..344155b 100644 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegion.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/AbstractRegion.java @@ -74,9 +74,6 @@ import com.gemstone.gemfire.cache.query.SelectResults; import com.gemstone.gemfire.cache.query.TypeMismatchException; import com.gemstone.gemfire.cache.query.internal.index.IndexManager; import com.gemstone.gemfire.cache.snapshot.RegionSnapshotService; -import com.gemstone.gemfire.cache.util.BridgeClient; -import com.gemstone.gemfire.cache.util.BridgeLoader; -import com.gemstone.gemfire.cache.util.BridgeWriter; import com.gemstone.gemfire.cache.wan.GatewaySender; import com.gemstone.gemfire.compression.Compressor; import com.gemstone.gemfire.distributed.DistributedMember; @@ -486,9 +483,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, */ public CacheLoader basicGetLoader() { CacheLoader result = this.cacheLoader; - if (isBridgeLoader(result)) { - result = null; - } return result; } /** @@ -498,9 +492,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, */ public CacheWriter basicGetWriter() { CacheWriter result = this.cacheWriter; - if (isBridgeWriter(result)) { - result = null; - } return result; } @@ -1200,11 +1191,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, // synchronized so not reentrant public synchronized CacheLoader setCacheLoader(CacheLoader cl) { checkReadiness(); - if (cl != null && isBridgeLoader(cl)) { - if (getPoolName() != null) { - throw new IllegalStateException("A region with a connection pool can not have a BridgeLoader."); - } - } CacheLoader oldLoader = this.cacheLoader; assignCacheLoader(cl); cacheLoaderChanged(oldLoader); @@ -1213,24 +1199,12 @@ public abstract class AbstractRegion implements Region, RegionAttributes, private synchronized void assignCacheLoader(CacheLoader cl) { this.cacheLoader = cl; - if (cl instanceof BridgeLoader) { - BridgeLoader bl = (BridgeLoader) cl; - bl.attach(this); - } else if (cl instanceof BridgeClient) { - BridgeClient bc = (BridgeClient)cl; - bc.attach(this); - } } // synchronized so not reentrant public synchronized CacheWriter setCacheWriter(CacheWriter cacheWriter) { checkReadiness(); - if (cacheWriter != null && isBridgeWriter(cacheWriter)) { - if (getPoolName() != null) { - throw new IllegalStateException("A region with a connection pool can not have a BridgeWriter."); - } - } CacheWriter oldWriter = this.cacheWriter; assignCacheWriter(cacheWriter); cacheWriterChanged(oldWriter); @@ -1240,10 +1214,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, private synchronized void assignCacheWriter(CacheWriter cacheWriter) { this.cacheWriter = cacheWriter; - if (cacheWriter instanceof BridgeWriter) { - BridgeWriter bw = (BridgeWriter)cacheWriter; - bw.attach(this); - } } void checkEntryTimeoutAction(String mode, ExpirationAction ea) { @@ -1572,15 +1542,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, protected void closeCacheCallback(CacheCallback cb) { if (cb != null) { - if (cb instanceof BridgeWriter) { - BridgeWriter bw = (BridgeWriter)cb; - bw.detach(this); - } - else if (cb instanceof BridgeLoader) { - BridgeLoader bl = (BridgeLoader)cb; - bl.detach(this); - } - try { cb.close(); } @@ -1610,19 +1571,6 @@ public abstract class AbstractRegion implements Region, RegionAttributes, // nothing needed by default } - /** - * @since 5.7 - */ - public static boolean isBridgeLoader(CacheLoader cl) { - return cl instanceof BridgeLoader || cl instanceof BridgeClient; - } - /** - * @since 5.7 - */ - public static boolean isBridgeWriter(CacheWriter cw) { - return cw instanceof BridgeWriter; - } - protected void cacheWriterChanged(CacheWriter oldWriter) { if (this.cacheWriter != oldWriter) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserver.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserver.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserver.java deleted file mode 100755 index d8b41a2..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserver.java +++ /dev/null @@ -1,89 +0,0 @@ -/*========================================================================= - * Copyright (c) 2010-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 - * one or more patents listed at http://www.pivotal.io/patents. - *========================================================================= - */ -package com.gemstone.gemfire.internal.cache; - -import com.gemstone.gemfire.distributed.internal.ServerLocation; -import com.gemstone.gemfire.internal.cache.tier.sockets.Message; - -/** - * This interface is used by testing/debugging code to be notified of different - * events. See the documentation for class BridgeObserverHolder for details. - * - * @author Yogesh Mahajan - * @since 5.1 - * - */ -public interface BridgeObserver -{ - /** - * This callback is called when now primary Ep is identified. - */ - public void afterPrimaryIdentificationFromBackup(ServerLocation location); - - /** - * This callback is called just before interest registartion - */ - public void beforeInterestRegistration(); - - /** - * This callback is called just after interest registartion - */ - public void afterInterestRegistration(); - - /** - * This callback is called just before primary identification - */ - public void beforePrimaryIdentificationFromBackup(); - - /** - * This callback is called just before Interest Recovery by DSM thread happens - */ - public void beforeInterestRecovery(); - - /** - * Invoked by CacheClientUpdater just before invoking endpointDied for - * fail over - * @param location ServerLocation which has failed - */ - public void beforeFailoverByCacheClientUpdater(ServerLocation location); - /** - * Invoked before sending an instantiator message to server - * - * @param eventId - */ - public void beforeSendingToServer(EventID eventId); - /** - * Invoked after sending an instantiator message to server - * - * @param eventId - */ - public void afterReceivingFromServer(EventID eventId); - - /** - * This callback is called just before sending client ack to the primary servrer. - */ - public void beforeSendingClientAck(); - - /** - * Invoked after Message is created - * - * @param msg - */ - public void afterMessageCreation(Message msg); - - /** - * Invoked after Queue Destroy Message has been sent - */ - public void afterQueueDestroyMessage(); - - /** - * Invoked after a primary is recovered from a backup or new connection. - */ - public void afterPrimaryRecovered(ServerLocation location); - -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverAdapter.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverAdapter.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverAdapter.java deleted file mode 100755 index 0dce187..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverAdapter.java +++ /dev/null @@ -1,107 +0,0 @@ -/*========================================================================= - * Copyright (c) 2010-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 - * one or more patents listed at http://www.pivotal.io/patents. - *========================================================================= - */ -package com.gemstone.gemfire.internal.cache; - -import com.gemstone.gemfire.distributed.internal.ServerLocation; -import com.gemstone.gemfire.internal.cache.tier.sockets.Message; - -/** - * This class provides 'do-nothing' implementations of all of the methods of - * interface BridgeObserver. See the documentation for class - * BridgeObserverHolder for details. - * - * @author Yogesh Mahajan - * @since 5.1 - */ -public class BridgeObserverAdapter implements BridgeObserver -{ - /** - * This callback is called when now primary Ep is identified. - */ - public void afterPrimaryIdentificationFromBackup(ServerLocation primaryEndpoint) - { - } - - /** - * This callback is called just before interest registartion - */ - public void beforeInterestRegistration() - { - } - - /** - * This callback is called just after interest registartion - */ - public void afterInterestRegistration() - { - } - - /** - * This callback is called just before primary identification - */ - public void beforePrimaryIdentificationFromBackup() - { - } - - /** - * This callback is called just before Interest Recovery by DSM thread happens - */ - public void beforeInterestRecovery() - { - - } - - public void beforeFailoverByCacheClientUpdater(ServerLocation epFailed) - { - } - /** - * Invoked before sending an instantiator message to server - * - * @param eventId - */ - public void beforeSendingToServer(EventID eventId){ - - } - /** - * Invoked after sending an instantiator message to server - * - * @param eventId - */ - public void afterReceivingFromServer(EventID eventId){ - - } - - /** - * This callback is called just before sending client ack to the primary servrer. - */ - public void beforeSendingClientAck(){ - - } - - /** - * Invoked after Message is created - * - * @param msg - */ - public void afterMessageCreation(Message msg){ - - } - - /** - * Invoked after Queue Destroy Message has been sent - */ - public void afterQueueDestroyMessage(){ - - } - - /** - * Invoked after a primary is recovered from a backup or new connection. - */ - public void afterPrimaryRecovered(ServerLocation location) { - } -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverHolder.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverHolder.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverHolder.java deleted file mode 100755 index d68a608..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeObserverHolder.java +++ /dev/null @@ -1,53 +0,0 @@ -/*========================================================================= - * Copyright (c) 2010-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 - * one or more patents listed at http://www.pivotal.io/patents. - *========================================================================= - */ -package com.gemstone.gemfire.internal.cache; - -import com.gemstone.gemfire.cache.query.internal.Support; - -/** - * This class is intended to hold a single 'observer' which will receive - * callbacks. There can be only one such observer at a time. If no observer is - * needed, this member variable should point to an object with 'do-nothing' - * methods, such as BridgeObserverAdapter. - * - * @author Yogesh Mahajan - * @since 5.1 - */ -public class BridgeObserverHolder - { - - /** - * The default 'do-nothing' bridge observer * - */ - private static final BridgeObserver NO_OBSERVER = new BridgeObserverAdapter(); - - /** - * The current observer which will be notified of all query events. - */ - private static BridgeObserver _instance = NO_OBSERVER; - - /** - * Set the given observer to be notified of events. Returns the current - * observer. - */ - public static final BridgeObserver setInstance(BridgeObserver observer) - { - Support.assertArg(observer != null, - "setInstance expects a non-null argument!"); - BridgeObserver oldObserver = _instance; - _instance = observer; - return oldObserver; - } - - /** Return the current BridgeObserver instance */ - public static final BridgeObserver 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/BridgeRegionEventImpl.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeRegionEventImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeRegionEventImpl.java deleted file mode 100755 index 7bcaf64..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeRegionEventImpl.java +++ /dev/null @@ -1,108 +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; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; -import com.gemstone.gemfire.DataSerializer; -import com.gemstone.gemfire.cache.Operation; -import com.gemstone.gemfire.distributed.DistributedMember; -import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID; - -//import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID; - -/** - * Class BridgeRegionEventImpl is an implementation of a bridge - * region event, which is just an RegionEvent with the client's - * host and port for notification purposes. - * - * @author Girish Thombare - * - * @since 5.1 - */ -public final class BridgeRegionEventImpl extends RegionEventImpl - { - - /** - * The originating membershipId of this event. - */ - private ClientProxyMembershipID context; - - public BridgeRegionEventImpl() { - } - - /** - * To be called from the Distributed Message without setting EventID - * @param region - * @param op - * @param callbackArgument - * @param originRemote - * @param distributedMember - */ - public BridgeRegionEventImpl(LocalRegion region, Operation op, Object callbackArgument,boolean originRemote, DistributedMember distributedMember,ClientProxyMembershipID contx) { - super(region, op,callbackArgument, originRemote,distributedMember); - setContext(contx); - } - - public BridgeRegionEventImpl(LocalRegion region, Operation op, Object callbackArgument,boolean originRemote, DistributedMember distributedMember,ClientProxyMembershipID contx,EventID eventId) { - super(region, op,callbackArgument, originRemote,distributedMember, eventId); - setContext(contx); - } - - - /** - * sets The membershipId originating this event - * - */ - protected void setContext(ClientProxyMembershipID contx) - { - this.context = contx; - } - - /** - * Returns The context originating this event - * - * @return The context originating this event - */ - @Override - public ClientProxyMembershipID getContext() - { - return this.context; - } - - @Override - public String toString() - { - String superStr = super.toString(); - StringBuffer buffer = new StringBuffer(); - String str = superStr.substring(0, superStr.length() - 1); - buffer.append(str).append(";context=").append(getContext()).append(']'); - return buffer.toString(); - } - - @Override - public int getDSFID() { - return BRIDGE_REGION_EVENT; - } - - @Override - public void toData(DataOutput out) throws IOException - { - super.toData(out); - DataSerializer.writeObject(getContext(), out); - } - - @Override - public void fromData(DataInput in) throws IOException, ClassNotFoundException - { - super.fromData(in); - setContext(ClientProxyMembershipID.readCanonicalized(in)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerAdvisor.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerAdvisor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerAdvisor.java deleted file mode 100644 index 733b762..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerAdvisor.java +++ /dev/null @@ -1,165 +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; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -import com.gemstone.gemfire.DataSerializer; -import com.gemstone.gemfire.cache.server.ServerLoad; -import com.gemstone.gemfire.distributed.internal.DistributionAdvisee; -import com.gemstone.gemfire.distributed.internal.DistributionManager; -import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember; -import com.gemstone.gemfire.internal.InternalDataSerializer; - - -/** - * Used to give advise to a bridge server. - * Bridge server currently need to know about controller's - * @author darrel - * - */ -public class BridgeServerAdvisor extends GridAdvisor { - - /** Creates a new instance of BridgeServerAdvisor */ - private BridgeServerAdvisor(DistributionAdvisee server) { - super(server); - } - - public static BridgeServerAdvisor createBridgeServerAdvisor(DistributionAdvisee server) { - BridgeServerAdvisor advisor = new BridgeServerAdvisor(server); - advisor.initialize(); - return advisor; - } - - @Override - public String toString() { - return "BridgeServerAdvisor for " + getAdvisee().getFullPath(); - } - - /** Instantiate new distribution profile for this member */ - @Override - protected Profile instantiateProfile( - InternalDistributedMember memberId, int version) { - return new BridgeServerProfile(memberId, version); - } - - /** - * Describes a bridge server for distribution purposes. - */ - public static class BridgeServerProfile extends GridAdvisor.GridProfile { - private String[] groups; - private int maxConnections; - private ServerLoad initialLoad; - private long loadPollInterval; - - /** for internal use, required for DataSerializer.readObject */ - public BridgeServerProfile() { - } - - public BridgeServerProfile(InternalDistributedMember memberId, int version) { - super(memberId, version); - } - - public BridgeServerProfile(BridgeServerProfile toCopy) { - super(toCopy); - this.groups = toCopy.groups; - } - - /** don't modify the returned array! */ - public String[] getGroups() { - return this.groups; - } - public void setGroups(String[] groups) { - this.groups = groups; - } - - public ServerLoad getInitialLoad() { - return initialLoad; - } - - public int getMaxConnections() { - return maxConnections; - } - - public void setMaxConnections(int maxConnections) { - this.maxConnections = maxConnections; - } - - public void setInitialLoad(ServerLoad initialLoad) { - this.initialLoad = initialLoad; - } - public long getLoadPollInterval() { - return this.loadPollInterval; - } - public void setLoadPollInterval(long v) { - this.loadPollInterval = v; - } - - /** - * Used to process an incoming bridge server profile. Any controller in this - * vm needs to be told about this incoming new bridge server. The reply - * needs to contain any controller(s) that exist in this vm. - * - * @since 5.7 - */ - @Override - public void processIncoming(DistributionManager dm, String adviseePath, - boolean removeProfile, boolean exchangeProfiles, - final List replyProfiles) { - // tell local controllers about this bridge server - tellLocalControllers(removeProfile, exchangeProfiles, replyProfiles); - // for QRM messaging we need bridge servers to know about each other - tellLocalBridgeServers(removeProfile, exchangeProfiles, replyProfiles); - } - - @Override - public int getDSFID() { - return BRIDGE_SERVER_PROFILE; - } - - @Override - public void toData(DataOutput out) throws IOException { - super.toData(out); - DataSerializer.writeStringArray(this.groups, out); - out.writeInt(maxConnections); - InternalDataSerializer.invokeToData(initialLoad, out); - out.writeLong(getLoadPollInterval()); - } - - @Override - public void fromData(DataInput in) throws IOException, ClassNotFoundException { - super.fromData(in); - this.groups = DataSerializer.readStringArray(in); - this.maxConnections = in.readInt(); - this.initialLoad = new ServerLoad(); - InternalDataSerializer.invokeFromData(initialLoad, in); - setLoadPollInterval(in.readLong()); - } - - @Override - public StringBuilder getToStringHeader() { - return new StringBuilder("BridgeServerProfile"); - } - - @Override - public void fillInToString(StringBuilder sb) { - super.fillInToString(sb); - if (this.groups != null) { - sb.append("; groups=" + Arrays.asList(this.groups)); - sb.append("; maxConnections=" + maxConnections); - sb.append("; initialLoad=" + initialLoad); - sb.append("; loadPollInterval=" + getLoadPollInterval()); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerImpl.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerImpl.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerImpl.java deleted file mode 100644 index f7fa15f..0000000 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BridgeServerImpl.java +++ /dev/null @@ -1,816 +0,0 @@ -/*========================================================================= - * Copyright (c) 2010-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 - * one or more patents listed at http://www.pivotal.io/patents. - *========================================================================= - */ -package com.gemstone.gemfire.internal.cache; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.logging.log4j.Logger; - -import com.gemstone.gemfire.CancelCriterion; -import com.gemstone.gemfire.GemFireIOException; -import com.gemstone.gemfire.InternalGemFireError; -import com.gemstone.gemfire.InvalidValueException; -import com.gemstone.gemfire.cache.AttributesFactory; -import com.gemstone.gemfire.cache.ClientSession; -import com.gemstone.gemfire.cache.DataPolicy; -import com.gemstone.gemfire.cache.DiskStore; -import com.gemstone.gemfire.cache.DiskStoreFactory; -import com.gemstone.gemfire.cache.DynamicRegionFactory; -import com.gemstone.gemfire.cache.EvictionAction; -import com.gemstone.gemfire.cache.ExpirationAction; -import com.gemstone.gemfire.cache.ExpirationAttributes; -import com.gemstone.gemfire.cache.InterestRegistrationListener; -import com.gemstone.gemfire.cache.RegionAttributes; -import com.gemstone.gemfire.cache.RegionExistsException; -import com.gemstone.gemfire.cache.Scope; -import com.gemstone.gemfire.cache.server.CacheServer; -import com.gemstone.gemfire.cache.server.ClientSubscriptionConfig; -import com.gemstone.gemfire.cache.server.ServerLoadProbe; -import com.gemstone.gemfire.cache.server.internal.LoadMonitor; -import com.gemstone.gemfire.cache.util.BridgeMembership; -import com.gemstone.gemfire.cache.util.BridgeMembershipListener; -import com.gemstone.gemfire.cache.wan.GatewayTransportFilter; -import com.gemstone.gemfire.distributed.DistributedMember; -import com.gemstone.gemfire.distributed.internal.DM; -import com.gemstone.gemfire.distributed.internal.DistributionAdvisee; -import com.gemstone.gemfire.distributed.internal.DistributionAdvisor; -import com.gemstone.gemfire.distributed.internal.DistributionAdvisor.Profile; -import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem; -import com.gemstone.gemfire.distributed.internal.ResourceEvent; -import com.gemstone.gemfire.distributed.internal.ServerLocation; -import com.gemstone.gemfire.distributed.internal.membership.MemberAttributes; -import com.gemstone.gemfire.internal.Assert; -import com.gemstone.gemfire.internal.OSProcess; -import com.gemstone.gemfire.internal.admin.ClientHealthMonitoringRegion; -import com.gemstone.gemfire.internal.cache.BridgeServerAdvisor.BridgeServerProfile; -import com.gemstone.gemfire.internal.cache.ha.HARegionQueue; -import com.gemstone.gemfire.internal.cache.tier.Acceptor; -import com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl; -import com.gemstone.gemfire.internal.cache.tier.sockets.CacheClientNotifier; -import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID; -import com.gemstone.gemfire.internal.i18n.LocalizedStrings; -import com.gemstone.gemfire.internal.logging.LogService; -import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage; - -/** - * An implementation of the CacheServer interface that delegates - * most of the heavy lifting to an {@link Acceptor}. - * - * @author David Whitlock - * @since 4.0 - */ -@SuppressWarnings("deprecation") -public class BridgeServerImpl - extends AbstractBridgeServer - implements DistributionAdvisee { - - private static final Logger logger = LogService.getLogger(); - - private static final int FORCE_LOAD_UPDATE_FREQUENCY= Integer.getInteger("gemfire.BridgeServer.FORCE_LOAD_UPDATE_FREQUENCY", 10).intValue(); - - /** The acceptor that does the actual serving */ - private volatile AcceptorImpl acceptor; - - // moved to AbstractBridgeServer - - - - /** - * The advisor used by this bridge sever. - * @since 5.7 - */ - private volatile BridgeServerAdvisor advisor; - - /** - * The monitor used to monitor load on this - * bridge server and distribute load to the locators - * @since 5.7 - */ - private volatile LoadMonitor loadMonitor; - - /** - * boolean that represents whether this server is a GatewayReceiver or a simple BridgeServer - */ - private boolean isGatewayReceiver; - - private List gatewayTransportFilters = Collections.EMPTY_LIST; - - /** - * Needed because this guy is an advisee - * @since 5.7 - */ - private int serialNumber; // changed on each start - - public static final boolean ENABLE_NOTIFY_BY_SUBSCRIPTION_FALSE = - Boolean.getBoolean("gemfire.cache-server.enable-notify-by-subscription-false"); - - - // ////////////////////// Constructors ////////////////////// - - /** - * Creates a new BridgeServerImpl that serves the contents of - * the give Cache. It has the default configuration. - */ - public BridgeServerImpl(GemFireCacheImpl cache, boolean isGatewayReceiver) { - super(cache); - this.isGatewayReceiver = isGatewayReceiver; - } - - // //////////////////// Instance Methods /////////////////// - - public CancelCriterion getCancelCriterion() { - return cache.getCancelCriterion(); - } - - /** - * Checks to see whether or not this bridge server is running. If so, an - * {@link IllegalStateException} is thrown. - */ - private void checkRunning() { - if (this.isRunning()) { - throw new IllegalStateException(LocalizedStrings.BridgeServerImpl_A_BRIDGE_SERVERS_CONFIGURATION_CANNOT_BE_CHANGED_ONCE_IT_IS_RUNNING.toLocalizedString()); - } - } - - public boolean isGatewayReceiver() { - return this.isGatewayReceiver; - } - - @Override - public int getPort() { - if (this.acceptor != null) { - return this.acceptor.getPort(); - } - else { - return super.getPort(); - } - } - - @Override - public void setPort(int port) { - checkRunning(); - super.setPort(port); - } - - @Override - public void setBindAddress(String address) { - checkRunning(); - super.setBindAddress(address); - } - @Override - public void setHostnameForClients(String name) { - checkRunning(); - super.setHostnameForClients(name); - } - - @Override - public void setMaxConnections(int maxCon) { - checkRunning(); - super.setMaxConnections(maxCon); - } - - @Override - public void setMaxThreads(int maxThreads) { - checkRunning(); - super.setMaxThreads(maxThreads); - } - - @Override - public void setNotifyBySubscription(boolean b) { - checkRunning(); - if (BridgeServerImpl.ENABLE_NOTIFY_BY_SUBSCRIPTION_FALSE) { - this.notifyBySubscription = b; - } - } - - @Override - public void setMaximumMessageCount(int maximumMessageCount) { - checkRunning(); - super.setMaximumMessageCount(maximumMessageCount); - } - - @Override - public void setSocketBufferSize(int socketBufferSize) { - this.socketBufferSize = socketBufferSize; - } - - @Override - public int getSocketBufferSize() { - return this.socketBufferSize; - } - - @Override - public void setMaximumTimeBetweenPings(int maximumTimeBetweenPings) { - this.maximumTimeBetweenPings = maximumTimeBetweenPings; - } - - @Override - public int getMaximumTimeBetweenPings() { - return this.maximumTimeBetweenPings; - } - - - @Override - public void setLoadPollInterval(long loadPollInterval) { - checkRunning(); - super.setLoadPollInterval(loadPollInterval); - } - - @Override - public int getMaximumMessageCount() { - return this.maximumMessageCount; - } - - @Override - public void setLoadProbe(ServerLoadProbe loadProbe) { - checkRunning(); - super.setLoadProbe(loadProbe); - } - - public void setGatewayTransportFilter( - List transportFilters) { - this.gatewayTransportFilters = transportFilters; - } - - @Override - public int getMessageTimeToLive() { - return this.messageTimeToLive; - } - - - public ClientSubscriptionConfig getClientSubscriptionConfig(){ - return this.clientSubscriptionConfig; - } - - /** - * Sets the configuration of this CacheServer based on - * the configuration of another CacheServer. - */ - public void configureFrom(CacheServer other) { - setPort(other.getPort()); - setBindAddress(other.getBindAddress()); - setHostnameForClients(other.getHostnameForClients()); - setMaxConnections(other.getMaxConnections()); - setMaxThreads(other.getMaxThreads()); - setNotifyBySubscription(other.getNotifyBySubscription()); - setSocketBufferSize(other.getSocketBufferSize()); - setTcpNoDelay(other.getTcpNoDelay()); - setMaximumTimeBetweenPings(other.getMaximumTimeBetweenPings()); - setMaximumMessageCount(other.getMaximumMessageCount()); - setMessageTimeToLive(other.getMessageTimeToLive()); -// setTransactionTimeToLive(other.getTransactionTimeToLive()); not implemented in CacheServer for v6.6 - setGroups(other.getGroups()); - setLoadProbe(other.getLoadProbe()); - setLoadPollInterval(other.getLoadPollInterval()); - ClientSubscriptionConfig cscOther = other.getClientSubscriptionConfig(); - ClientSubscriptionConfig cscThis = this.getClientSubscriptionConfig(); - // added for configuration of ha overflow - cscThis.setEvictionPolicy(cscOther.getEvictionPolicy()); - cscThis.setCapacity(cscOther.getCapacity()); - String diskStoreName = cscOther.getDiskStoreName(); - if (diskStoreName != null) { - cscThis.setDiskStoreName(diskStoreName); - } else { - cscThis.setOverflowDirectory(cscOther.getOverflowDirectory()); - } - } - - @Override - public synchronized void start() throws IOException { - Assert.assertTrue(this.cache != null); - boolean isSqlFabricSystem = ((GemFireCacheImpl)this.cache).isSqlfSystem(); - - this.serialNumber = createSerialNumber(); - if (DynamicRegionFactory.get().isOpen()) { - // force notifyBySubscription to be true so that meta info is pushed - // from servers to clients instead of invalidates. - if (!this.notifyBySubscription) { - logger.info(LocalizedMessage.create(LocalizedStrings.BridgeServerImpl_FORCING_NOTIFYBYSUBSCRIPTION_TO_SUPPORT_DYNAMIC_REGIONS)); - this.notifyBySubscription = true; - } - } - this.advisor = BridgeServerAdvisor.createBridgeServerAdvisor(this); - this.loadMonitor = new LoadMonitor(loadProbe, maxConnections, - loadPollInterval, FORCE_LOAD_UPDATE_FREQUENCY, - advisor); - List overflowAttributesList = new LinkedList(); - ClientSubscriptionConfig csc = this.getClientSubscriptionConfig(); - overflowAttributesList.add(0, csc.getEvictionPolicy()); - overflowAttributesList.add(1, Integer.valueOf(csc.getCapacity())); - overflowAttributesList.add(2, Integer.valueOf(this.port)); - String diskStoreName = csc.getDiskStoreName(); - if (diskStoreName != null) { - overflowAttributesList.add(3, diskStoreName); - overflowAttributesList.add(4, true); // indicator to use diskstore - } else { - overflowAttributesList.add(3, csc.getOverflowDirectory()); - overflowAttributesList.add(4, false); - } - - this.acceptor = new AcceptorImpl(getPort(), - getBindAddress(), - getNotifyBySubscription(), - getSocketBufferSize(), - getMaximumTimeBetweenPings(), - this.cache, - getMaxConnections(), - getMaxThreads(), - getMaximumMessageCount(), - getMessageTimeToLive(), - getTransactionTimeToLive(), - this.loadMonitor, - overflowAttributesList, - isSqlFabricSystem, - this.isGatewayReceiver, - this.gatewayTransportFilters, this.tcpNoDelay); - - this.acceptor.start(); - this.advisor.handshake(); - this.loadMonitor.start(new ServerLocation(getExternalAddress(), - getPort()), acceptor.getStats()); - - // TODO : Need to provide facility to enable/disable client health monitoring. - //Creating ClientHealthMonitoring region. - // Force initialization on current cache - if(cache instanceof GemFireCacheImpl) { - ClientHealthMonitoringRegion.getInstance((GemFireCacheImpl)cache); - } - this.cache.getLoggerI18n().config(LocalizedStrings.BridgeServerImpl_CACHESERVER_CONFIGURATION___0, getConfig()); - - /* - * If the stopped bridge server is restarted, we'll need to re-register the - * client membership listener. If the listener is already registered it - * won't be registered as would the case when start() is invoked for the - * first time. - */ - BridgeMembershipListener[] membershipListeners = - BridgeMembership.getBridgeMembershipListeners(); - - boolean membershipListenerRegistered = false; - for (BridgeMembershipListener membershipListener : membershipListeners) { - //just checking by reference as the listener instance is final - if (listener == membershipListener) { - membershipListenerRegistered = true; - break; - } - } - - if (!membershipListenerRegistered) { - BridgeMembership.registerBridgeMembershipListener(listener); - } - - if (!isGatewayReceiver) { - InternalDistributedSystem system = ((GemFireCacheImpl) this.cache) - .getDistributedSystem(); - system.handleResourceEvent(ResourceEvent.CACHE_SERVER_START, this); - } - - } - - - /** - * Gets the address that this bridge server can be contacted on from external - * processes. - * @since 5.7 - */ - public String getExternalAddress() { - return getExternalAddress(true); - } - - public String getExternalAddress(boolean checkServerRunning) { - if (checkServerRunning) { - if (!this.isRunning()) { - String s = "A bridge server's bind address is only available if it has been started"; - this.cache.getCancelCriterion().checkCancelInProgress(null); - throw new IllegalStateException(s); - } - } - if (this.hostnameForClients == null || this.hostnameForClients.equals("")) { - if (this.acceptor != null) { - return this.acceptor.getExternalAddress(); - } - else { - return null; - } - } - else { - return this.hostnameForClients; - } - } - - public boolean isRunning() { - return this.acceptor != null && this.acceptor.isRunning(); - } - - public synchronized void stop() { - if (!isRunning()) { - return; - } - - RuntimeException firstException = null; - - try { - if(this.loadMonitor != null) { - this.loadMonitor.stop(); - } - } catch(RuntimeException e) { - cache.getLoggerI18n().warning(LocalizedStrings.BridgeServerImpl_CACHESERVER_ERROR_CLOSING_LOAD_MONITOR, e); - firstException = e; - } - - try { - if (this.advisor != null) { - this.advisor.close(); - } - } catch(RuntimeException e) { - cache.getLoggerI18n().warning(LocalizedStrings.BridgeServerImpl_CACHESERVER_ERROR_CLOSING_ADVISOR, e); - firstException = e; - } - - try { - if (this.acceptor != null) { - this.acceptor.close(); - } - } catch(RuntimeException e) { - logger.warn(LocalizedMessage.create(LocalizedStrings.BridgeServerImpl_CACHESERVER_ERROR_CLOSING_ACCEPTOR_MONITOR), e); - if (firstException != null) { - firstException = e; - } - } - - if(firstException != null) { - throw firstException; - } - - //TODO : We need to clean up the admin region created for client - //monitoring. - - // BridgeServer is still available, just not running, so we don't take - // it out of the cache's list... - // cache.removeBridgeServer(this); - - /* Assuming start won't be called after stop */ - BridgeMembership.unregisterBridgeMembershipListener(this.listener); - - TXManagerImpl txMgr = (TXManagerImpl) cache.getCacheTransactionManager(); - txMgr.removeHostedTXStatesForClients(); - - if (!isGatewayReceiver) { - InternalDistributedSystem system = ((GemFireCacheImpl) this.cache) - .getDistributedSystem(); - system.handleResourceEvent(ResourceEvent.CACHE_SERVER_STOP, this); - } - - } - - private String getConfig() { - ClientSubscriptionConfig csc = this.getClientSubscriptionConfig(); - String str = - "port=" + getPort() + " max-connections=" + getMaxConnections() - + " max-threads=" + getMaxThreads() + " notify-by-subscription=" - + getNotifyBySubscription() + " socket-buffer-size=" - + getSocketBufferSize() + " maximum-time-between-pings=" - + getMaximumTimeBetweenPings() + " maximum-message-count=" - + getMaximumMessageCount() + " message-time-to-live=" - + getMessageTimeToLive() + " eviction-policy=" + csc.getEvictionPolicy() - + " capacity=" + csc.getCapacity() + " overflow directory="; - if (csc.getDiskStoreName() != null) { - str += csc.getDiskStoreName(); - } else { - str += csc.getOverflowDirectory(); - } - str += - " groups=" + Arrays.asList(getGroups()) - + " loadProbe=" + loadProbe - + " loadPollInterval=" + loadPollInterval - + " tcpNoDelay=" + tcpNoDelay; - return str; - } - - @Override - public String toString() { - ClientSubscriptionConfig csc = this.getClientSubscriptionConfig(); - String str = - "CacheServer on port=" + getPort() + " client subscription config policy=" - + csc.getEvictionPolicy() + " client subscription config capacity=" - + csc.getCapacity(); - if (csc.getDiskStoreName() != null) { - str += " client subscription config overflow disk store=" - + csc.getDiskStoreName(); - } else { - str += " client subscription config overflow directory=" - + csc.getOverflowDirectory(); - } - return str; - } - - /** - * Test method used to access the internal acceptor - * - * @return the internal acceptor - */ - public AcceptorImpl getAcceptor() { - return this.acceptor; - } - - // DistributionAdvisee methods - - public DM getDistributionManager() { - return getSystem().getDistributionManager(); - } - - public ClientSession getClientSession(String durableClientId) { - return getCacheClientNotifier().getClientProxy(durableClientId); - } - - public ClientSession getClientSession(DistributedMember member) { - return getCacheClientNotifier().getClientProxy( - ClientProxyMembershipID.getClientId(member)); - } - - public Set getAllClientSessions() { - return new HashSet(getCacheClientNotifier().getClientProxies()); - } - - /** - * create client subscription - * - * @param cache - * @param ePolicy - * @param capacity - * @param port - * @param overFlowDir - * @param isDiskStore - * @return client subscription name - * @since 5.7 - */ - public static String clientMessagesRegion(GemFireCacheImpl cache, String ePolicy, - int capacity, int port, String overFlowDir, boolean isDiskStore) { - AttributesFactory factory = getAttribFactoryForClientMessagesRegion(cache, - ePolicy, capacity, overFlowDir, isDiskStore); - RegionAttributes attr = factory.create(); - - return createClientMessagesRegion(attr, cache, capacity, port); - } - - public static AttributesFactory getAttribFactoryForClientMessagesRegion( - GemFireCacheImpl cache, - String ePolicy, int capacity, String overflowDir, boolean isDiskStore) - throws InvalidValueException, GemFireIOException { - AttributesFactory factory = new AttributesFactory(); - factory.setScope(Scope.LOCAL); - - if (isDiskStore) { - // overflowDir parameter is actually diskstore name - factory.setDiskStoreName(overflowDir); - // client subscription queue is always overflow to disk, so do async - // see feature request #41479 - factory.setDiskSynchronous(true); - } else if (overflowDir == null || overflowDir.equals(ClientSubscriptionConfig.DEFAULT_OVERFLOW_DIRECTORY)) { - factory.setDiskStoreName(null); - // client subscription queue is always overflow to disk, so do async - // see feature request #41479 - factory.setDiskSynchronous(true); - } else { - File dir = new File(overflowDir + File.separatorChar - + generateNameForClientMsgsRegion(OSProcess.getId())); - // This will delete the overflow directory when virtual machine terminates. - dir.deleteOnExit(); - if (!dir.mkdirs() && !dir.isDirectory()) { - throw new GemFireIOException("Could not create client subscription overflow directory: " - + dir.getAbsolutePath()); - } - File[] dirs = { dir }; - DiskStoreFactory dsf = cache.createDiskStoreFactory(); - DiskStore bsi = dsf.setAutoCompact(true) - .setDiskDirsAndSizes(dirs, new int[] { Integer.MAX_VALUE }) - .create("bsi"); - factory.setDiskStoreName("bsi"); - // backward compatibility, it was sync - factory.setDiskSynchronous(true); - } - factory.setDataPolicy(DataPolicy.NORMAL); - // enable statistics - factory.setStatisticsEnabled(true); - /* setting LIFO related eviction attributes */ - if (HARegionQueue.HA_EVICTION_POLICY_ENTRY.equals(ePolicy)) { - factory - .setEvictionAttributes(EvictionAttributesImpl.createLIFOEntryAttributes( - capacity, EvictionAction.OVERFLOW_TO_DISK)); - } - else if (HARegionQueue.HA_EVICTION_POLICY_MEMORY.equals(ePolicy)) { // condition refinement - factory - .setEvictionAttributes(EvictionAttributesImpl.createLIFOMemoryAttributes( - capacity, EvictionAction.OVERFLOW_TO_DISK)); - } - else { - // throw invalid eviction policy exception - throw new InvalidValueException( - LocalizedStrings.BridgeServerImpl__0_INVALID_EVICTION_POLICY.toLocalizedString(ePolicy)); - } - return factory; - } - - public static String createClientMessagesRegion(RegionAttributes attr, - GemFireCacheImpl cache, int capacity, int port) { - // generating unique name in VM for ClientMessagesRegion - String regionName = generateNameForClientMsgsRegion(port); - try { - cache.createVMRegion(regionName, attr, - new InternalRegionArguments().setDestroyLockFlag(true) - .setRecreateFlag(false).setSnapshotInputStream(null) - .setImageTarget(null).setIsUsedForMetaRegion(true)); - } - catch (RegionExistsException ree) { - InternalGemFireError assErr = new InternalGemFireError( - "unexpected exception"); - assErr.initCause(ree); - throw assErr; - } - catch (IOException e) { - // only if loading snapshot, not here - InternalGemFireError assErr = new InternalGemFireError( - "unexpected exception"); - assErr.initCause(e); - throw assErr; - } - catch (ClassNotFoundException e) { - // only if loading snapshot, not here - InternalGemFireError assErr = new InternalGemFireError( - "unexpected exception"); - assErr.initCause(e); - throw assErr; - } - return regionName; - } - - public static String createClientMessagesRegionForTesting(GemFireCacheImpl cache, - String ePolicy, int capacity, int port, int expiryTime, String overFlowDir, boolean isDiskStore) { - AttributesFactory factory = getAttribFactoryForClientMessagesRegion(cache, - ePolicy, capacity, overFlowDir, isDiskStore); - ExpirationAttributes ea = new ExpirationAttributes(expiryTime, - ExpirationAction.LOCAL_INVALIDATE); - factory.setEntryTimeToLive(ea); - RegionAttributes attr = factory.create(); - - return createClientMessagesRegion(attr, cache, capacity, port); - } - - /** - * Generates the name for the client subscription using the given id. - * - * @param id - * @return String - * @since 5.7 - */ - public static String generateNameForClientMsgsRegion(int id) { - return ClientSubscriptionConfigImpl.CLIENT_SUBSCRIPTION + "_" + id; - } - - /* - * Marker class name to identify the lock more easily in thread dumps private - * static class ClientMessagesRegionLock extends Object { } - */ - public DistributionAdvisor getDistributionAdvisor() { - return this.advisor; - } - - /** - * Returns the BridgeServerAdvisor for this server - */ - public BridgeServerAdvisor getCacheServerAdvisor() { - return this.advisor; - } - - public Profile getProfile() { - return getDistributionAdvisor().createProfile(); - } - - public DistributionAdvisee getParentAdvisee() { - return null; - } - - /** - * Returns the underlying InternalDistributedSystem connection. - * @return the underlying InternalDistributedSystem - */ - public InternalDistributedSystem getSystem() { - return (InternalDistributedSystem)this.cache.getDistributedSystem(); - } - - public String getName() { - return "CacheServer"; - } - - public String getFullPath() { - return getName(); - } - - private final static AtomicInteger profileSN = new AtomicInteger(); - - private static int createSerialNumber() { - return profileSN.incrementAndGet(); - } - - /** - * Returns an array of all the groups of this bridge server. - * This includes those from the groups gemfire property - * and those explicitly added to this server. - */ - public String[] getCombinedGroups() { - ArrayList groupList = new ArrayList(); - for (String g: MemberAttributes.parseGroups(null, getSystem().getConfig().getGroups())) { - if (!groupList.contains(g)) { - groupList.add(g); - } - } - for (String g: getGroups()) { - if (!groupList.contains(g)) { - groupList.add(g); - } - } - String[] groups = new String[groupList.size()]; - return groupList.toArray(groups); - } - - public /*synchronized causes deadlock*/ void fillInProfile(Profile profile) { - assert profile instanceof BridgeServerProfile; - BridgeServerProfile bp = (BridgeServerProfile)profile; - bp.setHost(getExternalAddress(false)); - bp.setPort(getPort()); - bp.setGroups(getCombinedGroups()); - bp.setMaxConnections(maxConnections); - bp.setInitialLoad(loadMonitor.getLastLoad()); - bp.setLoadPollInterval(getLoadPollInterval()); - bp.serialNumber = getSerialNumber(); - bp.finishInit(); - } - - public int getSerialNumber() { - return this.serialNumber; - } - - - protected CacheClientNotifier getCacheClientNotifier() { - return getAcceptor().getCacheClientNotifier(); - } - - /** - * Registers a new InterestRegistrationListener with the set of - * InterestRegistrationListeners. - * - * @param listener - * The InterestRegistrationListener to register - * @throws IllegalStateException if the BridgeServer has not been started - * @since 5.8Beta - */ - public void registerInterestRegistrationListener( - InterestRegistrationListener listener) { - if (!this.isRunning()) { - throw new IllegalStateException(LocalizedStrings.BridgeServerImpl_MUST_BE_RUNNING.toLocalizedString()); - } - getCacheClientNotifier().registerInterestRegistrationListener(listener); - } - - /** - * Unregisters an existing InterestRegistrationListener from - * the set of InterestRegistrationListeners. - * - * @param listener - * The InterestRegistrationListener to - * unregister - * - * @since 5.8Beta - */ - public void unregisterInterestRegistrationListener( - InterestRegistrationListener listener) { - getCacheClientNotifier().unregisterInterestRegistrationListener(listener); - } - - /** - * Returns a read-only set of InterestRegistrationListeners - * registered with this notifier. - * - * @return a read-only set of InterestRegistrationListeners - * registered with this notifier - * - * @since 5.8Beta - */ - public Set getInterestRegistrationListeners() { - return getCacheClientNotifier().getInterestRegistrationListeners(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java index 1299d75..ec75a92 100644 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java @@ -1789,7 +1789,7 @@ public final class BucketAdvisor extends CacheDistributionAdvisor { HashSet serverLocations = new HashSet(); for (Object object : servers) { - BridgeServerImpl server = (BridgeServerImpl)object; + CacheServerImpl server = (CacheServerImpl)object; if (server.isRunning() && (server.getExternalAddress() != null)) { BucketServerLocation66 location = new BucketServerLocation66( getBucket().getId(), server.getPort(), server http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/2eb4e175/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CacheConfig.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CacheConfig.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CacheConfig.java index 7aaa241..4c29879 100644 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CacheConfig.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CacheConfig.java @@ -9,7 +9,7 @@ package com.gemstone.gemfire.internal.cache; import java.util.List; -import com.gemstone.gemfire.internal.cache.xmlcache.BridgeServerCreation; +import com.gemstone.gemfire.internal.cache.xmlcache.CacheServerCreation; import com.gemstone.gemfire.internal.i18n.LocalizedStrings; import com.gemstone.gemfire.pdx.PdxSerializer; import com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer; @@ -40,7 +40,7 @@ public class CacheConfig { /** * list of cache servers to create after auto-reconnect if cluster configuration is being used */ - private List cacheServerCreation; + private List cacheServerCreation; /** * This indicates if the pdxReadSerialized value is set by user. This is used @@ -137,12 +137,12 @@ public class CacheConfig { } - public List getCacheServerCreation() { + public List getCacheServerCreation() { return this.cacheServerCreation; } - public void setCacheServerCreation(List servers) { + public void setCacheServerCreation(List servers) { this.cacheServerCreation = servers; }