[
https://issues.apache.org/jira/browse/GEODE-2497?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15876856#comment-15876856
]
ASF GitHub Bot commented on GEODE-2497:
---------------------------------------
Github user kirklund commented on a diff in the pull request:
https://github.com/apache/geode/pull/402#discussion_r102332744
--- Diff:
geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/mgr/GMSMembershipManager.java
---
@@ -978,43 +977,33 @@ public void run() {
/** starts periodic task to perform cleanup chores such as expire
surprise members */
private void startCleanupTimer() {
- latestViewWriteLock.lock();
- try {
- if (this.cleanupTimer != null) {
- return;
- }
- DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
- if (ds != null && ds.isConnected()) {
- this.cleanupTimer = new SystemTimer(ds, true);
- SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask()
{
- @Override
- public void run2() {
- latestViewWriteLock.lock();
- try {
- long oldestAllowed = System.currentTimeMillis() -
surpriseMemberTimeout;
- for (Iterator it = surpriseMembers.entrySet().iterator();
it.hasNext();) {
- Map.Entry entry = (Map.Entry) it.next();
- Long birthtime = (Long) entry.getValue();
- if (birthtime.longValue() < oldestAllowed) {
- it.remove();
- InternalDistributedMember m =
(InternalDistributedMember) entry.getKey();
- logger.info(LocalizedMessage.create(
-
LocalizedStrings.GroupMembershipService_MEMBERSHIP_EXPIRING_MEMBERSHIP_OF_SURPRISE_MEMBER_0,
- m));
- removeWithViewLock(m, true,
- "not seen in membership view in " +
surpriseMemberTimeout + "ms");
- }
- }
- } finally {
- latestViewWriteLock.unlock();
+ DistributedSystem ds = this.dcReceiver.getDM().getSystem();
+ this.cleanupTimer = new SystemTimer(ds, true);
+ SystemTimer.SystemTimerTask st = new SystemTimer.SystemTimerTask() {
+ @Override
+ public void run2() {
+ latestViewWriteLock.lock();
+ try {
+ long oldestAllowed = System.currentTimeMillis() -
surpriseMemberTimeout;
+ for (Iterator it = surpriseMembers.entrySet().iterator();
it.hasNext();) {
+ Map.Entry entry = (Map.Entry) it.next();
+ Long birthtime = (Long) entry.getValue();
+ if (birthtime.longValue() < oldestAllowed) {
--- End diff --
As I find deeply nested blocks like this, I've been extracting them to
private methods in the class. The entire run-block could be extracted to one
method and/or you could break it up into multiple methods.
> surprise members are never timed out during startup
> ---------------------------------------------------
>
> Key: GEODE-2497
> URL: https://issues.apache.org/jira/browse/GEODE-2497
> Project: Geode
> Issue Type: Bug
> Components: membership
> Reporter: Bruce Schuchardt
> Assignee: Bruce Schuchardt
>
> A system was observed to hang during startup when a "surprise member" was
> added but then never timed out. The system hung waiting for a response to a
> startup message sent to the surprise member.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)