> On May 5, 2023, at 18:42, Mark Thomas <[email protected]> wrote:
>
> On 05/05/2023 04:21, Han Li wrote:
>>> On May 4, 2023, at 21:41, [email protected] wrote:
>>>
>>> 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
>>>
>>> commit 4b097bf2e9075e9e2949ec5aa410cba3c2b85374
>>> Author: Mark Thomas <[email protected]>
>>> AuthorDate: Thu May 4 14:41:01 2023 +0100
>>>
>>> Move management of utility executor from init/destroy to start/stop
>>> ---
>>> java/org/apache/catalina/connector/Connector.java | 13 +++++++---
>>> java/org/apache/catalina/core/ContainerBase.java | 20 +++++++---------
>>> java/org/apache/catalina/core/StandardServer.java | 28
>>> +++++++++++-----------
>>> .../apache/catalina/ha/tcp/SimpleTcpCluster.java | 5 +++-
>>> webapps/docs/changelog.xml | 5 ++++
>>> 5 files changed, 41 insertions(+), 30 deletions(-)
>>>
>>> diff --git a/java/org/apache/catalina/connector/Connector.java
>>> b/java/org/apache/catalina/connector/Connector.java
>>> index c9200e20ca..dac7fdd642 100644
>>> --- a/java/org/apache/catalina/connector/Connector.java
>>> +++ b/java/org/apache/catalina/connector/Connector.java
>>> @@ -992,9 +992,6 @@ public class Connector extends LifecycleMBeanBase {
>>> // Initialize adapter
>>> adapter = new CoyoteAdapter(this);
>>> protocolHandler.setAdapter(adapter);
>>> - if (service != null) {
>>> -
>>> protocolHandler.setUtilityExecutor(service.getServer().getUtilityExecutor());
>>> - }
>>>
>>> // Make sure parseBodyMethodsSet has a default
>>> if (null == parseBodyMethodsSet) {
>>> @@ -1035,6 +1032,11 @@ public class Connector extends LifecycleMBeanBase {
>>>
>>> setState(LifecycleState.STARTING);
>>>
>>> + // Configure the utility executor before starting the protocol handler
>>> + if (service != null) {
>>> +
>>> protocolHandler.setUtilityExecutor(service.getServer().getUtilityExecutor());
>> According to check logic at line 1027, the protocalHandler may be null, so
>> need NPE check.
>
> I'm not convinced that check is necessary given the call to
> protocalHandler.start() just below. I need to look into this more to see why
> the null check is there.
I have also looked into this and found which related to
org.apache.catalina.connector.TestConnector#doTestInvalidProtocol.
The reason that why this has three conditions:
1. The protocol is invalid
2. The thorwOnFailure has been set false
2) lead the null check in initInternal method has invalid and go on to
startInternal.
Han
>
>>> + }
>>> +
>>> try {
>>> protocolHandler.start();
>>> } catch (Exception e) {
>>> @@ -1060,6 +1062,11 @@ public class Connector extends LifecycleMBeanBase {
>>> } catch (Exception e) {
>>> throw new
>>> LifecycleException(sm.getString("coyoteConnector.protocolHandlerStopFailed"),
>>> e);
>>> }
>>> +
>>> + // Remove the utility executor once the protocol handler has been stopped
>>> + if (service != null) {
>>> + protocolHandler.setUtilityExecutor(null);
>> Same as above.
>
> I agree on this one.
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> <mailto:[email protected]>
> For additional commands, e-mail: [email protected]
> <mailto:[email protected]>