You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by "Fenlason, Josh" <jf...@ptc.com> on 2006/02/23 17:02:10 UTC

RE: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Remy or anyone else working on the native connector,
I'm not the only one who has seen this problem and obviously 
the Java code isn't doing what you expected.  Any chance you 
of this patch getting accepted now?  If not, would you be 
able to explain why not?  Thanks in advance. 
, 
Josh.

> -----Original Message-----
> From: Sean Neeley [mailto:Sean.Neeley@ProducePro.com] 
> Sent: Wednesday, February 22, 2006 10:59 AM
> To: Tomcat Users List
> Subject: RE: Using APR with tomcat leaves port 8009 bound 
> when tomcat is terminated?
> 
> 
> I built the native connector myself.  The platform is Red Hat 
> linux 8.0, kernel 2.4.32.  Many, many thanks for the patch.  
> The socket option used in the patch is also what the APR team 
> recommended.  I hope someone adds this change permanently in 
> the tomcat source.
> 
> - Sean
> 
> -----Original Message-----
> From: Fenlason, Josh [mailto:jfenlason@ptc.com] 
> Sent: Wednesday, February 22, 2006 10:35 AM
> To: Tomcat Users List
> Subject: RE: Using APR with tomcat leaves port 8009 bound 
> when tomcat is terminated?
> 
> I had the same problem and submitted a patch (with help from 
> Bill Barker).  The patch is below and I attached the thread 
> Bill and I had to come to it in case your curious.  You'll 
> have to rebuild the native connector, but this should solve 
> your problem.  What platform are you on?  Did you build the 
> native connector yourself?  Or where did you get the binary from?
> 
> Remy or anyone else working on the native connector,
> I'm not the only one who has seen this problem and obviously 
> the Java code isn't doing what you expected.  Any chance you 
> of this patch getting accepted now?  If not, would you be 
> able to explain why?  Thanks in advance. , Josh.
> 
> bash-2.03$ diff -c network.c network.c.orig
> *** network.c   Mon Feb  6 12:50:54 2006
> --- network.c.orig      Mon Feb  6 12:50:11 2006
> ***************
> *** 385,391 ****
>       UNREFERENCED_STDARGS;
>       TCN_ASSERT(sock != 0);
>       TCN_ASSERT(s->sock != NULL);
> +     apr_socket_opt_set( s->sock, APR_SO_REUSEADDR, 1 );
>       return (jint)apr_socket_bind(s->sock, a);
>   }
> 
> > -----Original Message-----
> > From: Sean Neeley [mailto:Sean.Neeley@ProducePro.com]
> > Sent: Wednesday, February 22, 2006 10:06 AM
> > To: users@tomcat.apache.org
> > Subject: Using APR with tomcat leaves port 8009 bound when 
> > tomcat is terminated?
> > 
> > 
> > Hi,
> > 
> >  
> > 
> > I'm using APR 1.2.2 with Tomcat 5.5.15.  Occasionally I need
> > to restart the JVM, and so I have one of my servlets call 
> > System.exit(0).  When using the APR libraries with tomcat, 
> > exiting the JVM in this manor leaves port 8009 in the 
> > FIN_WAIT2 state (see netstat man page).  This prevents me 
> > from starting tomcat back up immediately.  I receive an error 
> > saying that the tomcat port is already bound.  If I remove 
> > the APR libraries so that tomcat does not use them, I no 
> > longer encounter this problem.  Can someone help?  I would 
> > like to use APR, but this problem prevents me.  I have 
> > already posted this issue to the APR mailing list, and they 
> > say that the problem is with tomcat. Thanks.
> > 
> >  
> > 
> > - Sean
> > 
> >  
> > 
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by Jim Jagielski <ji...@jaguNET.com>.
On Feb 24, 2006, at 11:15 AM, Jim Jagielski wrote:

>
> On Feb 23, 2006, at 11:53 AM, Remy Maucherat wrote:
>
>> Jim Jagielski wrote:
>>> I agree that the change is a big benefit, and for
>>> most OSs we care about, SO_REUSEADDR is available.
>>> The APR call should gracefully fail...
>>> I'll plug this in later on today after some edge-case tests.
>>
>> In AprEndpoint, there are a lot of Socket.optSet(serverSock,  
>> Socket.APR_SO_REUSEADDR, 1);
>>
>
> Yes, the only rub is that for reasons I'm trying to remind myself
> why, we do the setting before the bind under non-Windows, and
> afterwards on Windows...
>

