You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Juan José (JIRA)" <ji...@apache.org> on 2016/11/10 16:17:58 UTC

[jira] [Commented] (SOLR-8339) SolrDocument and SolrInputDocument should have a common interface

    [ https://issues.apache.org/jira/browse/SOLR-8339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15654439#comment-15654439 ] 

Juan José commented on SOLR-8339:
---------------------------------

When upgrade Apache Solr from version 4.10 to 5.0.0, the parse serialization is not working from SolrDocument class to json.
we use library com.fasterxml.jackson.core:jackson-databind:2.5.4 for json parsing. We are getting this exception:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError
	org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1302)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)


   causa raíz
            java.lang.StackOverflowError
	com.fasterxml.jackson.databind.type.HierarchicType.getRawClass(HierarchicType.java:74)
	com.fasterxml.jackson.databind.type.TypeFactory._doFindSuperInterfaceChain(TypeFactory.java:1009)
	com.fasterxml.jackson.databind.type.TypeFactory._findSuperInterfaceChain(TypeFactory.java:1004)
	com.fasterxml.jackson.databind.type.TypeFactory._findSuperTypeChain(TypeFactory.java:958)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:285)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)
	com.fasterxml.jackson.databind.type.TypeFactory._fromClass(TypeFactory.java:732)
	com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:387)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:303)
	com.fasterxml.jackson.databind.type.TypeFactory.findTypeParameters(TypeFactory.java:279)
	com.fasterxml.jackson.databind.type.TypeFactory._mapType(TypeFactory.java:891)


We solved this error getting fields manually from the map _field, the code is:
public List<Object> transformSolrDocumentsListToDocuments(SolrDocumentList searched) {
	List<Object> documents = new ArrayList<>();
	for (SolrDocument solrDocument : searched) {
		Map<String, Object> fields = new HashMap<>();
		for (String key : solrDocument.getFieldValueMap().keySet()) {
			Object field = solrDocument.getFieldValue(key);
			fields.put(key, field);
		}
		documents.add(fields);
	}

	return documents;
} 

> SolrDocument and SolrInputDocument should have a common interface
> -----------------------------------------------------------------
>
>                 Key: SOLR-8339
>                 URL: https://issues.apache.org/jira/browse/SOLR-8339
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: Ishan Chattopadhyaya
>            Assignee: Shalin Shekhar Mangar
>             Fix For: 5.5, 6.0
>
>         Attachments: SOLR-8339.patch, SOLR-8339.patch, SOLR-8339.patch, SOLR-8339.patch
>
>
> Currently, both share a Map interface (SOLR-928). However, there are many common methods like createField(), setField() etc. that should perhaps go into an interface/abstract class.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org