users@grizzly.java.net

Re: Errors writing to SSL Socket

From: bjtb <brandon.booth_at_brivo.com>
Date: Thu, 14 Jan 2010 09:57:45 -0800 (PST)

Hi Alexey

Thanks very much for the reply. Helpful as always.

I'm disinclined to blame the client for two reasons. It works well under
another arrangement (other server) and we don't see any errors in
Integration test or QA test. Problem only occurs in Production.

Creating a standalone test would be very difficult. Probably a last resort.

I will retain the code change suggestion. Thanks. Do I infer correctly that
you didn't see any major issues with my code? It is based on work you did
with another user on this forum.

The logging suggestion is an excellent one. We will try that soonest (I
should have thought of it myself). Thanks again.

Regards
Brandon




bjtb wrote:
>
> Hi Folks
>
> We have a server that sits on the Internet and accepts SSL connections
> from client devices. We have about 100 such now and have started to see
> numerous exceptions trying to write to the clients. The two exceptions are
> below.
>
> When the device connects to the server I store a record of the connection
> (PanelConnection) in a central location (PanelConnectionRegistry). At that
> time I create an object (PanelWriter) used to write back to the device.
> When I go to write to the device I access PanelWriter. This gets an
> AsyncQueueWriter (CommandServAsyncQueueWriter) from the selectorhandler
> and tries to do the write. One question I have is: Is this the best way to
> write to the device?
>
> My issue seems similar to
> http://old.nabble.com/SSL-ARP-td18381476.html#a18503031, but I wasn't able
> to figure out the resolution in that case.
>
> We are using version 1.9.18.
> http://old.nabble.com/file/p27148803/brivo_grizzly_code.zip
> brivo_grizzly_code.zip
>
> The Grizzly related source is attached. The Controller allocation is in
> GrizzlyCommunicationManager.
>
> Thanks for all your help (now and in the past).
>
> Regards
> Brandon
>
> java.nio.channels.ClosedChannelException: null
> sun.nio.ch.SocketChannelImpl.ensureWriteOpen(Unknown Source)
> sun.nio.ch.SocketChannelImpl.write(Unknown Source)
>
> com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:106)
>
> com.sun.grizzly.util.OutputWriter.flushChannel(OutputWriter.java:74)
>
> com.sun.grizzly.util.SSLOutputWriter.flushChannel(SSLOutputWriter.java:100)
>
> com.brivo.commandserv.communication.CommandServAsyncQueueWriter.doWrite(CommandServAsyncQueueWriter.java:153)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.doWrite(AbstractAsyncQueueWriter.java:430)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:182)
>
> com.sun.grizzly.async.TCPAsyncQueueWriter.write(TCPAsyncQueueWriter.java:77)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:140)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:130)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:79)
>
> com.brivo.commandserv.communication.CommandServAsyncQueueWriter.write(CommandServAsyncQueueWriter.java:99)
>
> com.brivo.commandserv.communication.PanelWriter.write(PanelWriter.java:145)
>
> com.brivo.commandserv.communication.PanelWriter.writeToChannel(PanelWriter.java:101)
>
> com.brivo.commandserv.communication.PanelConnection.writeToChannel(PanelConnection.java:119)
>
> com.brivo.commandserv.communication.GrizzlyCommunicationManager.sendMessage(GrizzlyCommunicationManager.java:333)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.sendMessageToPanel(HeartbeatSendProcessorTaskImpl.java:92)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.doExecute(HeartbeatSendProcessorTaskImpl.java:71)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.doExecute(HeartbeatSendProcessorTaskImpl.java:32)
>
> com.brivo.commandserv.server.AbstractProcessorTask.call(AbstractProcessorTask.java:62)
> java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
> java.util.concurrent.FutureTask.run(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)
>
>
> java.io.IOException: SSLOutputWriter: CLOSED
>
> com.sun.grizzly.util.SSLOutputWriter.flushChannel(SSLOutputWriter.java:96)
>
> com.brivo.commandserv.communication.CommandServAsyncQueueWriter.doWrite(CommandServAsyncQueueWriter.java:153)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.doWrite(AbstractAsyncQueueWriter.java:430)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:182)
>
> com.sun.grizzly.async.TCPAsyncQueueWriter.write(TCPAsyncQueueWriter.java:77)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:140)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:130)
>
> com.sun.grizzly.async.AbstractAsyncQueueWriter.write(AbstractAsyncQueueWriter.java:79)
>
> com.brivo.commandserv.communication.CommandServAsyncQueueWriter.write(CommandServAsyncQueueWriter.java:99)
>
> com.brivo.commandserv.communication.PanelWriter.write(PanelWriter.java:145)
>
> com.brivo.commandserv.communication.PanelWriter.writeToChannel(PanelWriter.java:101)
>
> com.brivo.commandserv.communication.PanelConnection.writeToChannel(PanelConnection.java:119)
>
> com.brivo.commandserv.communication.GrizzlyCommunicationManager.sendMessage(GrizzlyCommunicationManager.java:333)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.sendMessageToPanel(HeartbeatSendProcessorTaskImpl.java:92)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.doExecute(HeartbeatSendProcessorTaskImpl.java:71)
>
> com.brivo.commandserv.heartbeat.HeartbeatSendProcessorTaskImpl.doExecute(HeartbeatSendProcessorTaskImpl.java:32)
>
> com.brivo.commandserv.server.AbstractProcessorTask.call(AbstractProcessorTask.java:62)
> java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
> java.util.concurrent.FutureTask.run(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)
>
>
>
>
>

-- 
View this message in context: http://old.nabble.com/Errors-writing-to-SSL-Socket-tp27148803p27165464.html
Sent from the Grizzly - Users mailing list archive at Nabble.com.