http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/build.gradle ----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-assembly/build.gradle ---------------------------------------------------------------------- diff --cc gemfire-assembly/build.gradle index 8cb7c26,ed0bb86..c48c2b1 --- a/gemfire-assembly/build.gradle +++ b/gemfire-assembly/build.gradle @@@ -21,8 -21,10 +21,9 @@@ configurations dependencies { provided project(':gemfire-core') + archives project(':gemfire-common') archives project(':gemfire-json') archives project(':gemfire-joptsimple') - archives project(':gemfire-jgroups') archives project(':gemfire-core') archives project(':gemfire-web') archives project(':gemfire-web-api') @@@ -161,6 -162,13 +162,10 @@@ distributions into ('lib') { exclude 'annotation*.jar' + + from project(":gemfire-common").configurations.runtime + from project(":gemfire-common").configurations.archives.allArtifacts.files + - from project(":gemfire-jgroups").configurations.runtime - from project(":gemfire-jgroups").configurations.archives.allArtifacts.files - from project(":gemfire-json").configurations.runtime from project(":gemfire-json").configurations.archives.allArtifacts.files @@@ -207,10 -215,12 +212,11 @@@ def springExtReleaseLocalRepo = [ id:'e def MavenRepos = [ springReleaseRepo, springSnapshotRepo, springLibsReleaseRepo, springExtReleaseLocalRepo ] // Jars to be published via Maven + def commonJar = [publicationName:'commonJar', project:project(":gemfire-common").name] def coreJar = [publicationName:'coreJar', project:project(":gemfire-core").name] -def jgroupsJar = [publicationName:'jgroupsJar', project:project(":gemfire-jgroups").name] def jsonJar = [publicationName:'jsonJar', project:project(":gemfire-json").name] def joptsimpleJar = [publicationName:'joptsimpleJar', project:project(":gemfire-joptsimple").name] - def MavenJars = [ coreJar, jsonJar, joptsimpleJar ] -def MavenJars = [ coreJar, jgroupsJar, jsonJar, joptsimpleJar, commonJar ] ++def MavenJars = [ coreJar, jsonJar, joptsimpleJar, commonJar ] afterEvaluate { publishing { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/build.gradle ---------------------------------------------------------------------- diff --cc gemfire-core/build.gradle index 7237782,47a84f3..d44a649 --- a/gemfire-core/build.gradle +++ b/gemfire-core/build.gradle @@@ -71,6 -70,8 +71,7 @@@ dependencies testRuntime 'commons-io:commons-io:2.1' testRuntime 'log4j:log4j:1.2.17' + compile project(':gemfire-common') - compile project(':gemfire-jgroups') compile project(':gemfire-joptsimple') compile project(':gemfire-json') http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/DataSerializer.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/AdminDistributedSystem.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/AdminDistributedSystemImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/DistributedSystemConfigImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/InetAddressUtil.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/internal/ManagedEntityConfigXmlGenerator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/admin/jmx/internal/AgentImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/client/internal/AuthenticateUserOp.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/client/internal/PingOp.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/client/internal/QueueManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/hdfs/internal/HDFSEventListener.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/cache/util/BoundedLinkedHashMap.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/DistributedSystem.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/Locator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DM.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionChannel.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfig.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionConfigImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/HighPriorityAckedMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalDistributedSystem.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/InternalLocator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/PooledExecutorWithDMStats.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/ReplyProcessor21.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/StartupOperation.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/WaitForViewInstallation.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/deadlock/DeadlockDetector.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/deadlock/DependencyGraph.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/deadlock/LocalThread.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/deadlock/MessageDependencyMonitor.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/direct/DirectChannel.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/InternalDistributedMember.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberAttributes.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberFactory.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MemberServices.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/MembershipManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetMember.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/NetView.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java index 8d7cbbf,0000000..d1dd10d mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java @@@ -1,134 -1,0 +1,144 @@@ - /*========================================================================= - * 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. - *========================================================================= ++<<<<<<< HEAD:gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/GMSMemberFactory.java ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. + */ +package com.gemstone.gemfire.distributed.internal.membership.gms; + +import java.io.File; +import java.net.InetAddress; +import java.net.UnknownHostException; + +import com.gemstone.gemfire.GemFireConfigException; +import com.gemstone.gemfire.SystemConnectException; +import com.gemstone.gemfire.distributed.internal.DMStats; +import com.gemstone.gemfire.distributed.internal.DistributionConfig; +import com.gemstone.gemfire.distributed.internal.DistributionException; +import com.gemstone.gemfire.distributed.internal.LocatorStats; +import com.gemstone.gemfire.distributed.internal.membership.DistributedMembershipListener; +import com.gemstone.gemfire.distributed.internal.membership.MemberAttributes; +import com.gemstone.gemfire.distributed.internal.membership.MemberServices; +import com.gemstone.gemfire.distributed.internal.membership.MembershipManager; +import com.gemstone.gemfire.distributed.internal.membership.NetMember; +import com.gemstone.gemfire.distributed.internal.membership.gms.locator.GMSLocator; +import com.gemstone.gemfire.internal.SocketCreator; +import com.gemstone.gemfire.internal.Version; +import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig; +import com.gemstone.gemfire.internal.i18n.LocalizedStrings; +import com.gemstone.gemfire.internal.tcp.ConnectionException; +import com.gemstone.gemfire.security.AuthenticationFailedException; +import com.gemstone.gemfire.security.AuthenticationRequiredException; + +/** + * Create a new Member based on the given inputs. + * + * @see com.gemstone.gemfire.distributed.internal.membership.NetMember + */ +public class GMSMemberFactory implements MemberServices { + + /** + * Return a new NetMember, possibly for a different host + * + * @param i the name of the host for the specified NetMember, the current host (hopefully) + * if there are any problems. + * @param splitBrainEnabled whether the member has this feature enabled + * @param canBeCoordinator whether the member can be membership coordinator + * @param p the membership port + * @param attr the MemberAttributes + * @return the new NetMember + */ + public NetMember newNetMember(InetAddress i, int p, boolean splitBrainEnabled, + boolean canBeCoordinator, MemberAttributes attr, short version) { + GMSMember result = new GMSMember(attr, i, p, splitBrainEnabled, canBeCoordinator, version, 0, 0); + return result; + } + + /** + * Return a new NetMember representing current host. This assumes that + * the member does not have network partition detection enabled and can + * be group coordinator + * @param i an InetAddress referring to the current host + * @param p the membership port being used + * @return the new NetMember + */ + public NetMember newNetMember(InetAddress i, int p) { + return new GMSMember(MemberAttributes.INVALID, i, p, false, true, Version.CURRENT_ORDINAL, 0, 0); + } + + /** + * Return a new NetMember representing current host. This + * is used for testing, so we ignore host-name lookup + * localhost inetAddress + * + * @param s a String referring to a host - ignored + * @param p the membership port being used + * @return the new member + */ + public NetMember newNetMember(String s, int p) { + InetAddress inetAddr = null; + try { + inetAddr=SocketCreator.getLocalHost(); + } catch (UnknownHostException e2) { + throw new RuntimeException("Unable to create an identifier for testing for " + s, e2); + } + return newNetMember(inetAddr, p); + } + + /** + * Return a new Member + * + * Used by externalization only. + * + * @return blank member for use with externalization + */ + public NetMember newNetMember() { + return new GMSMember(); + } + + public MembershipManager newMembershipManager(DistributedMembershipListener listener, + DistributionConfig config, + RemoteTransportConfig transport, DMStats stats) throws DistributionException + { + Services services = new Services(listener, config, transport, stats); + try { + services.init(); + services.start(); + } + catch (ConnectionException e) { + throw new DistributionException(LocalizedStrings.JGroupMemberFactory_UNABLE_TO_CREATE_MEMBERSHIP_MANAGER.toLocalizedString(), e); + } + catch (GemFireConfigException + | SystemConnectException + | AuthenticationFailedException + | AuthenticationRequiredException e) { + throw e; + } + catch (RuntimeException e) { + Services.getLogger().error("Unexpected problem starting up membership services", e); + throw new SystemConnectException("Problem starting up membership services", e); + } + return (MembershipManager)services.getManager(); + } + + @Override + public NetLocator newLocatorHandler(InetAddress bindAddress, + File stateFile, + String locatorString, + boolean usePreferredCoordinators, + boolean networkPartitionDetectionEnabled, LocatorStats stats) { + + return new GMSLocator(bindAddress, stateFile, locatorString, usePreferredCoordinators, networkPartitionDetectionEnabled, stats); + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java index 77e196c,0000000..a03ee92 mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/SuspectMember.java @@@ -1,39 -1,0 +1,53 @@@ - /** ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. + */ +package com.gemstone.gemfire.distributed.internal.membership.gms; + +import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember; + +/** represents a suspicion raised about a member */ +public class SuspectMember +{ + /** the source of suspicion */ + public InternalDistributedMember whoSuspected; + + /** suspected member */ + public InternalDistributedMember suspectedMember; + + /** create a new SuspectMember */ + public SuspectMember(InternalDistributedMember whoSuspected, InternalDistributedMember suspectedMember) { + this.whoSuspected = whoSuspected; + this.suspectedMember = suspectedMember; + } + + @Override + public String toString() { + return "{source="+whoSuspected+"; suspect="+suspectedMember+"}"; + } + + @Override + public int hashCode() { + return this.suspectedMember.hashCode(); + } + + @Override + public boolean equals(Object other) { + if ( !(other instanceof SuspectMember) ) { + return false; + } + return this.suspectedMember.equals(((SuspectMember)other).suspectedMember); + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsQuorumChecker.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsQuorumChecker.java index ed96879,0000000..eec82c4 mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsQuorumChecker.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsQuorumChecker.java @@@ -1,310 -1,0 +1,319 @@@ - /*========================================================================= - * 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. - *========================================================================= ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. + */ + +package com.gemstone.gemfire.distributed.internal.membership.gms.messenger; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.apache.logging.log4j.Logger; +import org.jgroups.Message; + +import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember; +import com.gemstone.gemfire.distributed.internal.membership.NetView; +import com.gemstone.gemfire.distributed.internal.membership.QuorumChecker; +import com.gemstone.gemfire.distributed.internal.membership.gms.GMSMember; +import com.gemstone.gemfire.internal.concurrent.ConcurrentHashSet; +import com.gemstone.gemfire.internal.logging.LogService; + +/* + * Implementation of QuorumChecker interface using JGroups artifacts + * @author Bruce Schuchardt + * @since 8.1 11/2014 + */ +public class JGroupsQuorumChecker implements QuorumChecker { + private static final Logger logger = LogService.getLogger(); + + /** + * the last view before a Forced Disconnect + */ + private NetView lastView; + /** + * The old system's membership socket + */ + private volatile DatagramSocket sock; + /** + * A boolean to stop the pingResponder thread + */ + private AtomicBoolean stopper = new AtomicBoolean(); + /** + * The thread that responds to ping requests from other members + */ + private Thread pingResponder; + /** + * The jgroups network partition threshold percentage + */ + private int partitionThreshold; + + /** + * ping-pong responses received + */ + private Set<InternalDistributedMember> receivedAcks; + + /** + * map converting from SocketAddresses to member IDs + */ + private Map<SocketAddress, InternalDistributedMember> addressConversionMap; + + /** + * Whether the quorum checker is currently suspended + */ + private volatile boolean suspended; + + /** + * Whether a quorum has been reached + * guardedby this + */ + private boolean quorumAchieved; + + + @Override + public void suspend() { + this.suspended = true; + } + + @Override + public void resume() { + this.suspended = false; + } + + + @Override + public synchronized boolean checkForQuorum(long timeout) + throws InterruptedException { + + if (this.quorumAchieved) { + return true; + } + + final boolean isDebugEnabled = logger.isDebugEnabled(); + if (this.sock == null || this.sock.isClosed()) { + if (isDebugEnabled) { + logger.debug("quorum check: UDP socket is closed. Unable to perform a quorum check"); + } + return false; + } + + boolean wasSuspended = this.suspended; + if (this.suspended) { + this.suspended = false; + } + + + byte[] buffer = new byte[] { 'p', 'i', 'n', 'g' }; + + + if (isDebugEnabled) { + logger.debug("beginning quorum check with {}", this); + } + try { + // send a ping message to each member and read pong responses + List<InternalDistributedMember> members = this.lastView.getMembers(); + for (InternalDistributedMember addr: members) { + if (!receivedAcks.contains(addr)) { + SocketAddress sockaddr = new InetSocketAddress(addr.getNetMember().getInetAddress(), addr.getPort()); + if (isDebugEnabled) { + logger.debug("quorum check: sending request to {}", addr); + } + try { + Message msg = new Message(); +// msg.setDest(new JGAddress((GMSMember)addr.getNetMember())); +// msg.setObject(obj) + DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length, sockaddr); + this.sock.send(packet); + } catch (IOException io) { + // continue to the next member + } + } + } + + + long endTime = System.currentTimeMillis() + timeout; + for ( ;; ) { + long time = System.currentTimeMillis(); + long remaining = (endTime - time); + if (remaining <= 0) { + if (isDebugEnabled) { + logger.debug("quorum check: timeout waiting for responses. {} responses received", receivedAcks.size()); + } + break; + } + if (isDebugEnabled) { + logger.debug("quorum check: waiting up to {}ms to receive a quorum of responses", remaining); + } + Thread.sleep(500); + if (receivedAcks.size() == members.size()) { + // we've heard from everyone now so we've got a quorum + if (isDebugEnabled) { + logger.debug("quorum check: received responses from all members that were in the old distributed system"); + } + this.quorumAchieved = true; + return true; + } + } + + // quorum check + int weight = getWeight(this.lastView.getMembers(), this.lastView.getLeadMember()); + int ackedWeight = getWeight(receivedAcks, this.lastView.getLeadMember()); + int lossThreshold = (int)Math.round((weight * this.partitionThreshold) / 100.0); + if (isDebugEnabled) { + logger.debug("quorum check: contacted {} processes with {} member weight units. Threshold for a quorum is {}", receivedAcks.size(), ackedWeight, lossThreshold); + } + this.quorumAchieved = (ackedWeight >= lossThreshold); + return this.quorumAchieved; + + } finally { + if (wasSuspended) { + this.suspended = true; + } + } + } + + + private int getWeight(Collection<InternalDistributedMember> idms, InternalDistributedMember leader) { + int weight = 0; + for (InternalDistributedMember mbr: idms) { + int thisWeight = mbr.getNetMember().getMemberWeight(); + if (mbr.getVmKind() == 10 /* NORMAL_DM_KIND */) { + thisWeight += 10; + if (leader != null && mbr.equals(leader)) { + thisWeight += 5; + } + } else if (mbr.getNetMember().preferredForCoordinator()) { + thisWeight += 3; + } + weight += thisWeight; + } + return weight; + } + + @Override + public Object getMembershipInfo() { + if (this.sock == null || this.sock.isClosed()) { + return null; + } + return this.sock; + } + + /** + * Create a new QuorumCheckerImpl. It must be initialized with initialize() before + * it can be used for quorum checks + */ + public JGroupsQuorumChecker(NetView jgView, int partitionThreshold, DatagramSocket jgSock) { + this.sock = jgSock; + this.lastView = jgView; + this.partitionThreshold = partitionThreshold; + } + + + public void initialize() { + if (this.sock == null || this.sock.isClosed()) { + return; + } + receivedAcks = new ConcurrentHashSet<InternalDistributedMember>(this.lastView.size()); + addressConversionMap = new ConcurrentHashMap<SocketAddress, InternalDistributedMember>(this.lastView.size()); + List<InternalDistributedMember> members = this.lastView.getMembers(); + for (InternalDistributedMember addr: members) { + SocketAddress sockaddr = new InetSocketAddress(addr.getNetMember().getInetAddress(), addr.getPort()); + addressConversionMap.put(sockaddr, addr); + } + startPingResponder(); + } + + + // start a background thread to respond to "ping" requests + private void startPingResponder() { + this.stopper.set(false); + this.pingResponder = new Thread("GemFire Auto-reconnect responder") { + public void run() { + byte[] pongBuffer = new byte[] {'p', 'o', 'n', 'g'}; + byte[] buffer = new byte[100]; + + while (!stopper.get()) { + DatagramPacket packet = new DatagramPacket(buffer, buffer.length); + try { + boolean sleep = JGroupsQuorumChecker.this.suspended; + if (sleep) { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + return; + } + continue; + } + sock.receive(packet); + SocketAddress senderSockAddr = packet.getSocketAddress(); + logger.info("received {} bytes from {}", packet.getLength(), senderSockAddr); + if (packet.getLength() == 4) { + if (buffer[0] == 'p' && buffer[1] == 'i' && buffer[2] == 'n' && buffer[3] == 'g') { + logger.info("received ping-pong request from {} - sending response", senderSockAddr); + DatagramPacket response = new DatagramPacket(pongBuffer, pongBuffer.length, senderSockAddr); + sock.send(response); + } else if (buffer[0] == 'p' && buffer[1] == 'o' && buffer[2] == 'n' && buffer[3] == 'g') { + pongReceived(senderSockAddr); + } + } + } catch (IOException e) { + try { + // if the network is down sleep a bit to keep from running hot + Thread.sleep(500); + } catch (InterruptedException ie) { + return; + } + } + } + } + }; + this.pingResponder.setDaemon(true); + this.pingResponder.start(); + } + + public void pongReceived(SocketAddress senderSockAddr) { + logger.info("received ping-pong response from {}", senderSockAddr); + + InternalDistributedMember memberAddr = addressConversionMap.get(senderSockAddr); + if (memberAddr != null) { + logger.info("quorum check: mapped address to member ID {}", memberAddr); + receivedAcks.add(memberAddr); + } + } + + public void teardown() { + if (this.sock != null) { + stopper.set(true); + } + } + + @Override + public String toString() { + if (this.sock != null) { + return "QuorumChecker(port="+this.sock.getLocalPort()+"; view="+this.lastView+")"; + } else { + return "QuorumChecker(disabled; view="+this.lastView+")"; + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/LocalViewMessage.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/LocalViewMessage.java index cd20b65,0000000..ce5ef4e mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/LocalViewMessage.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/LocalViewMessage.java @@@ -1,76 -1,0 +1,85 @@@ - /*========================================================================= - * 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. - *========================================================================= ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. + */ +package com.gemstone.gemfire.distributed.internal.membership.gms.mgr; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +import com.gemstone.gemfire.distributed.internal.DistributionManager; +import com.gemstone.gemfire.distributed.internal.SerialDistributionMessage; +import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember; +import com.gemstone.gemfire.distributed.internal.membership.NetView; + + +/** + LocalViewMessage is used to pass a new membership view to the GemFire cache + in an orderly manner. It is intended to be queued with serially + executed messages so that the view takes effect at the proper time. + + @author Bruce Schuchardt + */ + +public final class LocalViewMessage extends SerialDistributionMessage +{ + + private GMSMembershipManager manager; + private long viewId; + private NetView view; + + public LocalViewMessage( + InternalDistributedMember addr, + long viewId, + NetView view, + GMSMembershipManager manager + ) + { + super(); + this.sender = addr; + this.viewId = viewId; + this.view = view; + this.manager = manager; + } + + @Override + final public int getProcessorType() { + return DistributionManager.VIEW_EXECUTOR; + } + + + @Override + protected void process(DistributionManager dm) { + //dm.getLogger().info("view message processed", new Exception()); + manager.processView(viewId, view); + } + + // These "messages" are never DataSerialized + + public int getDSFID() { + throw new UnsupportedOperationException(); + } + + @Override + public void toData(DataOutput out) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void fromData(DataInput in) throws IOException, ClassNotFoundException { + throw new UnsupportedOperationException(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpClient.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServer.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/i18n/LogWriterI18n.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/i18n/StringId.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/i18n/StringId.java index a3fa47f,0000000..a2f720b mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/i18n/StringId.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/i18n/StringId.java @@@ -1,152 -1,0 +1,161 @@@ - /*========================================================================= - * 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. - *========================================================================= ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. + */ + +package com.gemstone.gemfire.i18n; + +import com.gemstone.gemfire.internal.i18n.AbstractStringIdResourceBundle; + +import java.text.MessageFormat; +import java.util.Locale; + +/** + * This class forms the basis of the i18n strategy. Its primary function is to + * be used as a key to be passed to an instance of StringIdResourceBundle. + * @author kbanks + * @since 6.0 + */ +public class StringId { + /** The root name of the ResourceBundle */ + private static final String RESOURCE_CLASS = "com/gemstone/gemfire/internal/i18n/StringIdResourceBundle"; + + /** A unique identifier that is written when this StringId is logged to + * allow for reverse translation. + * @see com.gemstone.gemfire.internal.logging.LogWriterImpl + */ + public final int id; + /** the English translation of text */ + private final String text; + /** ResourceBundle to use for translation, shared amongst all instances */ + private static volatile AbstractStringIdResourceBundle rb = null; + /** The locale of the current ResourceBundle, + * if this changes we must update the ResourceBundle. + */ + private static volatile Locale currentLocale = null; + + private static boolean includeMsgIDs; + + /** A StringId to allow users to log a literal String using the {@link com.gemstone.gemfire.i18n.LogWriterI18n} */ + public static final StringId LITERAL = new StringId(1, "{0}"); + + static { + setLocale(Locale.getDefault()); + } + + /* + * Update {@link #currentlocale} and {@link #rb} + * This method should be used sparingly as there is + * a small window for a race condition. + * @params locale switch to use this locale. if null + * then {@link Locale#getDefault()} is used. + */ + public static void setLocale(Locale l) { + Locale locale = l; + if ( locale == null ) { + locale = Locale.getDefault(); + } + + if ( locale != currentLocale ) { + AbstractStringIdResourceBundle tempResourceBundle = + StringId.getBundle(locale); + currentLocale = locale; + rb = tempResourceBundle; + // do we want message ids included in output? + // Only if we are using a resource bundle that has localized strings. + includeMsgIDs = !rb.usingRawMode(); + } + } + + /* + * @return AbstractStringIdResourceBundle for the locale + */ + private static AbstractStringIdResourceBundle getBundle(Locale l) { + return AbstractStringIdResourceBundle.getBundle(RESOURCE_CLASS, l); + } + + /** + * Gemstone internal constructor, customers have no need to + * create instances of this class. + */ + public StringId(int id, String text) { + this.id = id; + this.text = text; + } + + /** + * Accessor for the raw (unformatted) text of this StringId + * @return unformated text + **/ + public String getRawText() { + return this.text; + } + + /** + * @return the English translation of this StringId + **/ + @Override + public String toString() { + return MessageFormat.format(this.text, (Object[])null); + } + + + /** + * Substitutes parameter Objects into the text + * @see java.text.MessageFormat + * @return the English translation of this StringId + **/ + public String toString(Object ... params) { + return MessageFormat.format(this.text, params); + } + + /** + * @return the translation of this StringId based on the current {@link java.util.Locale} + **/ + public String toLocalizedString() { + String idStr = ""; + if (includeMsgIDs) { + idStr = "msgID "+this.id+": "; + } + return MessageFormat.format(idStr + StringId.rb.getString(this), (Object[])null); + } + + /** + * Substitutes parameter Objects into the text + * @see java.text.MessageFormat + * @return the translation of this StringId based on the current {@link java.util.Locale} + **/ + public String toLocalizedString(Object ... params) { + String idStr = ""; + if (includeMsgIDs) { + idStr = "msgID "+this.id+": "; + } + return MessageFormat.format(idStr + StringId.rb.getString(this), params); + } + + /** + * Gemstone internal test method to access {@link #currentLocale} + */ + static Locale getCurrentLocale() { + return currentLocale; + } + + /** + * Gemstone internal test method to access {@link #rb} + */ + static AbstractStringIdResourceBundle getActiveResourceBundle() { + return rb; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/AvailablePort.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/ConnectionWatcher.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/internal/ConnectionWatcher.java index 2e66418,0000000..5789245 mode 100755,000000..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/ConnectionWatcher.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/ConnectionWatcher.java @@@ -1,25 -1,0 +1,41 @@@ ++/* ++ * Licensed to the Apache Software Foundation (ASF) under one or more ++ * contributor license agreements. See the NOTICE file distributed with ++ * this work for additional information regarding copyright ownership. ++ * The ASF licenses this file to You under the Apache License, Version 2.0 ++ * (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ +package com.gemstone.gemfire.internal; + +import java.net.Socket; + +/** + * ConnectionWatcher is used to observe tcp/ip connection formation in SockCreator + * implementations. + * + * @author bschuchardt + * + */ +public interface ConnectionWatcher { + /** + * this is invoked with the connecting socket just prior to issuing + * a connect() call. It can be used to start another thread or task + * to monitor the connection attempt. + */ + public void beforeConnect(Socket socket); + + /** + * this is invoked after the connection attempt has finished. It can + * be used to cancel the task started by beforeConnect + */ + public void afterConnect(Socket socket); +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DSFIDFactory.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/DataSerializableFixedID.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/InternalDataSerializer.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/internal/InternalDataSerializer.java index 6c3003e,c5bfb81..09809b2 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/InternalDataSerializer.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/InternalDataSerializer.java @@@ -76,8 -84,7 +85,9 @@@ import com.gemstone.gemfire.distributed import com.gemstone.gemfire.distributed.internal.DistributionManager; import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem; import com.gemstone.gemfire.distributed.internal.LonerDistributionManager; +import com.gemstone.gemfire.distributed.internal.PooledDistributionMessage; + import com.gemstone.gemfire.distributed.internal.SerialDistributionMessage; +import com.gemstone.gemfire.i18n.StringId; import com.gemstone.gemfire.internal.cache.EnumListenerEvent; import com.gemstone.gemfire.internal.cache.EventID; import com.gemstone.gemfire.internal.cache.GemFireCacheImpl; http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/InternalInstantiator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SocketCreator.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SystemAdmin.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/Version.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteGfManagerAgent.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/RemoteTransportConfig.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/admin/remote/ShutdownAllRequest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/CreateRegionProcessor.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DiskStoreImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedCacheOperation.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/DistributedRegion.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/InitialImageFlowControl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/LoaderHelperImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/LocalRegion.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PRHARedundancyProvider.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDataStore.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/StateFlushOperation.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/TXState.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/ha/HARegionQueue.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/PRTombstoneMessage.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommand.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientProxyMembershipID.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java ---------------------------------------------------------------------- diff --cc gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java index 3e5d177,50c07f4..5f7a989 mode 100755,100644..100755 --- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java +++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/HandShake.java http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/Message.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/GatewayReceiverCommand.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Get70.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Ping.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Put.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/RegisterInterest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/RegisterInterest61.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/RegisterInterestList.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/RegisterInterestList61.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/RegisterInterestList66.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/Request.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/UnregisterInterest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/command/UnregisterInterestList.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/GatewaySenderEventCallbackDispatcher.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/GemFireBasicDataSource.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/datasource/GemFireConnPooledDataSource.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e41f260e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/i18n/AbstractStringIdResourceBundle.java ----------------------------------------------------------------------
