Author: markt Date: Mon Mar 16 13:46:50 2015 New Revision: 1666995 URL: http://svn.apache.org/r1666995 Log: Until we have a better understanding of BZ 56313, always merge regardless of OS
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1666995&r1=1666994&r2=1666995&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Mon Mar 16 13:46:50 2015 @@ -1920,29 +1920,27 @@ public class AprEndpoint extends Abstrac private int mergeDescriptors(long[] desc, int startCount) { - if (OS.IS_BSD || OS.IS_MACOSX) { - /* - * Notes: Only the first startCount * 2 elements of the array - * are populated. - * The array is event, socket, event, socket etc. - */ - HashMap<Long,Long> merged = new HashMap<>(startCount); - for (int n = 0; n < startCount; n++) { - merged.merge(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]), - (v1, v2) -> Long.valueOf(v1.longValue() | v2.longValue())); - } - int i = 0; - for (Map.Entry<Long,Long> entry : merged.entrySet()) { - desc[i++] = entry.getValue().longValue(); - desc[i++] = entry.getKey().longValue(); - } - return merged.size(); - } else { - // Other OS's do not (as far as it is known) return multiple - // entries for the same socket when the socket is registered for - // multiple events. - return startCount; + /* + * https://bz.apache.org/bugzilla/show_bug.cgi?id=57653#c6 suggests + * this merging is only necessary on OSX and BSD. + * + * https://bz.apache.org/bugzilla/show_bug.cgi?id=56313 suggests the + * same, or a similar, issue is happening on Windows. + * Notes: Only the first startCount * 2 elements of the array + * are populated. + * The array is event, socket, event, socket etc. + */ + HashMap<Long,Long> merged = new HashMap<>(startCount); + for (int n = 0; n < startCount; n++) { + merged.merge(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]), + (v1, v2) -> Long.valueOf(v1.longValue() | v2.longValue())); } + int i = 0; + for (Map.Entry<Long,Long> entry : merged.entrySet()) { + desc[i++] = entry.getValue().longValue(); + desc[i++] = entry.getKey().longValue(); + } + return merged.size(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org