Broken attachments

Good day!
Some time ago the attachment of files broke down.upload_fail

Server log below. Please, help

> 2018-01-11 10:37:06,104 [http://192.168.80.212:8080/bin/upload/Main/WebHome] WARN  c.x.x.w.UploadAction           - Saving uploaded file failed.
> com.xpn.xwiki.XWikiException: Error number 3201 in 3: Exception while saving document xwiki:Main.WebHome
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:679)
> <------>at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:151)
> <------>at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:145)
> <------>at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:1790)
> <------>at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:1718)
> <------>at com.xpn.xwiki.web.UploadAction.uploadAttachment(UploadAction.java:222)
> <------>at com.xpn.xwiki.web.UploadAction.action(UploadAction.java:130)
> <------>at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:445)
> <------>at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:209)
> <------>at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
> <------>at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
> <------>at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
> <------>at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
> <------>at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
> <------>at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:112)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:127)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:134)
> <------>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> <------>at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> <------>at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
> <------>at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
> <------>at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
> <------>at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
> <------>at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
> <------>at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
> <------>at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
> <------>at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
> <------>at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
> <------>at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> <------>at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
> <------>at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
> <------>at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
> <------>at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> <------>at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> <------>at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> <------>at java.lang.Thread.run(Thread.java:748)
> Caused by: com.xpn.xwiki.XWikiException: Error number 3234 in 3: Exception while saving attachments attachment list of document xwiki:Main.WebHome
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveAttachmentList(XWikiHibernateStore.java:1696)
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:551)
> <------>... 54 common frames omitted
> Caused by: com.xpn.xwiki.XWikiException: Error number 3232 in 3: Exception while saving attachment [Attachment xwiki:Main.WebHome@DLINKPRIME-QOS-MIB.mib]
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveAttachment(XWikiHibernateStore.java:1765)
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveAttachmentList(XWikiHibernateStore.java:1691)
> <------>... 55 common frames omitted
> Caused by: org.xwiki.component.manager.ComponentLookupException: Can't find descriptor for the component with type [interface com.xpn.xwiki.store.XWikiAttachmentStoreInterface] and hint [void]
> <------>at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:207)
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.getXWikiAttachmentStoreInterface(XWikiHibernateStore.java:3137)
> <------>at com.xpn.xwiki.store.XWikiHibernateStore.saveAttachment(XWikiHibernateStore.java:1749)
> <------>... 56 common frames omitted

This means that you’ve configured your xwiki.cfg file to use “void”:

#-# The attachment versioning storage. Use 'void' to disable attachment versioning. [Since 3.4M1] default is hibernate.
# xwiki.store.attachment.versioning.hint=hibernate

So this means you’ve disabled attachment versioning. However I don’t know why this is breaking something in your case.

Maybe @tmortagne has an idea?

Could you give us your config in xwiki.cfg for all xwiki.store.* properties?

Thx

Sure. Here are my uncommented store.* lines

xwiki.store.main.hint=hibernate
xwiki.store.attachment.hint=file
xwiki.store.versioning.hint=hibernate
xwiki.store.attachment.versioning.hint=void
xwiki.store.attachment.recyclebin.content.hint=file
xwiki.store.migration.manager.hint=file
xwiki.store.recyclebin.content.hint=hibernate
xwiki.store.attachment.versioning=0

I think you should raise a jira issue for this on jira.xwiki.org and explain clearly how to reproduce. Thanks

The error you pasted is not related to versioning. According to it you have “void” which is set for xwiki.store.attachment.hint.

Nope, xwiki.store.attachment.hint=file
Do I understand correctly than xwiki read this parameter from /etc/xwiki/xwiki.cfg (ubuntu) and it is not overwritten anywhere else?

Yes xwiki.cfg is the only place where this can be set, maybe you have it set several times ?

No, that option set only once.
BTW, I have an interest warning on xwiki startup

[XWiki initialization] WARN onfiguredQueryExecutorProvider - Could not find a QueryExecutor with hint [hibernate] which is the hint for the storage engine, defined in your XWiki configuration under the [xwiki.store.main.hint] property. The default QueryExecutor will be used instead. Reason: [ComponentLookupException: Can’t find descriptor for the component with type [interface org.xwiki.query.QueryExecutor] and hint [hibernate]].

When I comment xwiki.store.main.hint=hibernate in xwiki.cnf that warning dissapers.

Finally reproduced and debugged this, it’s actually a bug related to the handling of xwiki.store.attachment.versioning=0. See https://jira.xwiki.org/browse/XWIKI-15336.