Skip to content

Commit 4100011

Browse files
authored
fix bugs
1 parent 76f20b2 commit 4100011

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

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

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public class GossipManager {
5353
private boolean isWorking = false;
5454
private ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock();
5555
private ScheduledExecutorService doGossipExecutor = Executors.newScheduledThreadPool(1);
56-
private ScheduledExecutorService clearExecutor = Executors.newSingleThreadScheduledExecutor();
56+
// private ScheduledExecutorService clearExecutor = Executors.newSingleThreadScheduledExecutor();
5757

5858
private Map<GossipMember, HeartbeatState> endpointMembers = new ConcurrentHashMap<>();
5959
private List<GossipMember> liveMembers = new ArrayList<>();
@@ -173,16 +173,11 @@ public void run() {
173173
}
174174
checkStatus();
175175

176-
if (LOGGER.isTraceEnabled()) {
177-
LOGGER.trace("live member : " + getLiveMembers());
178-
LOGGER.trace("dead member : " + getDeadMembers());
179-
LOGGER.trace("endpoint : " + getEndpointMembers());
180-
LOGGER.trace("convictthreshod :" + convictedTime());
181-
}
182-
LOGGER.info("live member : " + getLiveMembers());
183-
LOGGER.info("dead member : " + getDeadMembers());
184-
LOGGER.info("endpoint : " + getEndpointMembers());
185-
LOGGER.info("convictthreshod :" + convictedTime());
176+
}
177+
if (LOGGER.isTraceEnabled()) {
178+
LOGGER.trace("live member : " + getLiveMembers());
179+
LOGGER.trace("dead member : " + getDeadMembers());
180+
LOGGER.trace("endpoint : " + getEndpointMembers());
186181
}
187182
} catch (UnknownHostException e) {
188183
LOGGER.error(e.getMessage());
@@ -251,8 +246,12 @@ public void apply2LocalState(Map<GossipMember, HeartbeatState> endpointMembers)
251246
}
252247

253248
private void remoteStateReplaceLocalState(GossipMember member, HeartbeatState remoteState) {
254-
getEndpointMembers().put(member, remoteState);
255249
up(member);
250+
if (endpointMembers.containsKey(member)) {
251+
HeartbeatState state = endpointMembers.get(member);
252+
endpointMembers.remove(member);
253+
endpointMembers.put(member, state);
254+
}
256255
}
257256

258257
public GossipMember createByDigest(GossipDigest digest) {
@@ -309,7 +308,7 @@ private void gossip2Seed(Buffer buffer) {
309308
return;
310309
}
311310
int index = (size == 1) ? 0 : random.nextInt(size);
312-
if (liveMembers.size() == 0) {
311+
if (liveMembers.size() == 1) {
313312
sendGossip2Seed(buffer, settings.getSeedMembers(), index);
314313
} else {
315314
double prob = size / (liveMembers.size() + deadMembers.size());
@@ -341,7 +340,7 @@ private boolean sendGossip2Seed(Buffer buffer, List<SeedMember> members, int ind
341340
if (buffer != null && index >= 0) {
342341
SeedMember target = members.get(index);
343342
settings.getMsgService().sendMsg(target.getIpAddress(), target.getPort(), buffer);
344-
return settings.getSeedMembers().contains(target);
343+
return true;
345344
}
346345
return false;
347346
}
@@ -396,15 +395,14 @@ private void fireGossipEvent(GossipMember member, GossipState state) {
396395
}
397396
}
398397

399-
private void clearMember(GossipMember member) {
400-
rwlock.writeLock().lock();
401-
try {
402-
deadMembers.remove(member);
403-
endpointMembers.remove(member);
404-
} finally {
405-
rwlock.writeLock().unlock();
406-
}
407-
}
398+
// private void clearMember(GossipMember member) {
399+
// rwlock.writeLock().lock();
400+
// try {
401+
// endpointMembers.remove(member);
402+
// } finally {
403+
// rwlock.writeLock().unlock();
404+
// }
405+
// }
408406

409407
public void down(GossipMember member) {
410408
LOGGER.info("down ~~");
@@ -415,9 +413,7 @@ public void down(GossipMember member) {
415413
if (!deadMembers.contains(member)) {
416414
deadMembers.add(member);
417415
}
418-
clearExecutor.schedule(() -> {
419-
clearMember(member);
420-
}, getSettings().getDeleteThreshold() * getSettings().getGossipInterval(), TimeUnit.MILLISECONDS);
416+
// clearExecutor.schedule(() -> clearMember(member), getSettings().getDeleteThreshold() * getSettings().getGossipInterval(), TimeUnit.MILLISECONDS);
421417
fireGossipEvent(member, GossipState.DOWN);
422418
} finally {
423419
rwlock.writeLock().unlock();
@@ -436,9 +432,9 @@ private void up(GossipMember member) {
436432
}
437433
if (deadMembers.contains(member)) {
438434
deadMembers.remove(member);
439-
}
440-
if(!member.equals(getSelf())){
441435
LOGGER.info("up ~~");
436+
}
437+
if (!member.equals(getSelf())) {
442438
fireGossipEvent(member, GossipState.UP);
443439
}
444440
} finally {

0 commit comments

Comments
 (0)