On 16/09/2015 14:29, Christopher Schultz wrote: > Mark, > > On 9/15/15 5:10 PM, ma...@apache.org wrote: >> Author: markt >> Date: Tue Sep 15 21:10:30 2015 >> New Revision: 1703290 >> >> URL: http://svn.apache.org/r1703290 >> Log: >> Follow-up to r1703177. >> Ensure that members never contains an intermediate result of the sorting >> process. >> >> Modified: >> tomcat/trunk/java/org/apache/catalina/tribes/membership/Membership.java >> >> Modified: >> tomcat/trunk/java/org/apache/catalina/tribes/membership/Membership.java >> URL: >> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/Membership.java?rev=1703290&r1=1703289&r2=1703290&view=diff >> ============================================================================== >> --- tomcat/trunk/java/org/apache/catalina/tribes/membership/Membership.java >> (original) >> +++ tomcat/trunk/java/org/apache/catalina/tribes/membership/Membership.java >> Tue Sep 15 21:10:30 2015 >> @@ -66,7 +66,7 @@ public class Membership implements Clone >> final HashMap<Member, MbrEntry> tmpclone = (HashMap<Member, >> MbrEntry>) map.clone(); >> clone.map = tmpclone; >> clone.members = new Member[members.length]; >> - System.arraycopy(members,0,clone.members,0,members.length); >> + System.arraycopy(members, 0, clone.members, 0, members.length); >> return clone; >> } >> } >> @@ -134,7 +134,12 @@ public class Membership implements Clone >> >> updateMember.setMemberAliveTime(member.getMemberAliveTime()); >> updateMember.setPayload(member.getPayload()); >> updateMember.setCommand(member.getCommand()); >> - Arrays.sort(members, memberComparator); >> + // Re-order. Can't sort in place since a call to >> + // getMembers() may then receive an intermediate result. >> + Member[] newMembers = new Member[members.length]; >> + System.arraycopy(members, 0, newMembers, 0, >> members.length); >> + Arrays.sort(newMembers, memberComparator); >> + members = newMembers; > > Consider using Member[].clone here instead of creating your own array > and manually calling System.arraycopy. Less code and fewer opportunities > to mass things up. Same performance.
I'll get this done shortly but I did want to say you should feel free to make this sort of change directly. I'm happy to do it as a review comment on one of my patches but I'm not going complain if you want to go ahead and do this yourself. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org