ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

cancel
Showing results for 
Search instead for 
Did you mean: 
jorgevalderrama
Active Member

ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

Buenos días

En una instancia de alfresco recién hecho el upgrade estamos obteniendo los siguientes errores:

ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

Entendemos que estos errores son de solr4. Los índices se están generando, el directorio alf_data/solr4 va creciendo, pero en tomcat/logs/catalina.out aparecen estos errores de vez en cuando.

Hemos puesto la nueva versión del jar pdfbox-1.8.13.jar en tomcat/webapps/solr4/WEB-INF/lib/, pero el error sigue apareciendo en el log.

¿Sabéis por qué ocurre esto? ¿Realmente se están indexando los documentos pdf?

Gracias de antemano, saludos

3 Replies
robertoh
Active Member II

Re: ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

Buenas

Unas preguntas primero que versión de Alfresco estas usando?

Que opciones de memoria tienes configuradas para el Solr y/o Alfresco?

Son muy grandes los documentos que contiene el repositorio?

Por otro lado no solamente tienes que copiar la librería pdfbox sino también la fontbox

jorgevalderrama
Active Member

Re: ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

Buenas tardes Roberto

Se trata de Alfresco 5.1 Community (alfresco-community-installer-201605)

Respecto a las opciones de memoria hemos probado con las que vienen por defecto

JAVA_OPTS="-XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true -Dalfresco.home=/var/quark/binaries/alfresco-5 -XX:ReservedCodeCacheSize=128m $JAVA_OPTS "
JAVA_OPTS="-Xms512M -Xmx8025M $JAVA_OPTS " # java-memory-settings

y también las hemos ampliado:

JAVA_OPTS="-XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djava.awt.headless=true -Dalfresco.home=/var/quark/binaries/alfresco-5 -XX:ReservedCodeCacheSize=1024m $JAVA_OPTS "
JAVA_OPTS="-Xms14336M -Xmx14336M $JAVA_OPTS " # java-memory-settings

con ambas configuraciones tenemos el error. Finalmente nos hemos quedado con la configuración por defecto.

No tengo el detalle de los tamaños de los documentos, ya que el error no indica el documento concreto que ha provocado el error, así que no te puedo responder si son muy grandes.

¿Entonces qué nos proponéis? ¿Sólo con cambiar la fontbox ya remitirá el problema?

Gracias, saludos!

robertoh
Active Member II

Re: ERROR [pdfbox.filter.FlateFilter] [http-bio-8443-exec-14] FlateFilter: stop reading corrupt stream due to a DataFormatException

Buenas, lo primero aclara que las propuesta que hago no deben considerarse propuesta de Alfresco, ya que mi intención es colaborar con la comunidad PERSONALMENTE y no como ALFRESCO. Ya que para eso están los servicios de la enterprise.

Este error debería mitigarse copiando ambas librerías, pero he de reconocerte que no he encontrado una solución definitiva y valida para todos los casos reportados con este error, algunos es un problema de memoria y se ha solucionado ampliando la memoria y en otros caso copiando las librerias.

Para conocer si en el repositorio hay ficheros de mas de 80MB, por ejemplo, puedes usar esta query de BD:

SELECT n.id AS "Node ID",

n.store_id AS "Store ID",

round(u.content_size/1024/1024,2) AS "Size (MB)",

n.uuid AS "Document ID (UUID)",

n.audit_creator AS "Creator",

n.audit_created AS "Creation Date",

n.audit_modifier AS "Modifier",

n.audit_modified AS "Modification Date",

p1.string_value AS "Document Name",

u.content_url AS "Location"

FROM alf_node AS n,

alf_node_properties AS p,

alf_node_properties AS p1,

alf_namespace AS ns,

alf_qname AS q,

alf_content_data AS d,

alf_content_url AS u

WHERE n.id=p.node_id

AND ns.id=q.ns_id

AND p.qname_id=q.id

AND p.long_value=d.id

AND d.content_url_id=u.id

AND p1.node_id=n.id

AND p1.qname_id IN (SELECT id FROM alf_qname WHERE local_name='name')

AND round(u.content_size/1024/1024,2)>80;

con cambiar el 80 por el tamaño que se quiera buscar te dará los documentos mayores de dicho tamaño.