You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/03/16 14:46:51 UTC
svn commit: r1666995 -
/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org