Spring Data Rest 2.4间歇性错误(ClassCastException)

7
使用Spring Data Rest继续工作。升级到2.4.0后,我得到了更多想要的行为,但现在我遇到了一个奇怪的间歇性异常。
大约有2/3的时间,当我重新加载或部署应用程序时,每个具有数据的SDR端点都会抛出500,并显示以下内容:
GET /api/departments
--------------------

HTTP Status 500 - Could not write content: org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer 
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer 
(through reference chain: 
org.springframework.hateoas.PagedResources["_embedded"]
->java.util.UnmodifiableMap["departments"]
->java.util.ArrayList[0]
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"]); 

nested exception is com.fasterxml.jackson.databind.JsonMappingException:
org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer 
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer 

(through reference chain: 
org.springframework.hateoas.PagedResources["_embedded"]
->java.util.UnmodifiableMap["departments"]
->java.util.ArrayList[0]
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"])

完整的错误报告可以在此处查看:http://pastebin.com/xzzXkFiR

就像我说的那样,每次重新加载/部署应用程序时并不会出现此问题,但如果出现了,它就会完全卡住,重新加载是唯一的解决方法。非常奇怪的行为,想知道是否有人有任何见解。

如果回滚到Spring Data Rest 2.3.2,则不会出现此问题。

感谢您的帮助,请让我知道我可以提供哪些其他相关信息。

  • SDR:2.4.1
  • SFW:4.2.1
  • SDJPA:1.9.0

最新版本(2.5.0 SNAPSHOT)也存在此问题。


1
你的应用程序是在Windows上运行的吗?如果是肯定的答案,我会更好地解释一下...此外,如果你正在使用Maven,请开始检查依赖层次结构,以查找重复或不一致的依赖项。 - Pavel Horal
我正在Cent 7/tomcat虚拟机和Ubuntu 12.04上运行它。 - CollinD
你能发布你的控制器类和实体吗? - Yassine.b
@Yassine.b 对不起,我前几天一直没法回复。我会尽快发布这个内容。 - CollinD
1
用户@Tim在Spring Issue Tracker中创建了一个问题:https://jira.spring.io/browse/DATAREST-716 ,如果您能贡献更多的细节,请在那里发布它们。 - Jiri Tousek
2个回答

6

在更新到Spring Data Rest 2.4.0之后,我发现存在同样的问题。该问题无法确定性地重现。目前还没有任何统计数据,但在将Jackson依赖项从2.4.0升级到2.6.0后,它发生的频率较少。有时仍然会出现,但在我这种情况下,重新加载就足够了。一个最小的示例将有助于更深入地了解它。


我会着手准备并将其上传到 GH。感谢您的输入和验证! - CollinD
2
我在创建一个最小化的示例时遇到了问题。然而,我相信这个问题只会在应用程序初始化时同时触发多个API请求时才会出现。有没有办法强制SDR测试时急切加载所有相关的bean? - CollinD
3
进一步了解,似乎它甚至只会在特定的代码库中出现问题?这是我见过的最奇怪的问题。 - CollinD
我可以确认SDR存在类似的问题。我也注意到日志中出现了“ConcurrentModificationException”。 - Ilya Novoseltsev

2

很高兴听到这个问题有解决方案。非常感谢您留下更新!我会尝试一下并查看其性能,明天很可能会接受。 - CollinD
实际上,我刚刚发现还有另一个 bug,并且会在 Gosling-SR3 中发布与此错误相关的修补补丁。请参阅 https://jira.spring.io/browse/DATAREST-743。 - jplandrain
1
已发布Gosling-SR4(不存在SR3版本)。问题已修复。https://spring.io/blog/2016/02/23/spring-data-gosling-sr4-released - jplandrain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接