Anyway, while I research this, I went the safe route
and adjusted the ordering to match httpd.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
D'OH!!!

Why doesn't this become an apr_sockattr element to the apr_socket_create
or apr_socket_bind call, so that APR determines the before/after thingy?

One side note, you setopt *after* the bind if you want to know you are
the absolute owner of the socket.  you setopt *before* the bind on win32
if you know your app owns the socket and now you want to add additional
listeners (processes) to pay attention to it.  Dunno how we could map this
all that cleanly.

Bill

William A. Rowe, Jr. wrote:
> Jim Jagielski wrote:
>>
>> On Feb 23, 2006, at 11:53 AM, Remy Maucherat wrote:
>>
>>> Jim Jagielski wrote:
>>>
>>>> I agree that the change is a big benefit, and for
>>>> most OSs we care about, SO_REUSEADDR is available.
>>>> The APR call should gracefully fail...
>>>> I'll plug this in later on today after some edge-case tests.
>>>
>>>
>>>
>>> In AprEndpoint, there are a lot of Socket.optSet(serverSock,  
>>> Socket.APR_SO_REUSEADDR, 1);
>>>
>>
>> Yes, the only rub is that for reasons I'm trying to remind myself
>> why, we do the setting before the bind under non-Windows, and
>> afterwards on Windows...
> 
> 
> If you SO_REUSEADDR before on win32, you will share any existing port
> that's previously opened by any other application.  Not cool :)
> 
> Bill
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 
> 
> .
> 


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
D'OH!!!

Why doesn't this become an apr_sockattr element to the apr_socket_create
or apr_socket_bind call, so that APR determines the before/after thingy?

One side note, you setopt *after* the bind if you want to know you are
the absolute owner of the socket.  you setopt *before* the bind on win32
if you know your app owns the socket and now you want to add additional
listeners (processes) to pay attention to it.  Dunno how we could map this
all that cleanly.

Bill

William A. Rowe, Jr. wrote:
> Jim Jagielski wrote:
>>
>> On Feb 23, 2006, at 11:53 AM, Remy Maucherat wrote:
>>
>>> Jim Jagielski wrote:
>>>
>>>> I agree that the change is a big benefit, and for
>>>> most OSs we care about, SO_REUSEADDR is available.
>>>> The APR call should gracefully fail...
>>>> I'll plug this in later on today after some edge-case tests.
>>>
>>>
>>>
>>> In AprEndpoint, there are a lot of Socket.optSet(serverSock,  
>>> Socket.APR_SO_REUSEADDR, 1);
>>>
>>
>> Yes, the only rub is that for reasons I'm trying to remind myself
>> why, we do the setting before the bind under non-Windows, and
>> afterwards on Windows...
> 
> 
> If you SO_REUSEADDR before on win32, you will share any existing port
> that's previously opened by any other application.  Not cool :)
> 
> Bill
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 
> 
> .
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Jim Jagielski wrote:
> 
> On Feb 23, 2006, at 11:53 AM, Remy Maucherat wrote:
> 
>> Jim Jagielski wrote:
>>
>>> I agree that the change is a big benefit, and for
>>> most OSs we care about, SO_REUSEADDR is available.
>>> The APR call should gracefully fail...
>>> I'll plug this in later on today after some edge-case tests.
>>
>>
>> In AprEndpoint, there are a lot of Socket.optSet(serverSock,  
>> Socket.APR_SO_REUSEADDR, 1);
>>
> 
> Yes, the only rub is that for reasons I'm trying to remind myself
> why, we do the setting before the bind under non-Windows, and
> afterwards on Windows...

If you SO_REUSEADDR before on win32, you will share any existing port
that's previously opened by any other application.  Not cool :)

Bill

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by Jim Jagielski <ji...@jaguNET.com>.
On Feb 23, 2006, at 11:53 AM, Remy Maucherat wrote:

> Jim Jagielski wrote:
>> I agree that the change is a big benefit, and for
>> most OSs we care about, SO_REUSEADDR is available.
>> The APR call should gracefully fail...
>> I'll plug this in later on today after some edge-case tests.
>
> In AprEndpoint, there are a lot of Socket.optSet(serverSock,  
> Socket.APR_SO_REUSEADDR, 1);
>

