I've commited fix on the trunk (changed API a little bit)... so now
AsyncQueue catches all kind of exceptions, not just IOException.
Can you pls. check it?
Thanks.
WBR,
Alexey.
On Dec 1, 2008, at 22:03 , Survivant 00 wrote:
> agree for the trt/catch
>
> the important thing for me, is not to see that in the console. (the
> exception not catched) .
>
> try to explain that is not a bug.. it's the feature from the
> framework :)
>
>
>
> 2008/12/1 Oleksiy Stashok <Oleksiy.Stashok_at_sun.com>
> Hi,
>
> seems channel close happens at time, when async. write is being
> processed... The internal SocketChannelImpl's VMChannel appears to
> be null at some moment.
> I think we have to wrap this to try-catch and log on FINE level.
>
> What do you think?
>
> Thanks.
>
> WBR,
> Alexey.
>
> On Dec 1, 2008, at 14:55 , Survivant 00 wrote:
>
>> I have that in my client when he does a close
>>
>>
>> /**
>> * close the client connection
>> */
>> public synchronized void close(){
>>
>> if(s_logger.isDebugEnabled()){
>> s_logger.debug("ClientConnection close");
>> }
>>
>> // No more bytes can be read from the channel
>> f_selectorHandler.getSelectionKeyHandler().cancel(f_key);
>>
>> // unsubscribe to quotefeed
>> f_manager.unsubcribeClient(this);
>> }
>>
>>
>>
>>
>>
>> 2008/12/1 Survivant 00 <survivant00_at_gmail.com>
>> I'll try to get the important parts :
>>
>>
>> in the server
>>
>> public class QuoteFeedResponseHandler extends QuoteResponseHandler {
>>
>> private static final Logger s_logger =
>> LoggerFactory.getLogger(QuoteFeedResponseHandler.class);
>>
>> public void sendLastUpdateToClient(ClientConnectionHandler
>> clientConnectionHandler) {
>> if(f_lastQuoteUpdate==null){
>> return;
>> }
>>
>> ByteBuffer writeBuffer = ByteBuffer.allocateDirect(1000);
>>
>> writeBuffer.put(f_lastQuoteUpdate.toString().getBytes());
>>
>> writeBuffer.flip();
>>
>> if(s_logger.isDebugEnabled()){
>> s_logger.debug("SENDING LAST QUOTE UPDATE TO CLIENT ");
>> }
>>
>> try {
>> if(clientConnectionHandler.getKey().isValid()){
>>
>> clientConnectionHandler
>> .getSelectorHandler
>> ().getAsyncQueueWriter().write(clientConnectionHandler.getKey(),
>> writeBuffer);
>> } else {
>> // le client n'est pas connecte
>> clientConnectionHandler.close();
>> }
>> } catch (IOException e) {
>> s_logger.warn("sendLastUpdateToClient", e);
>>
>> // le client n'est pas connecte
>> clientConnectionHandler.close();
>> }
>> }
>>
>>
>>
>>
>> public void init(){
>>
>> if(s_logger.isDebugEnabled()){
>> s_logger.debug("listening for incomming TCP Connections
>> on port : " + f_port);
>> }
>>
>> try {
>>
>> f_controller = new Controller();
>> TCPSelectorHandler tcpSelectorHandler = new
>> TCPSelectorHandler();
>> tcpSelectorHandler.setPort(f_port);
>>
>> Pipeline pipeline = new DefaultPipeline();
>> pipeline.setMaxThreads(5);
>>
>> f_controller.setPipeline(pipeline);
>>
>>
>> BaseSelectionKeyHandler selectionKeyHandler = new
>> BaseSelectionKeyHandler();
>>
>> // to be notify when a client close the connection
>> selectionKeyHandler.setConnectionCloseHandler(new
>> ConnectionCloseHandler() {
>>
>> public void locallyClosed(SelectionKey key) {
>> s_logger.debug(key + " is being locally
>> cancelled");
>> f_quoteManager.getCacheManager().remove(key);
>> }
>>
>> public void remotlyClosed(SelectionKey key) {
>> s_logger.debug(key + " is being remotly
>> cancelled (connection closed)");
>> f_quoteManager.getCacheManager().remove(key);
>> }
>> });
>>
>>
>> tcpSelectorHandler.setSelectionKeyHandler(selectionKeyHandler);
>>
>> f_controller.addSelectorHandler(tcpSelectorHandler);
>>
>>
>> QuoteQueryProtocolFilter protocolParser = new
>> QuoteQueryProtocolFilter();
>> QuoteQueryManagerFilter quoteManagerFilter = new
>> QuoteQueryManagerFilter(f_quoteManager);
>>
>> final ProtocolChain protocolChain = new
>> DefaultProtocolChain();
>> protocolChain.addFilter(protocolParser);
>> protocolChain.addFilter(quoteManagerFilter);
>> ((DefaultProtocolChain)
>> protocolChain).setContinuousExecution(true);
>>
>>
>> ProtocolChainInstanceHandler pciHandler = new
>> DefaultProtocolChainInstanceHandler() {
>>
>> public boolean offer(ProtocolChain protocolChain) {
>> return false;
>>
>> }
>>
>> public ProtocolChain poll() {
>>
>> return protocolChain;
>> }
>> };
>>
>> f_controller.setProtocolChainInstanceHandler(pciHandler);
>> try {
>> f_controller.start();
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>>
>> } catch (Exception e) {
>> f_quoteManager.exit(-10);
>> }
>> }
>>
>> 2008/12/1 Oleksiy Stashok <Oleksiy.Stashok_at_sun.com>
>>
>> Hi,
>>
>> can you pls. show the code? Seems there is async write
>> preprocessor, which returns null.
>>
>> Thanks.
>>
>> WBR,
>> Alexey.
>>
>>
>> On Nov 28, 2008, at 20:30 , Survivant 00 wrote:
>>
>> I'm doing a a test with breakpoint. The client send requests to
>> the server and after few seconds the client close the connection.
>>
>> I receive this error in the console of my server.
>>
>> 2008-11-28 14:25:36 com.sun.grizzly.util.WorkerThreadImpl run
>> GRAVE: WorkerThreadImpl unexpected exception:
>> java.lang.NullPointerException
>> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:322)
>> at
>> com
>> .sun
>> .grizzly.async.TCPAsyncQueueWriter.doWrite(TCPAsyncQueueWriter.java:
>> 88)
>> at
>> com
>> .sun
>> .grizzly
>> .async
>> .AbstractAsyncQueueWriter.doWrite(AbstractAsyncQueueWriter.java:397)
>> at
>> com
>> .sun
>> .grizzly
>> .async
>> .AbstractAsyncQueueWriter.onWrite(AbstractAsyncQueueWriter.java:303)
>> at
>> com
>> .sun
>> .grizzly
>> .async
>> .AsyncQueueWriterContextTask
>> .doCall(AsyncQueueWriterContextTask.java:86)
>> at
>> com
>> .sun
>> .grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:
>> 56)
>> at
>> com
>> .sun
>> .grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:335)
>> at
>> com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:194)
>>
>>
>> There is a way to catch this exception ?
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
>> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>>
>>
>>
>
>