Skip to content

Commit 8836e6b

Browse files
authored
do not send gossip to self
1 parent de46652 commit 8836e6b

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

src/main/java/net/lvsq/jgossip/core/GossipManager.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
package net.lvsq.jgossip.core;
16-
15+
package com.webex.cgossip.core;
16+
17+
import com.webex.cgossip.event.GossipListener;
18+
import com.webex.cgossip.model.Ack2Message;
19+
import com.webex.cgossip.model.AckMessage;
20+
import com.webex.cgossip.model.GossipDigest;
21+
import com.webex.cgossip.model.GossipMember;
22+
import com.webex.cgossip.model.GossipState;
23+
import com.webex.cgossip.model.HeartbeatState;
24+
import com.webex.cgossip.model.MessageType;
25+
import com.webex.cgossip.model.SeedMember;
1726
import io.vertx.core.buffer.Buffer;
1827
import io.vertx.core.json.JsonArray;
1928
import io.vertx.core.json.JsonObject;
2029
import io.vertx.core.logging.Logger;
2130
import io.vertx.core.logging.LoggerFactory;
22-
import net.lvsq.jgossip.event.GossipListener;
23-
import net.lvsq.jgossip.model.Ack2Message;
24-
import net.lvsq.jgossip.model.AckMessage;
25-
import net.lvsq.jgossip.model.GossipDigest;
26-
import net.lvsq.jgossip.model.GossipMember;
27-
import net.lvsq.jgossip.model.GossipState;
28-
import net.lvsq.jgossip.model.HeartbeatState;
29-
import net.lvsq.jgossip.model.MessageType;
30-
import net.lvsq.jgossip.model.SeedMember;
3131

3232
import java.net.UnknownHostException;
3333
import java.util.ArrayList;
@@ -144,7 +144,6 @@ class GossipTask implements Runnable {
144144
@Override
145145
public void run() {
146146
//Update local member version
147-
long t = System.currentTimeMillis();
148147
long newversion = endpointMembers.get(getSelf()).updateVersion();
149148
if (isDiscoverable(getSelf())) {
150149
up(getSelf());
@@ -171,7 +170,6 @@ public void run() {
171170
}
172171
checkStatus();
173172

174-
System.out.println("execute time " + (System.currentTimeMillis() - t));
175173
if (LOGGER.isTraceEnabled()) {
176174
LOGGER.trace("live member : " + getLiveMembers());
177175
LOGGER.trace("dead member : " + getDeadMembers());
@@ -318,6 +316,14 @@ private void gossip2Seed(Buffer buffer) {
318316
private boolean sendGossip(Buffer buffer, List<GossipMember> members, int index) {
319317
if (buffer != null && index >= 0) {
320318
GossipMember target = members.get(index);
319+
if (target.equals(getSelf())) {
320+
int m_size = members.size();
321+
if (m_size == 1) {
322+
return false;
323+
} else {
324+
target = members.get((index + 1) % m_size);
325+
}
326+
}
321327
settings.getMsgService().sendMsg(target.getIpAddress(), target.getPort(), buffer);
322328
return settings.getSeedMembers().contains(target);
323329
}
@@ -343,6 +349,7 @@ private void checkStatus() {
343349
long now = System.currentTimeMillis();
344350
long duration = now - state.getHeartbeatTime();
345351
LOGGER.info("check : " + k.toString() + " state : " + state.toString() + " duration : " + duration + " convictedTime : " + convictedTime());
352+
//TODO: delete the service from deadmembers which outage for a long time
346353
if (duration > convictedTime() && (isAlive(k) || getLiveMembers().contains(k))) {
347354
LOGGER.info("down ~~");
348355
down(k);

0 commit comments

Comments
 (0)