Linux Raven DB 4.1.2在Java中挂起了流式查询

Linux Raven DB 4.1.2在Java中挂起了流式查询,linux,jax-rs,ravendb,tomcat8,java-11,Linux,Jax Rs,Ravendb,Tomcat8,Java 11,我有一个基于jax rs的REST服务,我在64位Linux上的Tomcat8.5上运行,使用Java11;此服务连接到同样在同一台Linux机器上的Ravendb4.1.2实例。我使用流式查询返回请求结果。我使用邮递员提交同样的请求,一切都很顺利:结果会很快返回 然而,它只能工作10次。当我第11次提交与之前相同的请求时,results=currentSession.advanced().stream(查询)行挂起且不返回。 起初,我认为我可能与StreamingOutput或OutputSt

我有一个基于jax rs的REST服务,我在64位Linux上的Tomcat8.5上运行,使用Java11;此服务连接到同样在同一台Linux机器上的Ravendb4.1.2实例。我使用流式查询返回请求结果。我使用邮递员提交同样的请求,一切都很顺利:结果会很快返回

然而,它只能工作10次。当我第11次提交与之前相同的请求时,
results=currentSession.advanced().stream(查询)行挂起且不返回。
起初,我认为我可能与
StreamingOutput
OutputStreamWriter
未正确关闭有关。或者可能与
响应有关,但在调试模式下,当我在Eclipse中逐步浏览部署的代码时,我注意到执行挂起在该流线上。
(我发现正好10倍是一个特别的“人类选择”的数字…)

我的代码的相关部分:

@GET
@Path("/abcntr/{ccode}/{st}/{zm}") 
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.TEXT_PLAIN)
public Response retrieveInfo(@PathParam("ccode") String ccode, @PathParam("st") String st, @PathParam("zm") String zm)
{
    (...)
    StreamingOutput adminAreaStream = new StreamingOutput()
    {
        ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();

        @Override
        public void write(OutputStream output) throws IOException, WebApplicationException
        {
            try(IDocumentSession currentSession = ServiceListener.ravenDBStore.openSession())
            {
                Writer writer = new BufferedWriter(new OutputStreamWriter(output));
                (...)
                if(indexToBeQueried.startsWith("Level0"))
                {                                         
                    IDocumentQuery<AdministrativeArea> query = currentSession.query(area.class, Query.index(indexToBeQueried))
                            .whereEquals("i", ccode);
                    results = currentSession.advanced().stream(query); 
                }
                else 
                {
                    IDocumentQuery<AdministrativeArea> query = currentSession.query(area.class, Query.index(indexToBeQueried))
                            .whereEquals("i", ccode)
                            .andAlso()
                            .whereEquals("N1", sName);
                    results = currentSession.advanced().stream(query);  // THIS IS WHERE IT DOESNT COME BACK
                }
                while(results.hasNext())
                {
                    StreamResult<AdministrativeArea> adma = results.next();  
                    adma.getDocument().properties = retrievePropertiesForArea(adma.getDocument(), currentSession);
                    writer.write(ow.writeValueAsString(adma.getDocument()));
                    writer.write(",");
                }

                (...)
                currentSession.advanced().clear();
                currentSession.close();
            }
            catch (Exception e)
            {
                System.out.println("Exception: " + e.getMessage() + e.getStackTrace());
            }
        }
    };

    if(!requestIsValid)
        return Response.status(400).build();
    else
        return Response.ok(adminAreaStream).build();
}
谢谢你能给我的任何调查提示

更新:
将编译器和Tomcat JVM移回Java1.8时也是如此

它似乎与Java11(或1.8)无关,只是它把我的注意力转移到了close
CloseableIterator结果上添加一个简单的
结果后关闭()一切似乎都正常工作。如果这不是解决方案,我会回来更新。

它似乎与Java 11(或1.8)无关,只是它让我忽略了close
CloseableIterator结果添加一个简单的
结果后关闭()一切似乎都正常工作。如果这不是解决方案,我会回来更新。

我开始投资的第一件事是项目中使用的底层框架和库的兼容性(与Java-11)。然后进一步确保类似配置是否适用于以前的LTS(Java-8)或not@nullpointer:在我升级到Java 11之前,一切正常。我想,在我拥有的众多依赖项中(即使它们已经通过了Java 11认证),至少有一个是有问题的。我首先要投资的是我项目中使用的底层框架和库的兼容性(与Java-11)。然后进一步确保类似配置是否适用于以前的LTS(Java-8)或not@nullpointer:在我升级到Java 11之前,一切正常。我想,在我拥有的众多依赖项中(即使它们已经用Java11进行了认证),至少有一个是违规的。
System.ArgumentNullException: Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate)
   at Raven.Server.Documents.Handlers.Debugging.QueriesDebugHandler.QueriesCacheList() in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Handlers\Debugging\QueriesDebugHandler.cs:line 181
   at Raven.Server.ServerWide.LocalEndpointClient.InvokeAsync(RouteInformation route, Dictionary`2 parameters) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\ServerWide\LocalEndpointClient.cs:line 61
   at Raven.Server.ServerWide.LocalEndpointClient.InvokeAndReadObjectAsync(RouteInformation route, JsonOperationContext context, Dictionary`2 parameters) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\ServerWide\LocalEndpointClient.cs:line 91
   at Raven.Server.Documents.Handlers.Debugging.ServerWideDebugInfoPackageHandler.WriteForDatabase(ZipArchive archive, JsonOperationContext jsonOperationContext, LocalEndpointClient localEndpointClient, String databaseName, String path) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Handlers\Debugging\ServerWideDebugInfoPackageHandler.cs:line 311