java.io.EOFException using LookupCache

Dennis Brake <[email protected]> Thu, 15 May 2008 07:50:56 -0400
Newsgroups gmane.comp.java.sun.jini
Message-ID <[email protected]>
I'm testing scalability on a number of machines by registering services
and then trying to discover them. I've seen similar problems for people
using JavaSpaces but I'm only using the JoinManager and the LookupCache.

 

I'm testing scalability on a number of machines by registering services
and then trying to discover them. I'm getting random errors like the
following:

INFO: Exception occurred during call to lookup
java.rmi.UnmarshalException: exception unmarshalling response; nested
exception is:
java.io.IOException: I/O error reading from mux connection:
java.io.EOFException
at
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocat
ionHandler.java:847)
at
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationH
andler.java:659)
at
net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:
528)
at com.sun.jini.reggie.$Proxy2.lookup(Unknown Source)
at com.sun.jini.reggie.RegistrarProxy.lookup(RegistrarProxy.java:128)
at
net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$LookupTask.run(S
erviceDiscoveryManager.java:929)
at
net.jini.lookup.ServiceDiscoveryManager$LookupCacheImpl$RegisterListener
Task.run(ServiceDiscoveryManager.java:901)
at com.sun.jini.thread.TaskManager$TaskThread.run(TaskManager.java:331)
Caused by: java.io.IOException: I/O error reading from mux connection:
java.io.EOFException
at
com.sun.jini.jeri.internal.mux.Session$MuxInputStream.read(Session.java:
852)
at
net.jini.jeri.connection.ConnectionManager$Outbound$Input.read(Connectio
nManager.java:515)
at
net.jini.jeri.BasicObjectEndpoint.executeCall(BasicObjectEndpoint.java:4
11)
at
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocat
ionHandler.java:806)
... 7 more

I can successfully run my examples using only 2 machines, however when I
scale up I get the errors. The setup where I see the errors is 50
machines and on each machine I run a JVM with 10 services. I have one
LUS running on a separate machine.

My code creates a service and uses the JoinManager to register it (this
part doesn't cause problems), then I create a LookupCache and listen for
new services. In almost all 50 JVMs I get some errors. I'm expecting to
discover 251 registrations (the extra one for the LUS) but I usually get
somewhere in the range of 180. Most of the action happens within the
first minute but my code waits for 5 minutes to complete the test.

I've tested the low level networking by creating a ServerSocket,
announcing its location using a MulticastSocket, and connecting to the
server using unicast. This was scaled to 140 machines and never gave me
a problem, each machine discover the others and was able to connect.

Has anyone else had this problem? 

Thanks
Dennis 


--------------------------------------------------------------------------
Getting Started:     http://www.jini.org/wiki/Category:Getting_Started
Community Web Site:  http://jini.org
jini-users Archive:  http://archives.java.sun.com/archives/jini-users.html
Unsubscribing:       email "signoff JINI-USERS"  to [email protected]