You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Francois Meillet <fr...@gmail.com> on 2016/02/17 12:10:16 UTC
JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Dear Team,
The JsonRequestLogger is not working correctly:
JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Wicket : 7.2.0
Jackson : 2.7.1
JsonRequestLogger throw a JsonMappingException when executing getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException:
Infinite recursion (StackOverflowError)
(through reference chain: org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
at org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141) ~[wicket-extensions-7.2.0.jar:7.2.0]
at org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125) ~[wicket-extensions-7.2.0.jar:7.2.0]
at org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325) ~[wicket-core-7.2.0.jar:7.2.0]
at org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620) ~[wicket-core-7.2.0.jar:7.2.0]
at org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600) ~[wicket-core-7.2.0.jar:7.2.0]
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297) ~[wicket-core-7.2.0.jar:7.2.0]
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261) ~[wicket-core-7.2.0.jar:7.2.0]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) ~[jackson-databind-2.7.1.jar:2.7.1]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672) ~[jackson-databind-2.7.1.jar:2.7.1]
https://issues.apache.org/jira/browse/WICKET-6097
BTW, is it worth to mainten this logger ?
Fran�ois
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Posted by Francois Meillet <fr...@gmail.com>.
sounds good
François
Le 18 févr. 2016 à 10:43, Martin Grigorov <mg...@apache.org> a écrit :
> I'd suggest to fix it by:
> 1) in Wicket 7.x upgrade Jackson to 2.6.latest and add the second method
> 2) in Wicket 8.x upgrade to 2.7.latest and update the argument.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Feb 18, 2016 at 10:39 AM, Francois Meillet <
> francois.meillet@gmail.com> wrote:
>
>>
>> Before the 7.0.0 release, wicket-extension used
>>
>> <groupId>org.codehaus.jackson</groupId>
>> <artifactId>jackson-mapper-asl</artifactId>
>> <version>1.8.5</version>
>>
>> So no change can be done.
>>
>>
>> 7.0.0, 7.1.0 and 7.2.0 use
>>
>> <groupId>com.fasterxml.jackson.core</groupId>
>> <artifactId>jackson-databind</artifactId>
>> <version>2.4.1.3</version>
>>
>>
>>
>> JacksonAnnotationIntrospector
>>
>> /**
>> * @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead
>> */
>> @Deprecated
>> @Override
>> public Object findFilterId(AnnotatedClass ac) {
>> return _findFilterId(ac);
>> }
>>
>> @Override
>> public Object findFilterId(Annotated a) {
>> return _findFilterId(a);
>> }
>>
>> so the findFilterId(Annotated a) can be used in the JsonRequestLogger #
>> FilteredIntrospector
>>
>>
>> findFilterId(AnnotatedClass ac) has been removed from the 2.7 release.
>>
>>
>> The sole Wicket' class using Jackson I found is
>> JacksonAnnotationIntrospector,
>> so using Jackson 2.7.1 release can be done.
>> Tested. ok.
>>
>> François
>>
>>
>>
>>
>>
>>
>>
>> Le 18 févr. 2016 à 09:43, Martin Grigorov <mg...@apache.org> a écrit :
>>
>>> Good!
>>>
>>> The question now is how to introduce this change without breaking old
>>> applications.
>>> Having both methods looks like a solution but it may break if the
>>> application uses older version of Jackson.
>>> I think it should work.
>>> Can you try it ?
>>>
>>>
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet <
>>> francois.meillet@gmail.com> wrote:
>>>
>>>> Hi Martin,
>>>>
>>>> Jackson JacksonAnnotationIntrospector # findFilterId() method signature
>>>> has been changed
>>>>
>>>> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a)
>>>>
>>>>
>>>> in the JsonRequestLogger, changing this
>>>>
>>>> private static final class FilteredIntrospector extends
>>>> JacksonAnnotationIntrospector
>>>> {
>>>> @Override
>>>> public Object findFilterId(AnnotatedClass ac)
>>>> {
>>>> return "default";
>>>> }
>>>> }
>>>>
>>>>
>>>> to that resolved the problem
>>>>
>>>> private static final class FilteredIntrospector extends
>>>> JacksonAnnotationIntrospector
>>>> {
>>>> @Override
>>>> public Object findFilterId(Annotated a)
>>>> {
>>>> return "default";
>>>> }
>>>> }
>>>>
>>>>
>>>> François
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Le 18 févr. 2016 à 08:24, Martin Grigorov <mg...@apache.org> a
>> écrit :
>>>>
>>>>> Hi,
>>>>>
>>>>>
>>>>> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
>>>>> francois.meillet@gmail.com> wrote:
>>>>>
>>>>>> Dear Team,
>>>>>>
>>>>>> The JsonRequestLogger is not working correctly:
>>>>>>
>>>>>> JsonRequestLogger --> JsonMappingException --> StackOverflowError
>>>> Infinite
>>>>>> recursion
>>>>>>
>>>>>> Wicket : 7.2.0
>>>>>> Jackson : 2.7.1
>>>>>>
>>>>>> JsonRequestLogger throw a JsonMappingException when executing
>>>>>> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
>>>>>>
>>>>>> java.lang.RuntimeException:
>>>>>> com.fasterxml.jackson.databind.JsonMappingException:
>>>>>> Infinite recursion (StackOverflowError)
>>>>>> (through reference chain:
>>>>>>
>>>>
>> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
>>>>>>
>>>>>>
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
>>>>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
>>>>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
>>>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
>>>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
>>>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
>>>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
>>>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>> at
>>>>>>
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>>>
>>>>>>
>>>>>> https://issues.apache.org/jira/browse/WICKET-6097
>>>>>>
>>>>>
>>>>> I'll debug it when I have some time.
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> BTW, is it worth to mainten this logger ?
>>>>>>
>>>>>
>>>>> AFAIK Martijn and Emond use it in their application.
>>>>> But if it fails always with this then maybe they don't use it anymore.
>> Or
>>>>> they use it with an older version of Jackson. I've had some problems
>> with
>>>>> Jackson backward compatibility lately.
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> François
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError
Infinite recursion
Posted by Martin Grigorov <mg...@apache.org>.
I'd suggest to fix it by:
1) in Wicket 7.x upgrade Jackson to 2.6.latest and add the second method
2) in Wicket 8.x upgrade to 2.7.latest and update the argument.
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Thu, Feb 18, 2016 at 10:39 AM, Francois Meillet <
francois.meillet@gmail.com> wrote:
>
> Before the 7.0.0 release, wicket-extension used
>
> <groupId>org.codehaus.jackson</groupId>
> <artifactId>jackson-mapper-asl</artifactId>
> <version>1.8.5</version>
>
> So no change can be done.
>
>
> 7.0.0, 7.1.0 and 7.2.0 use
>
> <groupId>com.fasterxml.jackson.core</groupId>
> <artifactId>jackson-databind</artifactId>
> <version>2.4.1.3</version>
>
>
>
> JacksonAnnotationIntrospector
>
> /**
> * @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead
> */
> @Deprecated
> @Override
> public Object findFilterId(AnnotatedClass ac) {
> return _findFilterId(ac);
> }
>
> @Override
> public Object findFilterId(Annotated a) {
> return _findFilterId(a);
> }
>
> so the findFilterId(Annotated a) can be used in the JsonRequestLogger #
> FilteredIntrospector
>
>
> findFilterId(AnnotatedClass ac) has been removed from the 2.7 release.
>
>
> The sole Wicket' class using Jackson I found is
> JacksonAnnotationIntrospector,
> so using Jackson 2.7.1 release can be done.
> Tested. ok.
>
> François
>
>
>
>
>
>
>
> Le 18 févr. 2016 à 09:43, Martin Grigorov <mg...@apache.org> a écrit :
>
> > Good!
> >
> > The question now is how to introduce this change without breaking old
> > applications.
> > Having both methods looks like a solution but it may break if the
> > application uses older version of Jackson.
> > I think it should work.
> > Can you try it ?
> >
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet <
> > francois.meillet@gmail.com> wrote:
> >
> >> Hi Martin,
> >>
> >> Jackson JacksonAnnotationIntrospector # findFilterId() method signature
> >> has been changed
> >>
> >> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a)
> >>
> >>
> >> in the JsonRequestLogger, changing this
> >>
> >> private static final class FilteredIntrospector extends
> >> JacksonAnnotationIntrospector
> >> {
> >> @Override
> >> public Object findFilterId(AnnotatedClass ac)
> >> {
> >> return "default";
> >> }
> >> }
> >>
> >>
> >> to that resolved the problem
> >>
> >> private static final class FilteredIntrospector extends
> >> JacksonAnnotationIntrospector
> >> {
> >> @Override
> >> public Object findFilterId(Annotated a)
> >> {
> >> return "default";
> >> }
> >> }
> >>
> >>
> >> François
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> Le 18 févr. 2016 à 08:24, Martin Grigorov <mg...@apache.org> a
> écrit :
> >>
> >>> Hi,
> >>>
> >>>
> >>> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
> >>> francois.meillet@gmail.com> wrote:
> >>>
> >>>> Dear Team,
> >>>>
> >>>> The JsonRequestLogger is not working correctly:
> >>>>
> >>>> JsonRequestLogger --> JsonMappingException --> StackOverflowError
> >> Infinite
> >>>> recursion
> >>>>
> >>>> Wicket : 7.2.0
> >>>> Jackson : 2.7.1
> >>>>
> >>>> JsonRequestLogger throw a JsonMappingException when executing
> >>>> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
> >>>>
> >>>> java.lang.RuntimeException:
> >>>> com.fasterxml.jackson.databind.JsonMappingException:
> >>>> Infinite recursion (StackOverflowError)
> >>>> (through reference chain:
> >>>>
> >>
> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
> >>>>
> >>>>
> >>>> at
> >>>>
> >>
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
> >>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
> >>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
> >>>> ~[wicket-core-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
> >>>> ~[wicket-core-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
> >>>> ~[wicket-core-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
> >>>> ~[wicket-core-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
> >>>> ~[wicket-core-7.2.0.jar:7.2.0]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>> at
> >>>>
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >>>> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>>>
> >>>>
> >>>> https://issues.apache.org/jira/browse/WICKET-6097
> >>>>
> >>>
> >>> I'll debug it when I have some time.
> >>>
> >>>
> >>>>
> >>>>
> >>>> BTW, is it worth to mainten this logger ?
> >>>>
> >>>
> >>> AFAIK Martijn and Emond use it in their application.
> >>> But if it fails always with this then maybe they don't use it anymore.
> Or
> >>> they use it with an older version of Jackson. I've had some problems
> with
> >>> Jackson backward compatibility lately.
> >>>
> >>>
> >>>>
> >>>>
> >>>> François
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
>
>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Posted by Francois Meillet <fr...@gmail.com>.
Before the 7.0.0 release, wicket-extension used
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.5</version>
So no change can be done.
7.0.0, 7.1.0 and 7.2.0 use
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1.3</version>
JacksonAnnotationIntrospector
/**
* @deprecated (since 2.3) Use {@link #findFilterId(Annotated)} instead
*/
@Deprecated
@Override
public Object findFilterId(AnnotatedClass ac) {
return _findFilterId(ac);
}
@Override
public Object findFilterId(Annotated a) {
return _findFilterId(a);
}
so the findFilterId(Annotated a) can be used in the JsonRequestLogger # FilteredIntrospector
findFilterId(AnnotatedClass ac) has been removed from the 2.7 release.
The sole Wicket' class using Jackson I found is JacksonAnnotationIntrospector,
so using Jackson 2.7.1 release can be done.
Tested. ok.
François
Le 18 févr. 2016 à 09:43, Martin Grigorov <mg...@apache.org> a écrit :
> Good!
>
> The question now is how to introduce this change without breaking old
> applications.
> Having both methods looks like a solution but it may break if the
> application uses older version of Jackson.
> I think it should work.
> Can you try it ?
>
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet <
> francois.meillet@gmail.com> wrote:
>
>> Hi Martin,
>>
>> Jackson JacksonAnnotationIntrospector # findFilterId() method signature
>> has been changed
>>
>> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a)
>>
>>
>> in the JsonRequestLogger, changing this
>>
>> private static final class FilteredIntrospector extends
>> JacksonAnnotationIntrospector
>> {
>> @Override
>> public Object findFilterId(AnnotatedClass ac)
>> {
>> return "default";
>> }
>> }
>>
>>
>> to that resolved the problem
>>
>> private static final class FilteredIntrospector extends
>> JacksonAnnotationIntrospector
>> {
>> @Override
>> public Object findFilterId(Annotated a)
>> {
>> return "default";
>> }
>> }
>>
>>
>> François
>>
>>
>>
>>
>>
>>
>>
>>
>> Le 18 févr. 2016 à 08:24, Martin Grigorov <mg...@apache.org> a écrit :
>>
>>> Hi,
>>>
>>>
>>> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
>>> francois.meillet@gmail.com> wrote:
>>>
>>>> Dear Team,
>>>>
>>>> The JsonRequestLogger is not working correctly:
>>>>
>>>> JsonRequestLogger --> JsonMappingException --> StackOverflowError
>> Infinite
>>>> recursion
>>>>
>>>> Wicket : 7.2.0
>>>> Jackson : 2.7.1
>>>>
>>>> JsonRequestLogger throw a JsonMappingException when executing
>>>> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
>>>>
>>>> java.lang.RuntimeException:
>>>> com.fasterxml.jackson.databind.JsonMappingException:
>>>> Infinite recursion (StackOverflowError)
>>>> (through reference chain:
>>>>
>> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
>>>>
>>>>
>>>> at
>>>>
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
>>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
>>>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
>>>> ~[wicket-core-7.2.0.jar:7.2.0]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>> at
>>>>
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>>>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>>>
>>>>
>>>> https://issues.apache.org/jira/browse/WICKET-6097
>>>>
>>>
>>> I'll debug it when I have some time.
>>>
>>>
>>>>
>>>>
>>>> BTW, is it worth to mainten this logger ?
>>>>
>>>
>>> AFAIK Martijn and Emond use it in their application.
>>> But if it fails always with this then maybe they don't use it anymore. Or
>>> they use it with an older version of Jackson. I've had some problems with
>>> Jackson backward compatibility lately.
>>>
>>>
>>>>
>>>>
>>>> François
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>
>>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError
Infinite recursion
Posted by Martin Grigorov <mg...@apache.org>.
Good!
The question now is how to introduce this change without breaking old
applications.
Having both methods looks like a solution but it may break if the
application uses older version of Jackson.
I think it should work.
Can you try it ?
Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov
On Thu, Feb 18, 2016 at 9:35 AM, Francois Meillet <
francois.meillet@gmail.com> wrote:
> Hi Martin,
>
> Jackson JacksonAnnotationIntrospector # findFilterId() method signature
> has been changed
>
> from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a)
>
>
> in the JsonRequestLogger, changing this
>
> private static final class FilteredIntrospector extends
> JacksonAnnotationIntrospector
> {
> @Override
> public Object findFilterId(AnnotatedClass ac)
> {
> return "default";
> }
> }
>
>
> to that resolved the problem
>
> private static final class FilteredIntrospector extends
> JacksonAnnotationIntrospector
> {
> @Override
> public Object findFilterId(Annotated a)
> {
> return "default";
> }
> }
>
>
> François
>
>
>
>
>
>
>
>
> Le 18 févr. 2016 à 08:24, Martin Grigorov <mg...@apache.org> a écrit :
>
> > Hi,
> >
> >
> > On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
> > francois.meillet@gmail.com> wrote:
> >
> >> Dear Team,
> >>
> >> The JsonRequestLogger is not working correctly:
> >>
> >> JsonRequestLogger --> JsonMappingException --> StackOverflowError
> Infinite
> >> recursion
> >>
> >> Wicket : 7.2.0
> >> Jackson : 2.7.1
> >>
> >> JsonRequestLogger throw a JsonMappingException when executing
> >> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
> >>
> >> java.lang.RuntimeException:
> >> com.fasterxml.jackson.databind.JsonMappingException:
> >> Infinite recursion (StackOverflowError)
> >> (through reference chain:
> >>
> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
> >>
> >>
> >> at
> >>
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
> >> ~[wicket-extensions-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
> >> ~[wicket-extensions-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
> >> ~[wicket-core-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
> >> ~[wicket-core-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
> >> ~[wicket-core-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
> >> ~[wicket-core-7.2.0.jar:7.2.0]
> >> at
> >>
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
> >> ~[wicket-core-7.2.0.jar:7.2.0]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >> at
> >>
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> >> ~[jackson-databind-2.7.1.jar:2.7.1]
> >>
> >>
> >> https://issues.apache.org/jira/browse/WICKET-6097
> >>
> >
> > I'll debug it when I have some time.
> >
> >
> >>
> >>
> >> BTW, is it worth to mainten this logger ?
> >>
> >
> > AFAIK Martijn and Emond use it in their application.
> > But if it fails always with this then maybe they don't use it anymore. Or
> > they use it with an older version of Jackson. I've had some problems with
> > Jackson backward compatibility lately.
> >
> >
> >>
> >>
> >> François
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
>
>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite recursion
Posted by Francois Meillet <fr...@gmail.com>.
Hi Martin,
Jackson JacksonAnnotationIntrospector # findFilterId() method signature has been changed
from findFilterId(AnnotatedClass ac) to findFilterId(Annotated a)
in the JsonRequestLogger, changing this
private static final class FilteredIntrospector extends JacksonAnnotationIntrospector
{
@Override
public Object findFilterId(AnnotatedClass ac)
{
return "default";
}
}
to that resolved the problem
private static final class FilteredIntrospector extends JacksonAnnotationIntrospector
{
@Override
public Object findFilterId(Annotated a)
{
return "default";
}
}
François
Le 18 févr. 2016 à 08:24, Martin Grigorov <mg...@apache.org> a écrit :
> Hi,
>
>
> On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
> francois.meillet@gmail.com> wrote:
>
>> Dear Team,
>>
>> The JsonRequestLogger is not working correctly:
>>
>> JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite
>> recursion
>>
>> Wicket : 7.2.0
>> Jackson : 2.7.1
>>
>> JsonRequestLogger throw a JsonMappingException when executing
>> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
>>
>> java.lang.RuntimeException:
>> com.fasterxml.jackson.databind.JsonMappingException:
>> Infinite recursion (StackOverflowError)
>> (through reference chain:
>> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
>>
>>
>> at
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
>> ~[wicket-extensions-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
>> ~[wicket-core-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
>> ~[wicket-core-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
>> ~[wicket-core-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
>> ~[wicket-core-7.2.0.jar:7.2.0]
>> at
>> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
>> ~[wicket-core-7.2.0.jar:7.2.0]
>> at
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>> at
>> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
>> ~[jackson-databind-2.7.1.jar:2.7.1]
>>
>>
>> https://issues.apache.org/jira/browse/WICKET-6097
>>
>
> I'll debug it when I have some time.
>
>
>>
>>
>> BTW, is it worth to mainten this logger ?
>>
>
> AFAIK Martijn and Emond use it in their application.
> But if it fails always with this then maybe they don't use it anymore. Or
> they use it with an older version of Jackson. I've had some problems with
> Jackson backward compatibility lately.
>
>
>>
>>
>> François
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
Re: JsonRequestLogger --> JsonMappingException --> StackOverflowError
Infinite recursion
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
On Wed, Feb 17, 2016 at 12:10 PM, Francois Meillet <
francois.meillet@gmail.com> wrote:
> Dear Team,
>
> The JsonRequestLogger is not working correctly:
>
> JsonRequestLogger --> JsonMappingException --> StackOverflowError Infinite
> recursion
>
> Wicket : 7.2.0
> Jackson : 2.7.1
>
> JsonRequestLogger throw a JsonMappingException when executing
> getMapper().writeValueAsString(new RequestSessionTuple(rd, sd));
>
> java.lang.RuntimeException:
> com.fasterxml.jackson.databind.JsonMappingException:
> Infinite recursion (StackOverflowError)
> (through reference chain:
> org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->com.mycompany.SimplePage["pageReference"]->org.apache.wicket.PageReference["page"]->....
>
>
> at
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.getLogString(JsonRequestLogger.java:141)
> ~[wicket-extensions-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.extensions.requestlogger.JsonRequestLogger.log(JsonRequestLogger.java:125)
> ~[wicket-extensions-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.protocol.http.AbstractRequestLogger.performLogging(AbstractRequestLogger.java:325)
> ~[wicket-core-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.onInternalDetach(RequestCycle.java:620)
> ~[wicket-core-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:600)
> ~[wicket-core-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:297)
> ~[wicket-core-7.2.0.jar:7.2.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
> ~[wicket-core-7.2.0.jar:7.2.0]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:678)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
> ~[jackson-databind-2.7.1.jar:2.7.1]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
> ~[jackson-databind-2.7.1.jar:2.7.1]
>
>
> https://issues.apache.org/jira/browse/WICKET-6097
>
I'll debug it when I have some time.
>
>
> BTW, is it worth to mainten this logger ?
>
AFAIK Martijn and Emond use it in their application.
But if it fails always with this then maybe they don't use it anymore. Or
they use it with an older version of Jackson. I've had some problems with
Jackson backward compatibility lately.
>
>
> François
>
>
>
>
>
>
>
>
>
>
>
>
>