首页 > 解决方案 > GraphDB post Sparql-File 错误:处理程序调度失败;嵌套异常是 java.lang.StackOverflowError

问题描述

使用 curl 发布正确的大 Sparql 文件(包含删除和更新)时,

 curl -X POST --data-binary @hashtag.sparql -H "Accept: application/rdf+xml" -H "Content-type: application/sparql-update"  http://localhost:7200/repositories/test/statements

我收到以下错误消息

Handler dispatch failed; nested exception is java.lang.StackOverflowError

并且日志文件包含

at org.eclipse.rdf4j.query.parser.sparql.ast.SyntaxTreeBuilder.UpdateSequence(SyntaxTreeBuilder.java:116)

这是我可以以某种方式解决的问题,还是 GraphDB 中的错误?

标签: sparqlgraphdbrdf4j

解决方案


这是 GraphDB 使用的 RDF4J SPARQL 解析器中的一个问题,它使用递归调用来解析更新序列。显然,您的更新序列对于系统上的默认 JVM 堆栈来说太大了。

您可以通过将 JVM 配置为使用更大的堆栈(例如-Xss:512k,或您发现需要的任何大小)来解决此问题,或者将您的大更新文件分成两个。

不过,根本原因需要在 SPARQL 解析器中进行修复。考虑到这一点,我已经记录了此问题的错误报告:https ://github.com/eclipse/rdf4j/issues/3328 。


推荐阅读