You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Wm.A.Stafford" <st...@marine.rutgers.edu> on 2007/09/05 22:05:34 UTC

Can two Tomcat web apps deadlock each other?

We are deploying a newer version of a web app to run in the same Tomcat 
instance (1.4.31) as the existing version.  On our development servers, 
winXP,  if the new version encounters a startup problem the production 
app will start and only the new version will fail.

On the production server, which is linux, Tomcat seems to 'hang' on the 
first failure encountered when starting the new app and nothing further 
happens. Tomcat has to be restarted after deleting the new app when it 
enters this state.  In the localhost log the last log entry is the 
exception logged from the new app and there is no further logging.  
Since we have been doing some database changes the usual error that 
causes this is Jakarta DBCP connection failure but we have also seen it 
for a missing class file.  So I  don't think the error per se is at the 
root of the problem.

To me this looks like a deadlock.  Is it possible for one Tomcat web 
application to deadlock with another?  

An obvious difference is windows vs linux servers.  Could there be some 
config issue for Tomcat on linux that would lead to this behavior?

We are completely stumped by this, any ideas or suggestions would be 
appreciated.

-=bill


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Can two Tomcat web apps deadlock each other?

Posted by "Wm.A.Stafford" <st...@marine.rutgers.edu>.
Peter,
    Thanks for replying.  I don't think server load is a factor but  I 
will look into it.  What makes me think that load is probably not the 
cause is that  when there are no startup errors everything starts and 
runs as normal in the normal amount of time.  The problem occurs when 
one app fails during startup. For  unknown reasons Tomcat either does 
not get notified of the failure and is left some sort of waiting state 
or Tomcat gets hung trying to shutdown the failed app.

    Thanks again for replying,
    -=beeky


Peter Crowther wrote:
>> From: Wm.A.Stafford [mailto:stafford@marine.rutgers.edu] 
>> Does 
>> the fact that this Tomcat behavior does not occur on the 
>> windows-based 
>> development server offer any clue as to  what may be happening on the 
>> linux server when Tomcat hangs?
>>     
>
> I'm going to take a guess: server load.  How heavily do you stress-test
> your webapp on the development server?  What with?  How many concurrent
> requests?
>
> 		- Peter
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>   


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


RE: Can two Tomcat web apps deadlock each other?

Posted by Peter Crowther <Pe...@melandra.com>.
> From: Wm.A.Stafford [mailto:stafford@marine.rutgers.edu] 
> Does 
> the fact that this Tomcat behavior does not occur on the 
> windows-based 
> development server offer any clue as to  what may be happening on the 
> linux server when Tomcat hangs?

I'm going to take a guess: server load.  How heavily do you stress-test
your webapp on the development server?  What with?  How many concurrent
requests?

		- Peter

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Can two Tomcat web apps deadlock each other?

Posted by "Wm.A.Stafford" <st...@marine.rutgers.edu>.
Alexey,
    Thanks for taking the time to reply.  I'll try all your suggestions 
but I wanted to investigate the windows vs linux possibilities.  Does 
the fact that this Tomcat behavior does not occur on the windows-based 
development server offer any clue as to  what may be happening on the 
linux server when Tomcat hangs?

Thanks again,
-=bill

