You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Sahoo (JIRA)" <ji...@apache.org> on 2011/01/19 17:56:43 UTC

[jira] Updated: (FELIX-2791) NPE in getStartLevel

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

Sahoo updated FELIX-2791:
-------------------------

    Comment: was deleted

(was: Even better would be to synchronize start() and stop() methods in FileInstall instead of always paying the cost of making the field volatile.)

> NPE in getStartLevel
> --------------------
>
>                 Key: FELIX-2791
>                 URL: https://issues.apache.org/jira/browse/FELIX-2791
>             Project: Felix
>          Issue Type: Bug
>          Components: File Install
>    Affects Versions: fileinstall-3.1.4
>            Reporter: Sahoo
>            Priority: Blocker
>             Fix For: fileinstall-3.1.6
>
>
> We are using FileInstall 3.1.4 and one of our user is seeing the following exception repeated in the directory watcher main loop continuously:
> java.lang.NullPointerException
>         at org.apache.felix.fileinstall.internal.FileInstall.getStartLevel(FileInstall.java:283)
>         at org.apache.felix.fileinstall.internal.FileInstall.getStartLevel(FileInstall.java:276)
>         at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:237)
> In main loop, we have serious trouble: java.lang.NullPointerException
> NPE comes from FileInstall.java:283, which looks like this:
>             return (StartLevel) startLevel.waitForService(timeout);
> It looks like a concurrency bug to me in FileInstall. The only explanation that I have so far is that in the target environment, code is getting reordered and hence directory watcher thread is spwaned before startLevel is initialzed.. Since startLevel is not declared volatile, nor is it accessed from a synchronized block, DirectoryWatcher thread continues to see the stale value.
> So, I suggest we change startLevel to a volatile field. Any comments?

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