discomarathon / google-gson

Automatically exported from code.google.com/p/google-gson
0 stars 0 forks source link

Threading issue in FieldAttributes? #354

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
We're using gson on a high-load system, and when we recently bumped version to 
1.7.1 we're starting having sporadic exceptions as shown in the following 
stacktrace:

java.lang.NullPointerException
        at com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)
        at com.google.gson.FieldAttributes.getAnnotation(FieldAttributes.java:150)
        at com.google.gson.SerializedNameAnnotationInterceptingNamingPolicy.translateName(SerializedNameAnnotationInterceptingNamingPolicy.java:45)
        at com.google.gson.JsonSerializationVisitor.addChildAsElement(JsonSerializationVisitor.java:132)
        at com.google.gson.JsonSerializationVisitor.visitFieldUsingCustomHandler(JsonSerializationVisitor.java:206)
        at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
        at com.google.gson.JsonSerializationVisitor.getJsonElementForChild(JsonSerializationVisitor.java:147)
        at com.google.gson.JsonSerializationVisitor.addAsChildOfObject(JsonSerializationVisitor.java:127)
        at com.google.gson.JsonSerializationVisitor.visitObjectField(JsonSerializationVisitor.java:114)
        at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:69)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:62)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:53)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:643)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:624)
        at com.google.gson.JsonSerializationVisitor.findAndInvokeCustomSerializer(JsonSerializationVisitor.java:184)
        at com.google.gson.JsonSerializationVisitor.visitFieldUsingCustomHandler(JsonSerializationVisitor.java:204)
        at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:62)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:53)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:643)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:624)
        at com.google.gson.JsonSerializationVisitor.findAndInvokeCustomSerializer(JsonSerializationVisitor.java:184)
        at com.google.gson.JsonSerializationVisitor.visitFieldUsingCustomHandler(JsonSerializationVisitor.java:204)
        at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:62)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:53)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:643)
        at com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.serialize(DefaultTypeAdapters.java:624)
        at com.google.gson.JsonSerializationVisitor.findAndInvokeCustomSerializer(JsonSerializationVisitor.java:184)
        at com.google.gson.JsonSerializationVisitor.visitFieldUsingCustomHandler(JsonSerializationVisitor.java:204)
        at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:62)
        at com.google.gson.BaseMapTypeAdapter.serialize(BaseMapTypeAdapter.java:34)
        at com.google.gson.MapTypeAdapter.serialize(MapTypeAdapter.java:53)
        at com.google.gson.MapTypeAdapter.serialize(MapTypeAdapter.java:33)
        at com.google.gson.JsonSerializationVisitor.findAndInvokeCustomSerializer(JsonSerializationVisitor.java:184)
        at com.google.gson.JsonSerializationVisitor.visitUsingCustomHandler(JsonSerializationVisitor.java:160)
        at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:101)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:62)
        at com.google.gson.JsonSerializationContextDefault.serialize(JsonSerializationContextDefault.java:53)
        at com.google.gson.Gson.toJsonTree(Gson.java:220)
        at com.google.gson.Gson.toJson(Gson.java:260)
...

This doesn't happen all the time, even with the same data. The exception always 
appears on portions of code that are ran in a thread pool, and each worker 
shares the same GsonBuilder.

Original issue reported on code.google.com by aba...@gmail.com on 4 Aug 2011 at 3:19

GoogleCodeExporter commented 9 years ago
This is fixed in source. It'll be available in the next GSON release.

Original comment by limpbizkit on 5 Aug 2011 at 10:45

GoogleCodeExporter commented 9 years ago
When is planned to put Gson 1.7.2 at the market?
The Roadmap states that it was intended to July 2011.

Original comment by Ricardo....@gmail.com on 24 Aug 2011 at 7:32