Guus der Kinderen created DIRMINA-1088:
------------------------------------------
Summary: OrderedThreadPool implementation should be compatible
with Java 10
Key: DIRMINA-1088
URL: https://issues.apache.org/jira/browse/DIRMINA-1088
Project: MINA
Issue Type: Bug
Components: Core
Reporter: Guus der Kinderen
{{org.apache.mina.filter.executor.OrderedThreadPoolExecutor}} inherits from
{{java.util.concurrent.ThreadPoolExecutor}}
OrderedThreadPool, in its constructor, calls these two methods from its parent
to determine pool sizing:
{code:java}
super.setCorePoolSize(corePoolSize);
super.setMaximumPoolSize(maximumPoolSize);{code}
This works fine up until Java 8. In Java 10 (possibly 9 - I did not check), an
additional input validation was added to
{{ThreadPoolExecutor#setCorePoolSize}}: {{maximumPoolSize < corePoolSize}}
ThreadPoolExecutor Java 8:
{code:java}
public void setCorePoolSize(int corePoolSize) {
if (corePoolSize < 0)
throw new IllegalArgumentException();
public void setMaximumPoolSize(int maximumPoolSize) {
if (maximumPoolSize <= 0 || maximumPoolSize < corePoolSize)
throw new IllegalArgumentException();
{code}
ThreadPoolExecutor Java 10:
{code:java}
public void setCorePoolSize(int corePoolSize) {
if (corePoolSize < 0 || maximumPoolSize < corePoolSize)
throw new IllegalArgumentException();
public void setMaximumPoolSize(int maximumPoolSize) {
if (maximumPoolSize <= 0 || maximumPoolSize < corePoolSize)
throw new IllegalArgumentException();
{code}
As a result, the first line of this part of the constructor of
OrderedThreadPool now throws an IllegalArgumentException.
{code:java}
super.setCorePoolSize(corePoolSize);
super.setMaximumPoolSize(maximumPoolSize);{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)