manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Wright (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CONNECTORS-936) RepositoryDocuments with binaryFieldData = null causes issues with solr
Date Fri, 16 May 2014 11:24:35 GMT

     [ https://issues.apache.org/jira/browse/CONNECTORS-936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Karl Wright resolved CONNECTORS-936.
------------------------------------

    Resolution: Fixed

r1594873

> RepositoryDocuments with binaryFieldData = null causes issues with solr
> -----------------------------------------------------------------------
>
>                 Key: CONNECTORS-936
>                 URL: https://issues.apache.org/jira/browse/CONNECTORS-936
>             Project: ManifoldCF
>          Issue Type: Bug
>          Components: CMIS connector
>    Affects Versions: ManifoldCF 1.6
>            Reporter: Cetra Free
>            Assignee: Karl Wright
>            Priority: Minor
>         Attachments: CmisRepositoryConnector.patch
>
>
> If a RepositoryDocument is ingested into an activity without an InputStream set using
the setBinary method, it causes errors with the solr output connector:
> {code}
> java.lang.IllegalArgumentException: Input stream may not be null
> 	at org.apache.http.util.Args.notNull(Args.java:48)
> 	at org.apache.http.entity.mime.content.InputStreamBody.<init>(InputStreamBody.java:70)
> 	at org.apache.http.entity.mime.content.InputStreamBody.<init>(InputStreamBody.java:58)
> 	at org.apache.manifoldcf.agents.output.solr.ModifiedHttpSolrServer.request(ModifiedHttpSolrServer.java:201)
> 	at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:199)
> 	at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
> 	at org.apache.manifoldcf.agents.output.solr.HttpPoster$IngestThread.run(HttpPoster.java:951)
> {code}
> This can be replicated by trying to ingest documents from a CMIS repository which contain
no content.
> The dirty workaround I've come up with is just to provide a Null Input Stream
> In *CmisRepositoryConnector.java*:
> Import NullInputStream from commons:
> {code}
> import org.apache.commons.io.input.NullInputStream;
> {code}
> And Change:
> {code}
>           if(fileLength>0 && document.getContentStream()!=null){
>             is = document.getContentStream().getStream();
>             rd.setBinary(is, fileLength);
>           }
> {code}
> To:
> {code}
>           if(fileLength>0 && document.getContentStream()!=null){
>             is = document.getContentStream().getStream();
>             rd.setBinary(is, fileLength);
>           } else {
>             rd.setBinary(new NullInputStream(0),0);
>           }
> {code}
> I'm not sure what the correct fix would be.  Possibly change the *RepositoryDocument*
class or handle the situation correctly in the Solr connector.
> It doesn't seem to be an issue with other repository connectors, such as FileConnector,
as they always provide an InputStream.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message