Mongodb BSON Ошибка объекта
Я использую
GroupBy groupBy = GroupBy.key("Dimension","frequency")
.initialDocument("{ value: 0 }")
.reduceFunction("function(obj, result) { " +
" result.Dimension = obj.Dimension; " +
" result.frequency = obj.frequency; " +
" result.value += obj.value; " +
"}");
с зависимостями
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.9.1</version>
</dependency>
Работает нормально с mongodb версии 3.0.3
Но выдает ошибку, когда я использую mongodb версии 3.2.0
Вот исключение
HTTP Status 500 - org.apache.cxf.interceptor.Fault: Command execution failed: Error [Failure to enumerate object], Command = { "group" : { "key" : { "Dimension" : 1 , "frequency" : 1} , "$reduce" : "function(obj, result) { result.Dimension = obj.Dimension; result.frequency = obj.frequency; result.value += obj.value; }" , "initial" : { "value" : 0} , "ns" : "projectentity" , "cond" : { "api_source_name" : { "$in" : [ "Score1"]} , "category" : { "$in" : [ "Score1"]} , "dataset" : { "$in" : [ "Score"]} , "active_flag" : { "$in" : [ "y"]}}}}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
type Exception report
message org.apache.cxf.interceptor.Fault: Command execution failed: Error [Failure to enumerate object], Command = { "group" : { "key" : { "Dimension" : 1 , "frequency" : 1} , "$reduce" : "function(obj, result) { result.Dimension = obj.Dimension; result.frequency = obj.frequency; result.value += obj.value; }" , "initial" : { "value" : 0} , "ns" : "projectentity" , "cond" : { "api_source_name" : { "$in" : [ "Score1"]} , "category" : { "$in" : [ "Score1"]} , "dataset" : { "$in" : [ "Score"]} , "active_flag" : { "$in" : [ "y"]}}}}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Command execution failed: Error [Failure to enumerate object], Command = { "group" : { "key" : { "Dimension" : 1 , "frequency" : 1} , "$reduce" : "function(obj, result) { result.Dimension = obj.Dimension; result.frequency = obj.frequency; result.value += obj.value; }" , "initial" : { "value" : 0} , "ns" : "projectentity" , "cond" : { "api_source_name" : { "$in" : [ "Score1"]} , "category" : { "$in" : [ "Score1"]} , "dataset" : { "$in" : [ "Score"]} , "active_flag" : { "$in" : [ "y"]}}}}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:322)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
org.apache.cxf.interceptor.Fault: Command execution failed: Error [Failure to enumerate object], Command = { "group" : { "key" : { "Dimension" : 1 , "frequency" : 1} , "$reduce" : "function(obj, result) { result.Dimension = obj.Dimension; result.frequency = obj.frequency; result.value += obj.value; }" , "initial" : { "value" : 0} , "ns" : "projectentity" , "cond" : { "api_source_name" : { "$in" : [ "Score1"]} , "category" : { "$in" : [ "Score1"]} , "dataset" : { "$in" : [ "Score"]} , "active_flag" : { "$in" : [ "y"]}}}}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162)
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:94)
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
org.springframework.dao.InvalidDataAccessApiUsageException: Command execution failed: Error [Failure to enumerate object], Command = { "group" : { "key" : { "Dimension" : 1 , "frequency" : 1} , "$reduce" : "function(obj, result) { result.Dimension = obj.Dimension; result.frequency = obj.frequency; result.value += obj.value; }" , "initial" : { "value" : 0} , "ns" : "projectentity" , "cond" : { "api_source_name" : { "$in" : [ "Score1"]} , "category" : { "$in" : [ "Score1"]} , "dataset" : { "$in" : [ "Score"]} , "active_flag" : { "$in" : [ "y"]}}}}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
org.springframework.data.mongodb.core.MongoTemplate.handleCommandError(MongoTemplate.java:1566)
org.springframework.data.mongodb.core.MongoTemplate.group(MongoTemplate.java:1068)
com.org.project.repo.repositories.repository.getMetadataDetails(repository.java:253)
com.org.project.repo.business.repoDataBoEntity.getMetadataDetails(repoDataBoEntity.java:580)
com.org.project.endpoints.PublicData.getMetadataDetails(PublicData.java:304)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:94)
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
com.mongodb.CommandResult$CommandFailure: command failed [group]: { "serverUsed" : "/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "Failure to enumerate object" , "code" : 139}
com.mongodb.CommandResult.getException(CommandResult.java:88)
com.mongodb.CommandResult.throwOnError(CommandResult.java:134)
org.springframework.data.mongodb.core.MongoTemplate.handleCommandError(MongoTemplate.java:1560)
org.springframework.data.mongodb.core.MongoTemplate.group(MongoTemplate.java:1068)
com.org.project.repo.repositories.repository.getMetadataDetails(repository.java:253)
com.org.project.repo.business.repoDataBoEntity.getMetadataDetails(repoDataBoEntity.java:580)
com.org.project.endpoints.PublicData.getMetadataDetails(PublicData.java:304)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:94)
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:187)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:115)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.9 logs.
Apache Tomcat/8.0.9
Пожалуйста, помогите мне. Что я делаю неправильно?
Заранее спасибо.
1 ответ
Не то, что вы сделали, это была ошибка, введенная в 3.2, исправленная в 3.4. При обновлении с 2,6 -> 3,0 -> 3,2 -> 3,4 это нас тоже укусило