Alexey Solofnenko wrote:
> There can be a simple problem with locking - see 
> http://tomcat.apache.org/faq/windows.html#lock . On Linux the files 
> are usually not locked, so you can get "class not found exception" 
> when a jar file is replaced with a new one.
>
> Ask administrators to get the stack trace (and check if CPU is at 100% 
> or not - maybe it is not a deadlock). Otherwise you can look for a 
> problem for a very long time.
>
> You can also add try/catch with finite number of retries  around 
> connection code. Please  also check that your application shuts down 
> cleanly - no exceptions are thrown during shutdown (but they should be 
> logged) and preferably there are no finally() methods.
>
> Wm.A.Stafford wrote:
>> Thanks Alexey.  Unfortunately, the server in question is not ours and 
>> we do not even have log in on it, so any kind of sane analysis is 
>> probably out of the question.
>> All we can do is try deploying another version with changes that will 
>> either fix the problem (we hope) or yield some more information about 
>> what is going on.
>>
>>
>> -=bill
>>
>> Alexey Solofnenko wrote:
>>> Everything is possible, but unlikely. Please try running server 
>>> stack trace from 
>>> http://tmitevski.users.mcs2.netarray.com/stacktrace/app/launch.jnlp 
>>> to get a thread dump. It will show the list of threads and what 
>>> locks they have acquired and what locks they are waiting for.
>>>
>>> - Alexey.
>>>
>>> Wm.A.Stafford wrote:
>>>> We are deploying a newer version of a web app to run in the same 
>>>> Tomcat instance (1.4.31) as the existing version.  On our 
>>>> development servers, winXP,  if the new version encounters a 
>>>> startup problem the production app will start and only the new 
>>>> version will fail.
>>>>
>>>> On the production server, which is linux, Tomcat seems to 'hang' on 
>>>> the first failure encountered when starting the new app and nothing 
>>>> further happens. Tomcat has to be restarted after deleting the new 
>>>> app when it enters this state.  In the localhost log the last log 
>>>> entry is the exception logged from the new app and there is no 
>>>> further logging.  Since we have been doing some database changes 
>>>> the usual error that causes this is Jakarta DBCP connection failure 
>>>> but we have also seen it for a missing class file.  So I  don't 
>>>> think the error per se is at the root of the problem.
>>>>
>>>> To me this looks like a deadlock.  Is it possible for one Tomcat 
>>>> web application to deadlock with another? An obvious difference is 
>>>> windows vs linux servers.  Could there be some config issue for 
>>>> Tomcat on linux that would lead to this behavior?
>>>>
>>>> We are completely stumped by this, any ideas or suggestions would 
>>>> be appreciated.
>>>>
>>>> -=bill
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To start a new topic, e-mail: users@tomcat.apache.org
>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: users@tomcat.apache.org
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Can two Tomcat web apps deadlock each other?

Posted by Alexey Solofnenko <A....@mdl.com>.
There can be a simple problem with locking - see 
http://tomcat.apache.org/faq/windows.html#lock . On Linux the files are 
usually not locked, so you can get "class not found exception" when a 
jar file is replaced with a new one.

Ask administrators to get the stack trace (and check if CPU is at 100% 
or not - maybe it is not a deadlock). Otherwise you can look for a 
problem for a very long time.

You can also add try/catch with finite number of retries  around 
connection code. Please  also check that your application shuts down 
cleanly - no exceptions are thrown during shutdown (but they should be 
logged) and preferably there are no finally() methods.

Wm.A.Stafford wrote:
> Thanks Alexey.  Unfortunately, the server in question is not ours and 
> we do not even have log in on it, so any kind of sane analysis is 
> probably out of the question.
> All we can do is try deploying another version with changes that will 
> either fix the problem (we hope) or yield some more information about 
> what is going on.
>
>
> -=bill
>
> Alexey Solofnenko wrote:
>> Everything is possible, but unlikely. Please try running server stack 
>> trace from 
>> http://tmitevski.users.mcs2.netarray.com/stacktrace/app/launch.jnlp 
>> to get a thread dump. It will show the list of threads and what locks 
>> they have acquired and what locks they are waiting for.
>>
>> - Alexey.
>>
>> Wm.A.Stafford wrote:
>>> We are deploying a newer version of a web app to run in the same 
>>> Tomcat instance (1.4.31) as the existing version.  On our 
>>> development servers, winXP,  if the new version encounters a startup 
>>> problem the production app will start and only the new version will 
>>> fail.
>>>
>>> On the production server, which is linux, Tomcat seems to 'hang' on 
>>> the first failure encountered when starting the new app and nothing 
>>> further happens. Tomcat has to be restarted after deleting the new 
>>> app when it enters this state.  In the localhost log the last log 
>>> entry is the exception logged from the new app and there is no 
>>> further logging.  Since we have been doing some database changes the 
>>> usual error that causes this is Jakarta DBCP connection failure but 
>>> we have also seen it for a missing class file.  So I  don't think 
>>> the error per se is at the root of the problem.
>>>
>>> To me this looks like a deadlock.  Is it possible for one Tomcat web 
>>> application to deadlock with another? An obvious difference is 
>>> windows vs linux servers.  Could there be some config issue for 
>>> Tomcat on linux that would lead to this behavior?
>>>
>>> We are completely stumped by this, any ideas or suggestions would be 
>>> appreciated.
>>>
>>> -=bill
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To start a new topic, e-mail: users@tomcat.apache.org
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org

