tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Brittain <ja...@olliance.com>
Subject Re: [TC4] ResourcesBase.setCheckInterval() (not a) bug
Date Fri, 17 Nov 2000 00:44:57 GMT

Hi Remy.

Oops, yes, you're right about this (of course).  I misunderstood the use 
of the
"started" variable to mean whether or not the background thread was already
started, instead of whether the component's lifecycle had started.  Sorry.

BTW: I really like the resources package!  I can think of several useful
implementations that I'd like to use, like one for CVS, or one for JavaMail,
or ...  lots more.

Remy Maucherat wrote:

>> At the end of this method, we changed the check interval, and then we
>> need to either start or stop the background thread that periodically
>> checks for resource updates.  The code in this method handles the
>> following:
>> 
>> 1. When the background thread is already running and we should be shutting
>>    it down because the new check interval doesn't require a background
>>    thread at all.
>> 2. When the thread is supposedly already running, the old check interval
>>    didn't require a background thread (really, an illegal state -- and
>> since
>>    this code looks basically like my patch below, was this just bad
>> placement
>>    of this code?), and the new check interval does require a background
>>    thread..  In that case the code at least makes sure that we have
>>    a reference to a thread.
>> 
>> But, what it doesn't handle is:
>> 
>> 3. When the background thread isn't already running, the previous check
>>    interval didn't require a background thread, and the new check interval
>>    does require a background thread..  It should start one.
>> 
>> So, here's the patch I'd suggest:
>> 
>> 280a281,284
>>  >       else {
>>  >           if ((oldCheckInterval <= 0) && (this.checkInterval >
0))
>>  >               threadStart();
>>  >       }
> 
> 
> The "started" flag indicates that the component has been started. It's
> related to the thread state since the thread cannot be started if the
> started flag is not set to true. The flag is set by the start() and stop()
> method. If the component hasn't been started yet, I don't think it should
> start the thread (or try to stop it).
> Does it make sense (or did I miss something ?) ?
> 
> Remy (going back to optimizing the HTTP connector)
> 
-- 
Jason Brittain
Software Engineer, Olliance Inc.        http://www.Olliance.com
Current Maintainer, Locomotive Project  http://www.Locomotive.org


Mime
View raw message