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

Reply via email to