Yes, the only rub is that for reasons I'm trying to remind myself
why, we do the setting before the bind under non-Windows, and
afterwards on Windows...

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by Remy Maucherat <re...@apache.org>.
Jim Jagielski wrote:
> I agree that the change is a big benefit, and for
> most OSs we care about, SO_REUSEADDR is available.
> The APR call should gracefully fail...
> 
> I'll plug this in later on today after some edge-case tests.

In AprEndpoint, there are a lot of Socket.optSet(serverSock, 
Socket.APR_SO_REUSEADDR, 1);

Rémy

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: Using APR with tomcat leaves port 8009 bound when tomcat is terminated?

Posted by Jim Jagielski <ji...@jaguNET.com>.
I agree that the change is a big benefit, and for
most OSs we care about, SO_REUSEADDR is available.
The APR call should gracefully fail...

I'll plug this in later on today after some edge-case tests.

On Feb 23, 2006, at 11:02 AM, Fenlason, Josh wrote:

> Remy or anyone else working on the native connector,
> I'm not the only one who has seen this problem and obviously
> the Java code isn't doing what you expected.  Any chance you
> of this patch getting accepted now?  If not, would you be
> able to explain why not?  Thanks in advance.
> ,
> Josh.
>
>> -----Original Message-----
>> From: Sean Neeley [mailto:Sean.Neeley@ProducePro.com]
>> Sent: Wednesday, February 22, 2006 10:59 AM
>> To: Tomcat Users List
>> Subject: RE: Using APR with tomcat leaves port 8009 bound
>> when tomcat is terminated?
>>
>>
>> I built the native connector myself.  The platform is Red Hat
>> linux 8.0, kernel 2.4.32.  Many, many thanks for the patch.
>> The socket option used in the patch is also what the APR team
>> recommended.  I hope someone adds this change permanently in
>> the tomcat source.
>>
>> - Sean
>>
>> -----Original Message-----
>> From: Fenlason, Josh [mailto:jfenlason@ptc.com]
>> Sent: Wednesday, February 22, 2006 10:35 AM
>> To: Tomcat Users List
>> Subject: RE: Using APR with tomcat leaves port 8009 bound
>> when tomcat is terminated?
>>
>> I had the same problem and submitted a patch (with help from
>> Bill Barker).  The patch is below and I attached the thread
>> Bill and I had to come to it in case your curious.  You'll
>> have to rebuild the native connector, but this should solve
>> your problem.  What platform are you on?  Did you build the
>> native connector yourself?  Or where did you get the binary from?
>>
>> Remy or anyone else working on the native connector,
>> I'm not the only one who has seen this problem and obviously
>> the Java code isn't doing what you expected.  Any chance you
>> of this patch getting accepted now?  If not, would you be
>> able to explain why?  Thanks in advance. , Josh.
>>
>> bash-2.03$ diff -c network.c network.c.orig
>> *** network.c   Mon Feb  6 12:50:54 2006
>> --- network.c.orig      Mon Feb  6 12:50:11 2006
>> ***************
>> *** 385,391 ****
>>       UNREFERENCED_STDARGS;
>>       TCN_ASSERT(sock != 0);
>>       TCN_ASSERT(s->sock != NULL);
>> +     apr_socket_opt_set( s->sock, APR_SO_REUSEADDR, 1 );
>>       return (jint)apr_socket_bind(s->sock, a);
>>   }
>>
>>> -----Original Message-----
>>> From: Sean Neeley [mailto:Sean.Neeley@ProducePro.com]
>>> Sent: Wednesday, February 22, 2006 10:06 AM
>>> To: users@tomcat.apache.org
>>> Subject: Using APR with tomcat leaves port 8009 bound when
>>> tomcat is terminated?
>>>
>>>
>>> Hi,
>>>
>>>
>>>
>>> I'm using APR 1.2.2 with Tomcat 5.5.15.  Occasionally I need
>>> to restart the JVM, and so I have one of my servlets call
>>> System.exit(0).  When using the APR libraries with tomcat,
>>> exiting the JVM in this manor leaves port 8009 in the
>>> FIN_WAIT2 state (see netstat man page).  This prevents me
>>> from starting tomcat back up immediately.  I receive an error
>>> saying that the tomcat port is already bound.  If I remove
>>> the APR libraries so that tomcat does not use them, I no
>>> longer encounter this problem.  Can someone help?  I would
>>> like to use APR, but this problem prevents me.  I have
>>> already posted this issue to the APR mailing list, and they
>>> say that the problem is with tomcat. Thanks.
>>>
>>>
>>>
>>> - Sean
>>>
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org