You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Jesse Glick (JIRA)" <ji...@apache.org> on 2012/04/24 01:22:33 UTC

[jira] [Created] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Jesse Glick created FELIX-3477:
----------------------------------

             Summary: NPE in BundleWiringImpl.searchImports
                 Key: FELIX-3477
                 URL: https://issues.apache.org/jira/browse/FELIX-3477
             Project: Felix
          Issue Type: Bug
          Components: File Install
    Affects Versions: framework.security-1.0.0
         Environment: JDK 6u31, Ubuntu
            Reporter: Jesse Glick


NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:


Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
java.lang.NullPointerException
	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	at java.lang.Class.getMethod0(Class.java:2670)
	at java.lang.Class.getMethod(Class.java:1603)
	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)

(The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)

Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Richard S. Hall (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437915#comment-13437915 ] 

Richard S. Hall commented on FELIX-3477:
----------------------------------------

After looking into Peter's scenario, it still seems to be the standard case of threads still running and trying to load classes via a bundle wiring which was disposed. The NPE makes it seem like it is an error in the framework, but technically it is not. Perhaps we should consider throwing some other sort of exception if we detect this case.
                
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Guillaume Nodet (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet updated FELIX-3477:
-----------------------------------

          Component/s:     (was: File Install)
                       Framework
    Affects Version/s:     (was: framework.security-1.0.0)
                       framework-4.0.2
    
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Jesse Glick (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13263180#comment-13263180 ] 

Jesse Glick commented on FELIX-3477:
------------------------------------

Related problems (for my reference, thrown from org.netbeans.core.osgi.OSGiLifecycleManagerTest):

java.lang.NullPointerException
	at org.apache.felix.framework.BundleRevisionImpl.getResourcesLocal(BundleRevisionImpl.java:512)
	at org.apache.felix.framework.Felix.getBundleResources(Felix.java:1543)
	at org.apache.felix.framework.BundleImpl.getResources(BundleImpl.java:650)

where getContentPath() -> [null] rather than [], presumably because m_content is null and calculateContentPath fails to consider that possibility. And:

java.lang.NullPointerException
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)
	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

because m_isDisposed is null.

Would be useful to run FindBugs over all this code and mark up aggressively with @NotNull and @CheckForNull.
                
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: File Install
>    Affects Versions: framework.security-1.0.0
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Lucas Galfaso (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13439894#comment-13439894 ] 

Lucas Galfaso commented on FELIX-3477:
--------------------------------------

Looking at Felix::stopBundle, there are two things that, maybe unrelated, can cause this
- the bundle context is set to null and then the bundle services unregistered (in a strict sense, the bundle activator should be able to handle this, but it would be nice if this was the other way around. Btw, I do not know if the order is intentional/by the spec)
- if the activator throws, then the /stopped/ event is not generated (the logic has to be wrong in other places for this to cause the exception)
                
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Peter Kriens (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13434895#comment-13434895 ] 

Peter Kriens commented on FELIX-3477:
-------------------------------------

I found another one:

java.lang.NullPointerException
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)
	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:95)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
	at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:50)
	at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:120)
	at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
	at sun.reflect.generics.repository.FieldRepository.getGenericType(FieldRepository.java:67)
	at java.lang.reflect.Field.getGenericType(Field.java:223)
	at aQute.lib.json.ObjectHandler.<init>(ObjectHandler.java:32)

                
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.2
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (FELIX-3477) NPE in BundleWiringImpl.searchImports

Posted by "Jesse Glick (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/FELIX-3477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13260106#comment-13260106 ] 

Jesse Glick commented on FELIX-3477:
------------------------------------

FWIW, a bit more information gleaned from the debugger.

The class on which getMethod is being called is something like this:

class SFS extends FileSystem implements LookupListener {
  @Override public void resultChanged(LookupEvent ev) {...}
}

where the superclass has

class FileSystem
  public void addFileChangeListener(FileChangeListener l);
  public void removeFileChangeListener(FileChangeListener l);
}

and someone has attached a weak FileChangeListener to this SFS instance. (The SFS also called addLookupListener(this) on another object.)

Now later, during bundle unloading, the weak FCL is collected, and the cleanup thread tries to call removeFCL on the SFS, so it uses Class.getMethod to find this method. But that delegates to Class.getDeclaredMethods0, which calls loadClass on LookupEvent, presumably since no lookup event happened to be delivered in the body of this test. If LookupEvent has not been preloaded (as in the FELIX-2128 workaround), an exception is thrown.

I checked in a demo class what happens if loadClass in this case does throw CNFE, since getDeclaredMethods0 does not rethrow it; seems that a NoClassDefFoundError is rethrown, which is not ideal but OK (matches what FELIX-2128 produces).
                
> NPE in BundleWiringImpl.searchImports
> -------------------------------------
>
>                 Key: FELIX-3477
>                 URL: https://issues.apache.org/jira/browse/FELIX-3477
>             Project: Felix
>          Issue Type: Bug
>          Components: File Install
>    Affects Versions: framework.security-1.0.0
>         Environment: JDK 6u31, Ubuntu
>            Reporter: Jesse Glick
>
> NetBeans unit tests in the org.netbeans.core.osgi module pass but print a lot of stack traces when run against Felix 4.0.2:
> Apr 23, 2012 7:06:57 PM org.openide.util.lookup.implspi.ActiveQueue$Daemon run
> WARNING: Cannot process org.openide.util.WeakListenerImpl$ListenerReference@1ce1bea
> java.lang.NullPointerException
> 	at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1508)
> 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
> 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> 	at java.lang.Class.getDeclaredMethods0(Native Method)
> 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
> 	at java.lang.Class.getMethod0(Class.java:2670)
> 	at java.lang.Class.getMethod(Class.java:1603)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.getRemoveMethod(WeakListenerImpl.java:614)
> 	at org.openide.util.WeakListenerImpl$ListenerReference.run(WeakListenerImpl.java:572)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Daemon.run(ActiveQueue.java:185)
> (The ActiveQueue thread in this case is looking for listeners attached via weak references which have since been collected, so that the stub listener can be cleanly detached from the observable object. It is impossible to guarantee exactly when this cleanup will run.)
> Presumably BundleRevisionImpl.m_wiring is null. searchImports should I think just treat this as if result==null. Can offer a patch if you like.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira