From 83d0ffde69d9389e982fb1ff3db0ed725f8108cc Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Fri, 11 Oct 2024 15:41:31 -0500 Subject: [PATCH] [WFCORE-7222] Ability to set IO Subsystem worker queue size Add analysis document --- ...to_set_IO_Subsystem_worker_queue_size.adoc | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 undertow/WFCORE-7022-Ability_to_set_IO_Subsystem_worker_queue_size.adoc diff --git a/undertow/WFCORE-7022-Ability_to_set_IO_Subsystem_worker_queue_size.adoc b/undertow/WFCORE-7022-Ability_to_set_IO_Subsystem_worker_queue_size.adoc new file mode 100644 index 00000000..7c792c0f --- /dev/null +++ b/undertow/WFCORE-7022-Ability_to_set_IO_Subsystem_worker_queue_size.adoc @@ -0,0 +1,128 @@ +--- +categories: +- undertow +stability-level: default +issue: https://github.com/wildfly/wildfly-proposals/issues/618 +feature-team: + developer: jasondlee + sme: + - TBD + outside-perspective: + - TBD +promotes: +promoted-by: +--- += Ability to set IO Subsystem worker queue size +:author: Jason Lee +:email: jasondlee@redhat.com +:toc: left +:icons: font +:idprefix: +:idseparator: - + +____ + +== Overview + +Currently, the only way to set the worker queue size is via a https://access.redhat.com/solutions/2433971[JMX bean]: `org.xnio:type=Xnio,provider="nio",worker="your-workername"` (`your-workername` defaults to `default` which is defined in `standalone-*.xml`). This can be done via a https://access.redhat.com/solutions/4937251[startup EJB], a https://access.redhat.com/solutions/2604501[remote JMX Client], or even `jconsole`, for example. Users have long requested the ability to set this value via the standard management configuration module. This RFE will add this management property and related code changes to implement this request. + +=== User Stories + +____ + +== Issue Metadata + +=== Related Issues + +* https://issues.redhat.com/browse/WFCORE-7022[WFCORE-7022] +* https://issues.redhat.com/browse/EAPSUP-456[EAPSUP-456] +* https://issues.redhat.com/browse/EAP7-1698[EAP7-1698] + +=== Affected Projects or Components + +- https://github.com/xnio/xnio +- https://github.com/undertow-io/undertow +- https://github.com/wildfly/wildfly-core/ +- https://github.com/wildfly/wildfly + +=== Other Interested Projects + +=== Relevant Installation Types + +* Traditional standalone server (unzipped or provisioned by Galleon) +* Managed domain +* OpenShift Source-to-Image (S2I) +* Bootable jar + +== Requirements + +* The management model will be updated to add a "max worker queue" attribute, whose default value will be null, allowing the underlying `TaskPool` implementations to configure themselves as they are now. +* To avoid cascading changes into multiple projects, the value will be set via the aforementioned MBean. + +=== Changed requirements + +Not relevant + +=== Non-Requirements + +None + +=== Future Work + +None + +== Backwards Compatibility + +The max worker queue value will default to the current value, so there should be no backwards compatibility issues. + +=== Default Configuration + +No + +=== Importing Existing Configuration + +These changes will not require any changes to existing configuration. + +=== Deployments + +This feature is opt-in, and will not affect existing deployments in any way. + +=== Interoperability + +There are no interoperability issues with this change. + +== Security Considerations + +None + +[[test_plan]] +== Test Plan + +____ +//// +Depending on the stability level, the test plan required may vary. see below: +//// + +** Experimental - No test plan is required. Basic unit / integration tests should be added during development. + +** Preview - a brief high-level description of the testing approach should be added here, including types of tests added (unit, integration, smoke, component, subsystem, etc.) Note that not all test types are required for a particular feature, so include a description of what is being tested and the approach chosen to perform the testing. + +** Community - this level should include everything in the 'Preview' stability level, plus the following additional testing as relevant: +*** Manual tests: briefly describe checks to be performed during one-time exploratory testing. The purpose of this testing is to check corner cases and other cases that are not worth implementing as automated tests. Typical checks are: bad configurations are easy to reveal, attribute descriptions and error messages are clear, names are descriptive and consistent with similar resources, default values are reasonable. +*** Miscellaneous checks: Manual checks for significant changes in server performance, memory and disk footprint should be described here. These checks are not always relevant, but consideration of these impacts, and others, are strongly encouraged and should be described here. Fully qualified test case names should be provided along with a brief description of what the test is doing. +*** Integration tests - at the 'Community' stability level, complete integration tests should be provided. +*** Compatibility tests - if backwards compatibility is relevant to the feature, then describe how the testing is performed. + +** Default - This stability level is reserved and requires approval by a professional Quality Engineer with subject matter expertise. + +== Community Documentation + +____ + +** Default - This stability level is reserved and requires approval by a professional Quality Engineer with subject matter expertise. + +== Release Note Content + +____