Vadim Gritsenko wrote:
Hey all,
There is some issue with cocoon:// protocol that I can't wrap my head around... It is blocking 2.1.6 release. NullPointerException occurs when request's pipeline uses / includes another pipeline via cocoon:// protocol. It is reproducable using multiple samples:
http://localhost:8888/samples/aggregation/aggregate http://localhost:8888/samples/aggregation/aggregate2 http://localhost:8888/samples/modules/index.html http://localhost:8888/samples/test/reader-mime-type/test20.html
etc. Last one is the simpliest. Stacktrace in the last case is below. When trying to debug I found out this sequence:
* "cocoon://test10.html" reader: ResourceReader.recycle()
* "cocoon://test10.html" source: SitemapSource.reset()
* CocoonComponentManager.endProcessing()
* EnvironmentWrapper instance: AbstractEnvironment.finishProcessing()
Here sourceResolver is set to null!
* Back to CocoonComponentManager.endProcessing() which calls:
* EnvironmentDescription.release()
* "test10.html" reader: ResourceReader.recycle()
* EnvironmentWrapper instance: AbstractEnvironment.release()
Here sourceResolver is already null!
Any ideas?
I just committed a fix for this. My rationale:
CocoonComponentManager.EnvironmentDescriptor depends on Environment. But in CocoonComponentManager.endProcessing EnvironmentDescriptor is released *before* Environment is cleaned. According to the direction of the dependency this should be the other way around.
I already tried this; but it failed with something else... I'll re-try and post results...
Vadim
