Am 15.09.15 um 08:37 schrieb Konrad Windszus:
> Yes, SLING-4360 added a check if the RRF is live to the method 
> ResourceResolver.isLive(). The problem is that you have to call that method 
> explicitly.
> For me the use case is rather to detect programming mistakes like not 
> listening for ResourceResolverFactory restarts. 
> What about implicitly calling RR.isLive for every other method?

Oh, I see, every method calls checkClosed() which doesn't check the
active flag. I think we should add this there as well.

> Actually the Javadoc for all RR methods already states it will throw an 
> IllegalArgumentException if the RR has been closed already. I would expect 
> the same exception in case the resource resolver factory has been closed 
> (maybe with a different, more explicit error message).
> What was the reason why only the RR.isLive method was modified with 
> SLING-4360?

Good question :) I guess, it's just an oversight (aka bug) :)

Carsten

> Konrad
> 
> 
>> On 14 Sep 2015, at 20:57, Carsten Ziegeler <cziege...@apache.org> wrote:
>>
>> Am 14.09.15 um 18:04 schrieb Konrad Windszus:
>>> Thanks Carsten, indeed I am hitting SLING-4974.
>>> Could you point me to the commit which closes the resource resolvers after 
>>> the restart of the factory (or after some required providers become 
>>> unavailable)?
>>> I couldn’t find any related commit in 
>>> https://github.com/apache/sling/commits/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl
>>>  
>>> <https://github.com/apache/sling/commits/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl>.
>>> In which version of the resource resolver bundle is that implemented?
>>> At least with resource resolver 1.2.4 this is not the case.
>>
>> Then we might have a bug still in there, it's SLING-4360 which is
>> version 1.1.12. Afaik, we did some tests back then and it seemed to
>> work, but maybe it's not handling all cases properly?
>>
>> Regards
>> Carsten
>>
>>> Thanks,
>>> Konrad
>>>
>>>> On 14 Sep 2015, at 17:55, Carsten Ziegeler <cziege...@apache.org> wrote:
>>>>
>>>> Am 14.09.15 um 17:51 schrieb Konrad Windszus:
>>>>> Currently if the resource resolver factory is restarted (e.g. because the 
>>>>> configuration has been changed) all resource resolvers which were being 
>>>>> requested beforehand become almost useless, because they have no longer 
>>>>> any providers being bound! This means those resolvers can only be used to 
>>>>> retrieve the entry points below “/“ but nothing beyond that.
>>>>> Therefore if you forget to refresh a resource resolver after the resource 
>>>>> resolver factory has been restarted you get very weird results. One 
>>>>> example of this behaviour is being described in 
>>>>> https://issues.apache.org/jira/browse/SLING-5023.
>>>>> What about marking those resource resolvers as invalid (because they do 
>>>>> no longer have the required resource providers being bound) and let all 
>>>>> methods being called on those resource resolvers fail with an 
>>>>> IllegalStateException?
>>>>> That way those kind of programming mistakes would be more obvious!
>>>>> Thanks for your opinions on that.
>>>>> Konrad
>>>>>
>>>>>
>>>> Hi
>>>>
>>>> I think you're hitting a dub of SLING-4974 and afaik with the latest
>>>> resource resolver impl we mark the resolvers as closed :)
>>>>
>>>> Carsten
>>>>
>>>> -- 
>>>> Carsten Ziegeler
>>>> Adobe Research Switzerland
>>>> cziege...@apache.org
>>>
>>>
>>
>>
>> -- 
>> Carsten Ziegeler
>> Adobe Research Switzerland
>> cziege...@apache.org
> 
> 


-- 
Carsten Ziegeler
Adobe Research Switzerland
cziege...@apache.org

Reply via email to