[ 
https://issues.apache.org/jira/browse/DERBY-2748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12501137
 ] 

Bernt M. Johnsen commented on DERBY-2748:
-----------------------------------------

You are right. TimeSlice can not be negative. 0 translates into "no 
timeslicing" and any positive value will give you timeslicing.

Timeslice is a crude mechanism that if maxThreads i set, allows more than 
maxThreads connections to share the avaliable number threads. The setting has 
no meaning if maxThreads is not set.

> TimeSlice and Socket-Timeout bounds checking wrong
> --------------------------------------------------
>
>                 Key: DERBY-2748
>                 URL: https://issues.apache.org/jira/browse/DERBY-2748
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.2.2.0
>            Reporter: Kurt Huwig
>
> ClientThread sets the Socket timeout based upon the timeslice value:
>       //set time out                                  
>       //this looks highly suspect.  Why does timeSlice setSoTimeout?          
>       if (timeSlice != 0)
>               clientSocket.setSoTimeout(timeSlice);
> it gets the timeSlice from NetworkServerControlImpl which sets it like this:
>       /**
>        * Set the current value of  time slice
>        *
>        * @param value time slice value
>        * @exception Exception if value is < 0
>        */
>       private void setTimeSlice(int value)
>               throws Exception
>       {
>               if (value < MIN_TIMESLICE)
>                       consolePropertyMessage("DRDA_InvalidValue.U", new 
> String [] 
>                               {new Integer(value).toString(), "timeslice"});
>               if (value == USE_DEFAULT)
>                       value = DEFAULT_TIMESLICE;
>               synchronized(timeSliceSync) {
>                       timeSlice = value;
>               }
>       }
> but
>       private final static int MIN_TIMESLICE = -1;
> therefore a value of -1 is accepted by setTimeSlice, due to "!= 0" used for 
> Socket.setSoTimeout which will bail out with an Exception:
>       if (timeout < 0)
>         throw new IllegalArgumentException("timeout can't be negative");
> According to the comments, the proper fix would be
> -     private final static int MIN_TIMESLICE = -1;
> +     private final static int MIN_TIMESLICE = 0;
> but I do not understand the timeslice at all, so this is just my guess.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to