[Bug 66455] New: ava.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream
https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 Bug ID: 66455 Summary: ava.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream Product: Tomcat 9 Version: 9.0.71 Hardware: PC OS: Linux Status: NEW Severity: major Priority: P2 Component: Connectors Assignee: dev@tomcat.apache.org Reporter: boris_pet...@live.com Target Milestone: - Today I saw some ClassCastExceptions in my logs: java.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream (org.apache.coyote.http2.RecycledStream and org.apache.coyote.http2.Stream are in unnamed module of loader java.net.URLClassLoader @2a742aa2) at org.apache.coyote.http2.Http2UpgradeHandler.incrementWindowSize(Http2UpgradeHandler.java:1031) at org.apache.coyote.http2.Http2UpgradeHandler.incrementWindowSize(Http2UpgradeHandler.java:1879) at org.apache.coyote.http2.Http2AsyncUpgradeHandler.incrementWindowSize(Http2AsyncUpgradeHandler.java:41) at org.apache.coyote.http2.Http2Parser.readWindowUpdateFrame(Http2Parser.java:449) at org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:274) at org.apache.coyote.http2.Http2AsyncParser$FrameCompletionHandler.completed(Http2AsyncParser.java:166) at org.apache.tomcat.util.net.SocketWrapperBase$VectoredIOCompletionHandler.completed(SocketWrapperBase.java:1122) at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1697) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:1589) I'm not sure why that happens but it seems like a bug in Tomcat. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66455] java.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream
https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 Mark Thomas changed: What|Removed |Added Summary|ava.lang.ClassCastException |java.lang.ClassCastExceptio |: class |n: class |org.apache.coyote.http2.Rec |org.apache.coyote.http2.Rec |ycledStream cannot be cast |ycledStream cannot be cast |to class|to class |org.apache.coyote.http2.Str |org.apache.coyote.http2.Str |eam |eam --- Comment #1 from Mark Thomas --- Looks like a recycled stream ended up in the backlog. Fixing the symptom would be fairly simple but I'd rather understand the root cause. Need to see if we can figure out how this might happen. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66455] java.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream
https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 --- Comment #2 from Mark Thomas --- Found it. I have a test case and a fix. Just need to run the full test suite to check for regressions. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated: Fix BZ 66455 - avoid ClassCastException when processing window update
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 08443cd8ac Fix BZ 66455 - avoid ClassCastException when processing window update 08443cd8ac is described below commit 08443cd8acb3c82cde7e28f13c7a95dd08547e44 Author: Mark Thomas AuthorDate: Mon Jan 30 11:57:20 2023 + Fix BZ 66455 - avoid ClassCastException when processing window update https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 --- .../apache/coyote/http2/Http2UpgradeHandler.java | 2 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 50 ++ webapps/docs/changelog.xml | 6 +++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index c14eeafc08..f38b8beb90 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1037,13 +1037,13 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH if (stream.getConnectionAllocationRequested() > 0) { stream.setConnectionAllocationMade(stream.getConnectionAllocationRequested()); stream.setConnectionAllocationRequested(0); +result.add(stream); } } remaining -= backLogSize; backLogSize = 0; super.incrementWindowSize(remaining); -result.addAll(backLogStreams); backLogStreams.clear(); } else { allocate(this, remaining); diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java index 32fdb9fed6..4a50528dd6 100644 --- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java +++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java @@ -242,6 +242,56 @@ public class TestHttp2Section_5_3 extends Http2TestBase { } +@Test +public void testReleaseFullBacklog() throws Exception { + +http2Connect(); + +// This test uses small window updates that will trigger the excessive +// overhead protection so disable it. +http2Protocol.setOverheadWindowUpdateThreshold(0); +// May also see (rarely, depends on timing) sequential 1 byte data +// frames on the same Stream +http2Protocol.setOverheadDataThreshold(0); + + +// Default connection window size is 64k - 1. Initial request will have +// used 8k (56k -1). Increase it to 57k +sendWindowUpdate(0, 1 + 1024); + +// Use up 56k of the connection window +for (int i = 3; i < 17; i += 2) { +sendSimpleGetRequest(i); +readSimpleGetResponse(); +} + +output.clearTrace(); + +// At this point the connection window should be 1k and any new stream +// should have a window of 64k + +// Create priority tree. This test requires a blocked stream to depend on a closed stream +sendPriority(17, 15, 15); + +// Process a request on stream 17. +// This should consume the connection window and put streams 15 and 17 in the backlog. +sendSimpleGetRequest(17); +// 17-headers, 17-1k-body +parser.readFrame(); +parser.readFrame(); +output.clearTrace(); + +// At this point 17 is blocked because the connection window is zero + +// Send a large enough Window update to free the whole backlog +sendWindowUpdate(0, 8 * 1024); + +parser.readFrame(); + +Assert.assertEquals("17-Body-7168\n17-EndOfStream\n", output.getTrace()); +} + + private int[] parseBodyFrame(String output) { String[] parts = output.trim().split("-"); if (parts.length != 3 || !"Body".equals(parts[1])) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 01b994cc13..69fe963b5e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -124,6 +124,12 @@ ensure that the end of stream flag is set on the headers frame and that no data frame is sent. (markt) + +66455: Fix the cause of a potential +ClassCastException when processing a +WINDOW_UPDATE frame on an HTTP/2 connection where the flow +control window for the overall connection has been exhausted. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 8.5.x updated: Fix BZ 66455 - avoid ClassCastException when processing window update
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/8.5.x by this push: new 9ae7da6a6f Fix BZ 66455 - avoid ClassCastException when processing window update 9ae7da6a6f is described below commit 9ae7da6a6f3142e406e8ae97210be7ed3e7c1667 Author: Mark Thomas AuthorDate: Mon Jan 30 11:57:20 2023 + Fix BZ 66455 - avoid ClassCastException when processing window update https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 --- .../apache/coyote/http2/Http2UpgradeHandler.java | 2 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 50 ++ webapps/docs/changelog.xml | 6 +++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index 919be51988..94936283d4 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1021,13 +1021,13 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH if (stream.getConnectionAllocationRequested() > 0) { stream.setConnectionAllocationMade(stream.getConnectionAllocationRequested()); stream.setConnectionAllocationRequested(0); +result.add(stream); } } remaining -= backLogSize; backLogSize = 0; super.incrementWindowSize(remaining); -result.addAll(backLogStreams); backLogStreams.clear(); } else { allocate(this, remaining); diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java index 32fdb9fed6..4a50528dd6 100644 --- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java +++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java @@ -242,6 +242,56 @@ public class TestHttp2Section_5_3 extends Http2TestBase { } +@Test +public void testReleaseFullBacklog() throws Exception { + +http2Connect(); + +// This test uses small window updates that will trigger the excessive +// overhead protection so disable it. +http2Protocol.setOverheadWindowUpdateThreshold(0); +// May also see (rarely, depends on timing) sequential 1 byte data +// frames on the same Stream +http2Protocol.setOverheadDataThreshold(0); + + +// Default connection window size is 64k - 1. Initial request will have +// used 8k (56k -1). Increase it to 57k +sendWindowUpdate(0, 1 + 1024); + +// Use up 56k of the connection window +for (int i = 3; i < 17; i += 2) { +sendSimpleGetRequest(i); +readSimpleGetResponse(); +} + +output.clearTrace(); + +// At this point the connection window should be 1k and any new stream +// should have a window of 64k + +// Create priority tree. This test requires a blocked stream to depend on a closed stream +sendPriority(17, 15, 15); + +// Process a request on stream 17. +// This should consume the connection window and put streams 15 and 17 in the backlog. +sendSimpleGetRequest(17); +// 17-headers, 17-1k-body +parser.readFrame(); +parser.readFrame(); +output.clearTrace(); + +// At this point 17 is blocked because the connection window is zero + +// Send a large enough Window update to free the whole backlog +sendWindowUpdate(0, 8 * 1024); + +parser.readFrame(); + +Assert.assertEquals("17-Body-7168\n17-EndOfStream\n", output.getTrace()); +} + + private int[] parseBodyFrame(String output) { String[] parts = output.trim().split("-"); if (parts.length != 3 || !"Body".equals(parts[1])) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 9a0cee9c51..dbb4473c4e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -124,6 +124,12 @@ ensure that the end of stream flag is set on the headers frame and that no data frame is sent. (markt) + +66455: Fix the cause of a potential +ClassCastException when processing a +WINDOW_UPDATE frame on an HTTP/2 connection where the flow +control window for the overall connection has been exhausted. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 10.1.x updated: Fix BZ 66455 - avoid ClassCastException when processing window update
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 8d2e2967c0 Fix BZ 66455 - avoid ClassCastException when processing window update 8d2e2967c0 is described below commit 8d2e2967c0a30c250ffa9e4793e8324d2471798e Author: Mark Thomas AuthorDate: Mon Jan 30 11:57:20 2023 + Fix BZ 66455 - avoid ClassCastException when processing window update https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 --- .../apache/coyote/http2/Http2UpgradeHandler.java | 2 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 50 ++ webapps/docs/changelog.xml | 6 +++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index 9f1d35aaf6..48d5f449d2 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1059,13 +1059,13 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH if (stream.getConnectionAllocationRequested() > 0) { stream.setConnectionAllocationMade(stream.getConnectionAllocationRequested()); stream.setConnectionAllocationRequested(0); +result.add(stream); } } remaining -= backLogSize; backLogSize = 0; super.incrementWindowSize(remaining); -result.addAll(backLogStreams); backLogStreams.clear(); } else { allocate(this, remaining); diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java index 32fdb9fed6..4a50528dd6 100644 --- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java +++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java @@ -242,6 +242,56 @@ public class TestHttp2Section_5_3 extends Http2TestBase { } +@Test +public void testReleaseFullBacklog() throws Exception { + +http2Connect(); + +// This test uses small window updates that will trigger the excessive +// overhead protection so disable it. +http2Protocol.setOverheadWindowUpdateThreshold(0); +// May also see (rarely, depends on timing) sequential 1 byte data +// frames on the same Stream +http2Protocol.setOverheadDataThreshold(0); + + +// Default connection window size is 64k - 1. Initial request will have +// used 8k (56k -1). Increase it to 57k +sendWindowUpdate(0, 1 + 1024); + +// Use up 56k of the connection window +for (int i = 3; i < 17; i += 2) { +sendSimpleGetRequest(i); +readSimpleGetResponse(); +} + +output.clearTrace(); + +// At this point the connection window should be 1k and any new stream +// should have a window of 64k + +// Create priority tree. This test requires a blocked stream to depend on a closed stream +sendPriority(17, 15, 15); + +// Process a request on stream 17. +// This should consume the connection window and put streams 15 and 17 in the backlog. +sendSimpleGetRequest(17); +// 17-headers, 17-1k-body +parser.readFrame(); +parser.readFrame(); +output.clearTrace(); + +// At this point 17 is blocked because the connection window is zero + +// Send a large enough Window update to free the whole backlog +sendWindowUpdate(0, 8 * 1024); + +parser.readFrame(); + +Assert.assertEquals("17-Body-7168\n17-EndOfStream\n", output.getTrace()); +} + + private int[] parseBodyFrame(String output) { String[] parts = output.trim().split("-"); if (parts.length != 3 || !"Body".equals(parts[1])) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 82c6c566a4..4e0077ae51 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -132,6 +132,12 @@ ensure that the end of stream flag is set on the headers frame and that no data frame is sent. (markt) + +66455: Fix the cause of a potential +ClassCastException when processing a +WINDOW_UPDATE frame on an HTTP/2 connection where the flow +control window for the overall connection has been exhausted. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66455] java.lang.ClassCastException: class org.apache.coyote.http2.RecycledStream cannot be cast to class org.apache.coyote.http2.Stream
https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 Mark Thomas changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #3 from Mark Thomas --- Fixed in: - 10.1.x for 10.1.6 onwards - 9.0.x for 9.0.72 onwards - 8.5.x for 8.5.86 onwards 11.0.x is not affected. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Align with 10.1.x for ease of maintenance
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/main by this push: new 7a4a9a7435 Align with 10.1.x for ease of maintenance 7a4a9a7435 is described below commit 7a4a9a7435a53e49187386c0d5573bc82d85a330 Author: Mark Thomas AuthorDate: Mon Jan 30 15:47:22 2023 + Align with 10.1.x for ease of maintenance Strictly, this change is not required since in Tomcat 11.0.x onwards, the concept of parent streams has been removed so a RecycledStream can't end up in the backlog. --- java/org/apache/coyote/http2/Http2UpgradeHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index cfd6b3ddef..c65edcd049 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1052,6 +1052,7 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH if (stream.getConnectionAllocationRequested() > 0) { stream.setConnectionAllocationMade(stream.getConnectionAllocationRequested()); stream.setConnectionAllocationRequested(0); +result.add(stream); } } // Cast is safe due to test above @@ -1059,7 +1060,6 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH backLogSize = 0; super.incrementWindowSize(remaining); -result.addAll(backLogStreams); backLogStreams.clear(); } else { // Can't clear the whole backlog. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Fix import order. Fix Checkstyle warning.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/main by this push: new 8718d34541 Fix import order. Fix Checkstyle warning. 8718d34541 is described below commit 8718d3454138539952807e0b6ae1b598070a148b Author: Mark Thomas AuthorDate: Mon Jan 30 16:04:31 2023 + Fix import order. Fix Checkstyle warning. --- java/org/apache/naming/factory/SendMailFactory.java | 4 ++-- res/checkstyle/org-import-control.xml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/java/org/apache/naming/factory/SendMailFactory.java b/java/org/apache/naming/factory/SendMailFactory.java index e961f47df7..6448b4dfd6 100644 --- a/java/org/apache/naming/factory/SendMailFactory.java +++ b/java/org/apache/naming/factory/SendMailFactory.java @@ -26,13 +26,13 @@ import javax.naming.RefAddr; import javax.naming.Reference; import javax.naming.spi.ObjectFactory; -import org.apache.tomcat.util.ExceptionUtils; - import jakarta.mail.Session; import jakarta.mail.internet.InternetAddress; import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimePartDataSource; +import org.apache.tomcat.util.ExceptionUtils; + /** * Factory class that creates a JNDI named javamail MimePartDataSource * object which can be used for sending email using SMTP. diff --git a/res/checkstyle/org-import-control.xml b/res/checkstyle/org-import-control.xml index 29ea88f313..2023550efc 100644 --- a/res/checkstyle/org-import-control.xml +++ b/res/checkstyle/org-import-control.xml @@ -126,6 +126,7 @@ + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [tomcat] branch 9.0.x updated: Fix BZ 66455 - avoid ClassCastException when processing window update
Mark, On 1/30/23 10:04, ma...@apache.org wrote: This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 08443cd8ac Fix BZ 66455 - avoid ClassCastException when processing window update 08443cd8ac is described below commit 08443cd8acb3c82cde7e28f13c7a95dd08547e44 Author: Mark Thomas AuthorDate: Mon Jan 30 11:57:20 2023 + Fix BZ 66455 - avoid ClassCastException when processing window update https://bz.apache.org/bugzilla/show_bug.cgi?id=66455 --- .../apache/coyote/http2/Http2UpgradeHandler.java | 2 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 50 ++ webapps/docs/changelog.xml | 6 +++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java index c14eeafc08..f38b8beb90 100644 --- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java +++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java @@ -1037,13 +1037,13 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH if (stream.getConnectionAllocationRequested() > 0) { stream.setConnectionAllocationMade(stream.getConnectionAllocationRequested()); stream.setConnectionAllocationRequested(0); +result.add(stream); } } remaining -= backLogSize; backLogSize = 0; super.incrementWindowSize(remaining); -result.addAll(backLogStreams); backLogStreams.clear(); } else { allocate(this, remaining); diff --git a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java index 32fdb9fed6..4a50528dd6 100644 --- a/test/org/apache/coyote/http2/TestHttp2Section_5_3.java +++ b/test/org/apache/coyote/http2/TestHttp2Section_5_3.java @@ -242,6 +242,56 @@ public class TestHttp2Section_5_3 extends Http2TestBase { } +@Test +public void testReleaseFullBacklog() throws Exception { + +http2Connect(); + +// This test uses small window updates that will trigger the excessive +// overhead protection so disable it. +http2Protocol.setOverheadWindowUpdateThreshold(0); +// May also see (rarely, depends on timing) sequential 1 byte data +// frames on the same Stream +http2Protocol.setOverheadDataThreshold(0); + + +// Default connection window size is 64k - 1. Initial request will have +// used 8k (56k -1). Increase it to 57k +sendWindowUpdate(0, 1 + 1024); + +// Use up 56k of the connection window +for (int i = 3; i < 17; i += 2) { +sendSimpleGetRequest(i); +readSimpleGetResponse(); +} All of the above numbers look bonkers. Surely some of it has to do with the fact that I don;t understand the underlying implementation. Is the default window size really 65535 bytes (64k - 1)? That would be very unusual (is this some kind of spec-mandated window size? still seems weird). It seems more likely that it is a full 64k bytes and that the max index into that array would be 64k - 1. How does sending a window update of 1025 increase the connection window size to 57k? Why won't 1024 do it? Or 512? Or 1024 * 57? Or (64 - 8) * 1024 - 1? How does sending 7 updates with odd i values between 3 and 17 fill the first 56k of the connection window? Why use 3 - 17 instead of 0 - 6? Or, if you need some single-digit i values and some double-digits, why not use more straightforward loop bounds. It just looks very strange with no explanation. I hope these questions aren't just annoying. I'm sure you know what you are doing. But I know if I was looking at this code to figure out why the unit test was failing in the future, I would be at a serious loss to understand what it was even doing in the first place. -chris + +output.clearTrace(); + +// At this point the connection window should be 1k and any new stream +// should have a window of 64k + +// Create priority tree. This test requires a blocked stream to depend on a closed stream +sendPriority(17, 15, 15); + +// Process a request on stream 17. +// This should consume the connection window and put streams 15 and 17 in the backlog. +sendSimpleGetRequest(17); +// 17-headers, 17-1k-body +parser.readFrame(); +parser.readFrame(); +output.clearTrace(); + +// At this point 17 is blocked because the connection window is zero + +// Send a large enough Window update to free the whole backlog +sendWind
Re: [tomcat] branch 9.0.x updated: Fix BZ 66455 - avoid ClassCastException when processing window update
On 30/01/2023 21:03, Christopher Schultz wrote: Is the default window size really 65535 bytes (64k - 1)? That would be very unusual (is this some kind of spec-mandated window size? still seems weird). It seems more likely that it is a full 64k bytes and that the max index into that array would be 64k - 1. RFC 9113, section 6.5.2, SETTINGS_INITIAL_WINDOW_SIZE "The initial value is (2^16)-1 (65,535) octets." How does sending a window update of 1025 increase the connection window size to 57k? Why won't 1024 do it? Or 512? Or 1024 * 57? Or (64 - 8) * 1024 - 1? Initial size: 64k -1 Initial request (sent as part of http2Connect()) has an exactly 8k response body. New size = 64k - 1 - 8k = 56k -1 Increase window size by 1k +1 gives: 56k - 1 + 1k + 1 = 57k How does sending 7 updates with odd i values between 3 and 17 fill the first 56k of the connection window? 7 requests each with response bodies of 8k uses 7 * 8k = 56k of the connection window. Why use 3 - 17 instead of 0 - 6? Or, if you need some single-digit i values and some double-digits, why not use more straightforward loop bounds. It just looks very strange with no explanation. RFC 9113, section 5.1.1 "Streams initiated by a client MUST use odd-numbered stream identifiers; those initiated by the server MUST use even-numbered stream identifiers. A stream identifier of zero (0x00) is used for connection control messages; the stream identifier of zero cannot be used to establish a new stream. The identifier of a newly established stream MUST be numerically greater than all streams that the initiating endpoint has opened or reserved." The initial request was stream 1. Hence the next 7 requests are streams 3, 5, 7, 9, 11, 13 and 15. I hope these questions aren't just annoying. I'm sure you know what you are doing. But I know if I was looking at this code to figure out why the unit test was failing in the future, I would be at a serious loss to understand what it was even doing in the first place. Yes, trying to do that without first understanding the HTTP/2 protocol would be tricky. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] TochigiV opened a new pull request, #577: Update objenesis and unboundid versions for IDE configs
TochigiV opened a new pull request, #577: URL: https://github.com/apache/tomcat/pull/577 There seems to be a difference in the dependency versions in the build.properties file and the IDE config files, which I have corrected. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] aooohan commented on a diff in pull request #577: Update objenesis and unboundid versions for IDE configs
aooohan commented on code in PR #577: URL: https://github.com/apache/tomcat/pull/577#discussion_r1091406147 ## res/ide-support/netbeans/project.xml: ## @@ -189,7 +189,7 @@ test -output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar +output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar Review Comment: `/objenesis-3.2/objenesis-3.3.jar` is not correct. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] aooohan merged pull request #577: Update objenesis and unboundid versions for IDE configs
aooohan merged PR #577: URL: https://github.com/apache/tomcat/pull/577 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Update objenesis and unboundid versions for IDE configs (#577)
This is an automated email from the ASF dual-hosted git repository. lihan pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/main by this push: new cdb6f515a9 Update objenesis and unboundid versions for IDE configs (#577) cdb6f515a9 is described below commit cdb6f515a9ec3f3296965337a15ac7d10a7532db Author: Bailey Brownie AuthorDate: Mon Jan 30 22:38:42 2023 -0500 Update objenesis and unboundid versions for IDE configs (#577) Update objenesis and unboundid versions for IDE configs --- res/ide-support/eclipse/eclipse.classpath | 4 ++-- res/ide-support/idea/tomcat.iml | 4 ++-- res/ide-support/netbeans/nb-tomcat-build.properties | 2 +- res/ide-support/netbeans/project.xml| 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/ide-support/eclipse/eclipse.classpath b/res/ide-support/eclipse/eclipse.classpath index a30fee8e29..5c1bcdd282 100644 --- a/res/ide-support/eclipse/eclipse.classpath +++ b/res/ide-support/eclipse/eclipse.classpath @@ -26,9 +26,9 @@ - + - + diff --git a/res/ide-support/idea/tomcat.iml b/res/ide-support/idea/tomcat.iml index 940a9ecf27..07b6c5a32b 100644 --- a/res/ide-support/idea/tomcat.iml +++ b/res/ide-support/idea/tomcat.iml @@ -86,7 +86,7 @@ - + @@ -113,7 +113,7 @@ - + diff --git a/res/ide-support/netbeans/nb-tomcat-build.properties b/res/ide-support/netbeans/nb-tomcat-build.properties index 83e26425fd..e534367ca8 100644 --- a/res/ide-support/netbeans/nb-tomcat-build.properties +++ b/res/ide-support/netbeans/nb-tomcat-build.properties @@ -37,7 +37,7 @@ nb-test.io-method=org.apache.coyote.http11.Http11NioProtocol # it is not possible to retrieve the classpaths from the build to # use in the NetBeans targets, so they must be explicitly declared -nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.26/ecj-4.26.jar:${tomcat.classes} +nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.26/ecj-4.26.jar:${tomcat.classes} # Extra properties used by the Tomcat project additional NetBeans targets. diff --git a/res/ide-support/netbeans/project.xml b/res/ide-support/netbeans/project.xml index db92ccd862..3eb6aa8536 100644 --- a/res/ide-support/netbeans/project.xml +++ b/res/ide-support/netbeans/project.xml @@ -189,7 +189,7 @@ test -output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar +output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar 1.7 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] aooohan commented on pull request #577: Update objenesis and unboundid versions for IDE configs
aooohan commented on PR #577: URL: https://github.com/apache/tomcat/pull/577#issuecomment-1409706494 Thanks ;) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 10.1.x updated: Update objenesis and unboundid versions for IDE configs (#577)
This is an automated email from the ASF dual-hosted git repository. lihan pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 837272f9ba Update objenesis and unboundid versions for IDE configs (#577) 837272f9ba is described below commit 837272f9ba244deae4c3a1bb18b8aa036eba2099 Author: Bailey Brownie AuthorDate: Mon Jan 30 22:38:42 2023 -0500 Update objenesis and unboundid versions for IDE configs (#577) Update objenesis and unboundid versions for IDE configs --- res/ide-support/eclipse/eclipse.classpath | 4 ++-- res/ide-support/idea/tomcat.iml | 4 ++-- res/ide-support/netbeans/nb-tomcat-build.properties | 2 +- res/ide-support/netbeans/project.xml| 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/ide-support/eclipse/eclipse.classpath b/res/ide-support/eclipse/eclipse.classpath index 9c3c3f0008..850b7e1acf 100644 --- a/res/ide-support/eclipse/eclipse.classpath +++ b/res/ide-support/eclipse/eclipse.classpath @@ -28,9 +28,9 @@ - + - + diff --git a/res/ide-support/idea/tomcat.iml b/res/ide-support/idea/tomcat.iml index 1c3b45f85c..eace46183a 100644 --- a/res/ide-support/idea/tomcat.iml +++ b/res/ide-support/idea/tomcat.iml @@ -104,7 +104,7 @@ - + @@ -131,7 +131,7 @@ - + diff --git a/res/ide-support/netbeans/nb-tomcat-build.properties b/res/ide-support/netbeans/nb-tomcat-build.properties index 83e26425fd..e534367ca8 100644 --- a/res/ide-support/netbeans/nb-tomcat-build.properties +++ b/res/ide-support/netbeans/nb-tomcat-build.properties @@ -37,7 +37,7 @@ nb-test.io-method=org.apache.coyote.http11.Http11NioProtocol # it is not possible to retrieve the classpaths from the build to # use in the NetBeans targets, so they must be explicitly declared -nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.26/ecj-4.26.jar:${tomcat.classes} +nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.26/ecj-4.26.jar:${tomcat.classes} # Extra properties used by the Tomcat project additional NetBeans targets. diff --git a/res/ide-support/netbeans/project.xml b/res/ide-support/netbeans/project.xml index e616540021..7ce3694d9c 100644 --- a/res/ide-support/netbeans/project.xml +++ b/res/ide-support/netbeans/project.xml @@ -189,7 +189,7 @@ test -output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar +output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar 1.7 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated: Update objenesis and unboundid versions for IDE configs
This is an automated email from the ASF dual-hosted git repository. lihan pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new cf5d187537 Update objenesis and unboundid versions for IDE configs cf5d187537 is described below commit cf5d187537109d2bbab1d06264154b093d3364b7 Author: Bailey Brownie AuthorDate: Tue Jan 31 11:38:42 2023 +0800 Update objenesis and unboundid versions for IDE configs --- res/ide-support/eclipse/eclipse.classpath | 4 ++-- res/ide-support/idea/tomcat.iml | 4 ++-- res/ide-support/netbeans/nb-tomcat-build.properties | 2 +- res/ide-support/netbeans/project.xml| 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/ide-support/eclipse/eclipse.classpath b/res/ide-support/eclipse/eclipse.classpath index 3f28fb2028..1384731b20 100644 --- a/res/ide-support/eclipse/eclipse.classpath +++ b/res/ide-support/eclipse/eclipse.classpath @@ -28,8 +28,8 @@ - + - + diff --git a/res/ide-support/idea/tomcat.iml b/res/ide-support/idea/tomcat.iml index 1732bf4334..aa62dc576b 100644 --- a/res/ide-support/idea/tomcat.iml +++ b/res/ide-support/idea/tomcat.iml @@ -104,7 +104,7 @@ - + @@ -122,7 +122,7 @@ - + diff --git a/res/ide-support/netbeans/nb-tomcat-build.properties b/res/ide-support/netbeans/nb-tomcat-build.properties index b02a1daeab..95790302dc 100644 --- a/res/ide-support/netbeans/nb-tomcat-build.properties +++ b/res/ide-support/netbeans/nb-tomcat-build.properties @@ -37,7 +37,7 @@ nb-test.io-method=org.apache.coyote.http11.Http11NioProtocol # it is not possible to retrieve the classpaths from the build to # use in the NetBeans targets, so they must be explicitly declared -nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.20/ecj-4.20.jar:${tomcat.classes} +nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.20/ecj-4.20.jar:${tomcat.classes} # Extra properties used by the Tomcat project additional NetBeans targets. diff --git a/res/ide-support/netbeans/project.xml b/res/ide-support/netbeans/project.xml index 8f31636305..a9fcf9754b 100644 --- a/res/ide-support/netbeans/project.xml +++ b/res/ide-support/netbeans/project.xml @@ -189,7 +189,7 @@ test -output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar +output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar 1.7 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 8.5.x updated: Update objenesis and unboundid versions for IDE configs
This is an automated email from the ASF dual-hosted git repository. lihan pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/8.5.x by this push: new 8fb3e91ebb Update objenesis and unboundid versions for IDE configs 8fb3e91ebb is described below commit 8fb3e91ebb0078ae8b65e6d7245f5daeb7c2d0ca Author: Bailey Brownie AuthorDate: Tue Jan 31 11:38:42 2023 +0800 Update objenesis and unboundid versions for IDE configs --- res/ide-support/eclipse/eclipse.classpath | 4 ++-- res/ide-support/idea/tomcat.iml | 4 ++-- res/ide-support/netbeans/nb-tomcat-build.properties | 2 +- res/ide-support/netbeans/project.xml| 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/ide-support/eclipse/eclipse.classpath b/res/ide-support/eclipse/eclipse.classpath index 5fca2947f3..3e26cdb72b 100644 --- a/res/ide-support/eclipse/eclipse.classpath +++ b/res/ide-support/eclipse/eclipse.classpath @@ -28,7 +28,7 @@ - - + + diff --git a/res/ide-support/idea/tomcat.iml b/res/ide-support/idea/tomcat.iml index 747f7deec8..a096fc3137 100644 --- a/res/ide-support/idea/tomcat.iml +++ b/res/ide-support/idea/tomcat.iml @@ -104,7 +104,7 @@ - + @@ -113,7 +113,7 @@ - + diff --git a/res/ide-support/netbeans/nb-tomcat-build.properties b/res/ide-support/netbeans/nb-tomcat-build.properties index f3a7933eb8..b0d0fbcb45 100644 --- a/res/ide-support/netbeans/nb-tomcat-build.properties +++ b/res/ide-support/netbeans/nb-tomcat-build.properties @@ -37,7 +37,7 @@ nb-test.io-method=org.apache.coyote.http11.Http11NioProtocol # it is not possible to retrieve the classpaths from the build to # use in the NetBeans targets, so they must be explicitly declared -nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.6.3/ecj-4.6.3.jar:${tomcat.classes} +nb-test.classpath=${test.classes}:${tomcat.build}/webapps/examples/WEB-INF/classes:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest-2.2/hamcrest-2.2.jar:${base.path}/ecj-4.6.3/ecj-4.6.3.jar:${tomcat.classes} # Extra properties used by the Tomcat project additional NetBeans targets. diff --git a/res/ide-support/netbeans/project.xml b/res/ide-support/netbeans/project.xml index 78e8c3faf9..26528671b6 100644 --- a/res/ide-support/netbeans/project.xml +++ b/res/ide-support/netbeans/project.xml @@ -189,7 +189,7 @@ test -output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.2/objenesis-3.2.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar +output/classes:output/testclasses:${base.path}/junit-4.13.2/junit-4.13.2.jar:${base.path}/easymock-4.3/easymock-4.3.jar:${base.path}/objenesis-3.3/objenesis-3.3.jar:${base.path}/cglib-3.3.0/cglib-nodep-3.3.0.jar:${base.path}/hamcrest/hamcrest-2.2.jar 1.7 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org