You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Julien Vermillard (JIRA)" <ji...@apache.org> on 2008/06/27 11:21:45 UTC

[jira] Closed: (DIRMINA-533) NPE in OrderedThreadPoolExecutor and UnorderedThreadPoolExecutor

     [ https://issues.apache.org/jira/browse/DIRMINA-533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julien Vermillard closed DIRMINA-533.
-------------------------------------


> NPE in OrderedThreadPoolExecutor and UnorderedThreadPoolExecutor
> ----------------------------------------------------------------
>
>                 Key: DIRMINA-533
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-533
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 2.0.0-M1
>            Reporter: Trustin Lee
>            Assignee: Trustin Lee
>             Fix For: 2.0.0-M2
>
>
> Quoted from the mailing list:
> 2008-02-20 (수), 20:36 +0900, 이희승 (Trustin Lee) 쓰시길:
> > 2008-02-20 (수), 08:23 +0100, Niklas Therning 쓰시길:
> > > Wilson Yeung wrote:
> > > > After sending a bunch of UDP datagrams, sleep for 30 seconds, then
> > > > this gets printed to console:
> > > >
> > > >      [java] Exception in thread "pool-1-thread-1" java.lang.NullPointerException
> > > >      [java]       at
> > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor.getSessionBuffer(OrderedThreadPoolExecutor.java:447)
> > > >      [java]       at
> > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor.access$900(OrderedThreadPoolExecutor.java:52)
> > > >      [java]       at
> > > > org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:492)
> > > >      [java]       at java.lang.Thread.run(Thread.java:613)
> > > >
> > > > And then no more messages are ever sent despite how I might try.
> > > >
> > > > If I modify OrderedThreadPoolExecutor like so:
> > > >
> > > > clara:executor wilson$ svn diff OrderedThreadPoolExecutor.java
> > > > Index: OrderedThreadPoolExecutor.java
> > > > ===================================================================
> > > > --- OrderedThreadPoolExecutor.java        (revision 627903)
> > > > +++ OrderedThreadPoolExecutor.java        (working copy)
> > > > @@ -489,7 +489,9 @@
> > > >                      }
> > > >
> > > >                      try {
> > > > -                        runTasks(getSessionBuffer(session));
> > > > +                       if (session != null) {
> > > > +                            runTasks(getSessionBuffer(session));
> > > > +                        }
> > > >                      } finally {
> > > >                          idleWorkers.incrementAndGet();
> > > >                      }
> > > >
> > > > Then all is well.  Any ideas?  Am I abusing Mina, or is it an honest
> > > > to goodness Mina bug?
> > > >
> > > > Wilson
> > > >   
> > > 
> > > Do you have a test case which triggers this problem? You should open up 
> > > a JIRA issue and attach your test case and we will have a look at it.
> > 
> > The stack trace Wilson provided is very weird.  According to the trace,
> > it seems like OrderedThreadPoolExecutor.getSessionBuffer() throws a NPE
> > because the specified session is null.  The specified session is get
> > from IoEvent object.  Now if you look into the IoEvent class, its
> > constructor throws NPE if the specified session is null.  This means
> > that the session parameter that is passed to
> > OrderedThreadPoolExecutor.getSessionBuffer() cannot be null at all.
> > 
> > So.. any clue? :(
> Ugh... my reasoning was wrong.  It's
> OrderedThreadPoolExecutor.fetchSession() that returns null, and it's
> possible.  Wilson's patch looks reasonable.  Let me fix it soon...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.