not been able to reproduce.
2008/12/2 Survivant <survivant00_at_gmail.com>
> I didn'T had time.. I swtich project at my job, so I'll have to do it on
> lunch time.. I'll try tomorrow.
>
>
> ----- Original Message -----
> *From:* Oleksiy Stashok <Oleksiy.Stashok_at_Sun.COM>
> *To:* users_at_grizzly.dev.java.net
> *Sent:* Monday, December 01, 2008 4:10 PM
> *Subject:* Re: Grizzly server : Uncatched Exception GRAVE:
> WorkerThreadImpl unexpected exception:
>
> 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
>>>>
>>>>
>>>
>>
>>
>
>