db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bernt M. Johnsen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-2748) TimeSlice and Socket-Timeout bounds checking wrong
Date Tue, 05 Jun 2007 12:45:25 GMT

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

Bernt M. Johnsen updated DERBY-2748:
------------------------------------

    Attachment: DERBY-2748-code-v2.stat
                DERBY-2748-code-v2.diff

New patch that accepts -1 for default timeslice. This makes timeslice equal to e.g. maxthreads
 (and no doc change). Will commit as soon as all tests have passed.

> 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
>            Assignee: Bernt M. Johnsen
>             Fix For: 10.3.0.0
>
>         Attachments: DERBY-2748-code-v2.diff, DERBY-2748-code-v2.stat, DERBY-2748-code.diff,
DERBY-2748-doc.diff
>
>
> 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.


Mime
View raw message