-- 
------------------------------------------------------------------------
Alexey N. Solofnenko <http://trelony.cjb.net/>
Pleasant Hill, CA (GMT-8 usually)

Re: Can two Tomcat web apps deadlock each other?

Posted by "Wm.A.Stafford" <st...@marine.rutgers.edu>.
Thanks Alexey.  Unfortunately, the server in question is not ours and we 
do not even have log in on it, so any kind of sane analysis is probably 
out of the question.
All we can do is try deploying another version with changes that will 
either fix the problem (we hope) or yield some more information about 
what is going on.


 -=bill

Alexey Solofnenko wrote:
> Everything is possible, but unlikely. Please try running server stack 
> trace from 
> http://tmitevski.users.mcs2.netarray.com/stacktrace/app/launch.jnlp to 
> get a thread dump. It will show the list of threads and what locks 
> they have acquired and what locks they are waiting for.
>
> - Alexey.
>
> Wm.A.Stafford wrote:
>> We are deploying a newer version of a web app to run in the same 
>> Tomcat instance (1.4.31) as the existing version.  On our development 
>> servers, winXP,  if the new version encounters a startup problem the 
>> production app will start and only the new version will fail.
>>
>> On the production server, which is linux, Tomcat seems to 'hang' on 
>> the first failure encountered when starting the new app and nothing 
>> further happens. Tomcat has to be restarted after deleting the new 
>> app when it enters this state.  In the localhost log the last log 
>> entry is the exception logged from the new app and there is no 
>> further logging.  Since we have been doing some database changes the 
>> usual error that causes this is Jakarta DBCP connection failure but 
>> we have also seen it for a missing class file.  So I  don't think the 
>> error per se is at the root of the problem.
>>
>> To me this looks like a deadlock.  Is it possible for one Tomcat web 
>> application to deadlock with another? An obvious difference is 
>> windows vs linux servers.  Could there be some config issue for 
>> Tomcat on linux that would lead to this behavior?
>>
>> We are completely stumped by this, any ideas or suggestions would be 
>> appreciated.
>>
>> -=bill
>>
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: users@tomcat.apache.org
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Can two Tomcat web apps deadlock each other?

Posted by Alexey Solofnenko <A....@mdl.com>.
Everything is possible, but unlikely. Please try running server stack 
trace from 
http://tmitevski.users.mcs2.netarray.com/stacktrace/app/launch.jnlp to 
get a thread dump. It will show the list of threads and what locks they 
have acquired and what locks they are waiting for.

- Alexey.

Wm.A.Stafford wrote:
> We are deploying a newer version of a web app to run in the same 
> Tomcat instance (1.4.31) as the existing version.  On our development 
> servers, winXP,  if the new version encounters a startup problem the 
> production app will start and only the new version will fail.
>
> On the production server, which is linux, Tomcat seems to 'hang' on 
> the first failure encountered when starting the new app and nothing 
> further happens. Tomcat has to be restarted after deleting the new app 
> when it enters this state.  In the localhost log the last log entry is 
> the exception logged from the new app and there is no further 
> logging.  Since we have been doing some database changes the usual 
> error that causes this is Jakarta DBCP connection failure but we have 
> also seen it for a missing class file.  So I  don't think the error 
> per se is at the root of the problem.
>
> To me this looks like a deadlock.  Is it possible for one Tomcat web 
> application to deadlock with another? 
> An obvious difference is windows vs linux servers.  Could there be 
> some config issue for Tomcat on linux that would lead to this behavior?
>
> We are completely stumped by this, any ideas or suggestions would be 
> appreciated.
>
> -=bill
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org

-- 
------------------------------------------------------------------------
Alexey N. Solofnenko <http://trelony.cjb.net/>
Pleasant Hill, CA (GMT-8 usually)