Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit d08d84a

Browse files
authored
Merge pull request #395 from skyhit/fix_infinite_loop
fix infinite loop
2 parents fddc219 + 29c4a92 commit d08d84a

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

src/java/main/com/topcoder/direct/services/view/action/contest/launch/GetGroupMemberAction.java

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -141,34 +141,27 @@ private List<? extends Map<String,String>> getData() throws Exception {
141141
private Set<Long> getGroupMembers() throws Exception{
142142
Set<Long> members = new HashSet<Long>();
143143
LinkedList<Long> gids = new LinkedList<Long>(groupIds);
144-
Set<Long> gidProcessed = new HashSet<Long>();
145-
boolean finished = false;
146-
147-
while (!finished) {
148-
ListIterator<Long> iter = gids.listIterator();
149-
while (iter.hasNext()) {
150-
Long gid = iter.next();
151-
if (!gidProcessed.contains(gid)) {
152-
logger.info("processing gid: " + gid);
153-
RestResult<GroupMember> result = getGroupMemberByGid(gid);
154-
if (result == null) {
155-
continue;
156-
}
157-
for (GroupMember gm : result.getContent()) {
158-
if (gm.isGroup()) {
159-
if (!gids.contains(gm.getMemberId())) {
160-
iter.add(gm.getMemberId());
161-
}
162-
logger.info(" inner group: " + gm.getMemberId());
163-
} else {
164-
members.add(gm.getMemberId());
165-
}
144+
ListIterator<Long> iter = gids.listIterator();
145+
while (iter.hasNext()) {
146+
Long gid = iter.next();
147+
logger.info("processing gid: " + gid);
148+
RestResult<GroupMember> result = getGroupMemberByGid(gid);
149+
if (result == null) {
150+
logger.error("fail to get group members with gid: " + gid);
151+
continue;
152+
}
153+
for (GroupMember gm : result.getContent()) {
154+
if (gm.isGroup()) {
155+
if (!gids.contains(gm.getMemberId())) {
156+
iter.add(gm.getMemberId());
166157
}
167-
gidProcessed.add(gid);
158+
logger.info(" inner group: " + gm.getMemberId());
159+
} else {
160+
members.add(gm.getMemberId());
168161
}
169162
}
170-
if (gids.size() == gidProcessed.size()) finished = true;
171163
}
164+
172165
return members;
173166
}
174167

0 commit comments

Comments
 (0)