Re: DGCClient$EndpointEntry stuck

Peter Jones - JavaSoft East <[email protected]>
Newsgroups gmane.comp.java.sun.rmi
Message-ID <20041203031104.GH23911@east>
> > > I'm in a situation where this happens to us consistently on a
> > > particular endpoint, i.e. we get duplicate RenewClean threads and
> > > the number grows over time.
> >
> > By "duplicate RenewClean threads", do you mean for the same host,
> > port, and (possibly null) client socket factory values running
> > simultaneously?
>
> Yep.  Although a client socket factory *is* in use I'm 100% sure it
> has a proper hashCode() and equals().  Since toString() is not
> overridden the thread name pretty much confirms it.  Each dup had
> this exact name:
>
>   "RMI RenewClean-[146.74.221.74:32779,com.sun.wbem.client.adapter.rmi.CIMOMClientSocketFactory@493e0]"

OK.

Do you happen to have source code for this class?  I was pointed at an
internal source repository for the com.sun.wbem.client.adapter.rmi
package, but it did not have a class named CIMOMClientSocketFactory.

> > > I suspect the root cause is that the RMI server process on that host
> > > is being occasionally (and too frequently) killed.  This bug would
> > > seem to be the only plausible explanation.
> >
> > Do you know what exception (that is not a ConnectException) is getting
> > thrown on the attempt to communicate with that host (i.e. the
> > condition for this bug)?
>
> I've sprinkled some printlns in DGCClient, particularly in
> makeCleanCalls(), in an attempt to find out exactly that.  The
> problem is that this all occurred at a customer site and we haven't
> yet reproduced it in-house.  We've tried killing the server JVM in
> various grisly ways and we always get a nice ConnectException on the
> client side.
>
> The thing is, that port number (32779) was apparently persistent
> across restarts of the server JVM, and I don't see how that could
> happen.  We're not seeing it happen in-house.

If the remote object indeed does not get exported explicitly on that
same fixed port-- could what is happening be that an old, stale remote
reference to that endpoint (which persists somewhere) is repeatedly
getting unmarshalled in the client VM (in which the above "RenewClean"
threads are observed) and then getting garbage collected?

The condition under which bug 6199638 causes multiple "RenewClean"
threads for the same endpoint (identical host, port, and client socket
factory) to stick around is if the number of live remote references to
the endpoint that are reachable in the VM transitions between zero and
greater than zero multiple times (and DGC clean calls to that endpoint
fail with an exception other than ConnectException, etc.).

> In case it matters the O/S was Solaris 8 on the server and RH 2.4.20
> on the client, JRE 1.4.1_03 on both.

Thanks.

-- Peter

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff RMI-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

For a list of frequently asked RMI questions please refer to:
http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html

To view past RMI-USERS postings, please see:
http://archives.java.sun.com/archives/rmi-users.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.