Archived
This forum has been archived. Please start a new discussion on GitHub.
getting ConnectionLostException
in Help Center
folks,
I call a server method getObjects which Returns a Sequence of Objects, 120K. I am getting ConnectionLostException. I can pass 100K object on same remote object.
There are other objects in same jvm that are doing fine.
Thanks a bunch.
Ice.ConnectionLostException
error = 0
Ice.ConnectionLostException
error = 0
at IceInternal.Outgoing.invoke(Outgoing.java:147)
at _BackofficeImplDataAccessIDelM.getObjects(_BackofficeImplDataAccessIDelM.java:915)
at BackofficeImplDataAccessIPrxHelper.getObjects(BackofficeImplDataAccessIPrxHelper.java:611)
I call a server method getObjects which Returns a Sequence of Objects, 120K. I am getting ConnectionLostException. I can pass 100K object on same remote object.
There are other objects in same jvm that are doing fine.
Thanks a bunch.
Ice.ConnectionLostException
error = 0
Ice.ConnectionLostException
error = 0
at IceInternal.Outgoing.invoke(Outgoing.java:147)
at _BackofficeImplDataAccessIDelM.getObjects(_BackofficeImplDataAccessIDelM.java:915)
at BackofficeImplDataAccessIPrxHelper.getObjects(BackofficeImplDataAccessIPrxHelper.java:611)
0
Comments
-
Please see this thread regarding our support policy here on these forums:
http://www.zeroc.com/vbulletin/showthread.php?t=16970 -
It sounds like you are running into the configured memory limit size of a request. Set Ice.MessageSizeMax to a higher value and try again. See the Ice Manual for more information on this topic. If you set Ice.Warn.Connections you can get more information on errors in your server.0
-
Thanks for your reply
I have
Ice.MessageSizeMax=204800000
I am on Win 2003 Server. Ice 2.1.2. java 1.5
Ice.Warn.Connections=1
did not produce any warnings for me.
Thanks0 -
Yeah, I realized after posting that this couldn't be your problem Is it possible you are getting a null pointer exception when marshaling the objects? Another possibility is that the client is lacking an object factory on the client side to create the objects when receiving them.
The easiest way for us to help you is for you to supply a self contained compilable example that demonstrates the problem.0 -
None of my object is null.
And it works for 100K objects ( basically no factory issue too). Actually I am just sending 120K copies of same object.
I am suspecting some bad TCP/IP config on the server.
Is there a way I can print the original java exception that was thrown when the socket connection broke.
Thanks again0 -
The Java server prints the original exception if you set Ice.Warn.Connections=1 for the Java server (not the client).0
-
Thanks Marc. This is what I got. JVM has enough memory. System is also fime.
Thanks
Using Sun JDK:
warning: connection exception:
Ice.SocketException
error = 0
at IceInternal.TcpTransceiver.write(TcpTransceiver.java:194)
at Ice.ConnectionI.sendResponse(ConnectionI.java:903)
at IceInternal.Incoming.invoke(Incoming.java:420)
at Ice.ConnectionI.invokeAll(ConnectionI.java:1940)
at Ice.ConnectionI.message(ConnectionI.java:1139)
at IceInternal.ThreadPool.run(ThreadPool.java:703)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.ja
Caused by: java.io.IOException: An operation on a socket could not be
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
at sun.nio.ch.IOUtil.write(IOUtil.java:75)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:3
at IceInternal.TcpTransceiver.write(TcpTransceiver.java:133)
... 7 more
Using JRockIt:
warning: connection exception:
Ice.SocketException
error = 0
at IceInternal.TcpTransceiver.write(TcpTransceiver.java:194)
at Ice.ConnectionI.sendResponse(ConnectionI.java:903)
at IceInternal.Incoming.invoke(Incoming.java:420)
at Ice.ConnectionI.invokeAll(ConnectionI.java:1940)
at Ice.ConnectionI.message(ConnectionI.java:1139)
at IceInternal.ThreadPool.run(ThreadPool.java:703)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:1140)
Caused by: java.net.SocketException: Insufficient buffer space
at jrockit.io.NativeIO.write(Ljava.io.FileDescriptor;II)I(Unknown Source)
at jrockit.nio.ch.IOUtil.write(Ljava.io.FileDescriptor;IIJLjrockit.io.NativeIO;Ljava.lang.Object;)I(Unknown Source)
at jrockit.nio.ch.IOUtil.write(Ljava.io.FileDescriptor;Ljrockit.io.IOMemory;IJLjrockit.io.NativeIO;Ljava.lang.Object;)I(Unknown Source)
at jrockit.nio.ch.IOUtil.write(Ljava.io.FileDescriptor;Ljava.nio.ByteBuffer;JLjrockit.io.NativeIO;Ljava.lang.Object;)I(Unknown Source)
at jrockit.nio.ch.SocketChannelImpl.write(Ljava.nio.ByteBuffer;)I(Unknown Source)
at IceInternal.TcpTransceiver.write(TcpTransceiver.java:133)0 -
I believe that:
java.net.SocketException: Insufficient buffer space
Corresponds to:WSAENOBUFS 10055 No buffer space available. An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
Google found an explanation of this error here:
http://www.proxyplus.cz/faq/articles/EN/art10002.htm0