Re: [xwiki-users] Bug : unable to delete attached files in virtualwikis
Niels, Thank you again. I changed the configuration to disable the recycle bin and now i am able to delete attached files I disabled also for pages and it works too. -----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de Niels Mayer Envoyé : samedi 7 mars 2009 10:47 À : XWiki Users Objet : Re: [xwiki-users] Bug : unable to delete attached files in virtualwikis I had a similar problem, with attachments not being deletable, which also prevented the document itself from being deleted. Unfortunately, this also suggested an additional issue arising with attachments. If a user makes large attachments to their user-document, e.g. XWiki.MyName then even in a "closed" wiki that only allows users to edit their own user document, they can cause a denial of service attack through large attachments. In other words, even if the wiki is setup so that regular registered XWikiAllGroup users don't have write access to any directory, just comment-access to documents; they'll still have write access to their own XWiki.MyName document created through registration... and that means they'll be able to add attachments even when you think they couldn't. The "Rights" adminstration checkbox "Prevent unregistered users from editing pages, regardless of the page or space rights" doesn't prevent attachments from being added to user's own pages. Anyways, I ended up solving the blowups and OOM errors by deleting the attachments directly in the database: mysql> select XWA_ID,XWA_DOC_ID,XWA_FILENAME,XWA_SIZE,XWA_AUTHOR from xwikiattachment where XWA_AUTHOR='XWiki.JG'; | XWA_ID | XWA_DOC_ID | XWA_FILENAME | XWA_SIZE | XWA_AUTHOR| | 1185703559 | 168880978 | foo.pdf | 9817587 | XWiki.JG | | -352107721 | 168880978 | bar.pdf | 13049680 | XWiki.JG | | 1527849923 | 168880978 | baz.pdf | 293 | XWiki.JG | | -2073884056 | 168880978 | frop.pdf | 5904061 | XWiki.JG | | 1039500510 | 168880978 | schlop.pdf | 4440028 | XWiki.JG | | 942569068 | 168880978 | plop.pdf | 14033466 | XWiki.JG | | 1363529635 | 168880978 | schnops.pdf | 0 | XWiki.JG | | -1054875919 | 168880978 | hops.jpg | 3081 | XWiki.JG | 8 rows in set (0.00 sec) mysql> delete from xwikiattachment where XWA_AUTHOR='XWiki.JG'; Query OK, 8 rows affected (0.00 sec) Someone please tell me if this is not the right way to fix such issues... As afterthought, I realized that setting xwiki.store.attachment.versioning.hint=void in xwiki.cfg might prevent xwiki from reading/diffing and attempting to version a large attachment. Doing so could certainly make it run out of memory, and changing this option might prevent the bug?: #-# The attachment versioning storage. Use 'void' to disable attachment versioning. # xwiki.store.attachment.versioning.hint=default Also, perhaps by not sending deleted attachments to the recycle bin, it won't need to be copied anywhere, and therefore there'll not be any memory to run out copying a giant attachment through java (assuming that's what happens on delete). #-# The attachment recycle bin storage. # xwiki.store.attachment.recyclebin.hint=default Niels http://nielsmayer.com PS: perhaps the defaults for xwiki.store.attachment.versioning.hint and xwiki.store.attachment.recyclebin.hint need to be changed? On Fri, Mar 6, 2009 at 2:37 AM, PERINAUD Christophe < [email protected]> wrote:
Hello (again)
All is ok in the main wiki but in a virtual wiki i can't delete an attached file of a page. After the confirmation message i got :
A problem occured while trying to service your request. Please contact the support if this happens again.
Detailed information:
Error number 0 in 3: Exception while hibernate execute Wrapped Exception: could not get next sequence value com.xpn.xwiki.XWikiException: Error number 0 in 3: Exception while hibernate execute Wrapped Exception: could not get next sequence value at com.xpn.xwiki.store.XWikiHibernateBaseStore.execute(XWikiHibernateBaseStore.java:1052) at com.xpn.xwiki.store.XWikiHibernateBaseStore.executeWrite(XWikiHibernateBaseStore.java:1098) at com.xpn.xwiki.store.hibernate.HibernateAttachmentRecycleBinStore.saveToRecycleBin(HibernateAttachmentRecycleBinStore.java:83) at com.xpn.xwiki.doc.XWikiDocument.deleteAttachment(XWikiDocument.java:2799) at com.xpn.xwiki.doc.XWikiDocument.deleteAttachment(XWikiDocument.java:2782) at com.xpn.xwiki.web.DeleteAttachmentAction.action(DeleteAttachmentAction.java:72) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:215) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:115) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:596) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830) at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:135) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.web.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:287) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1565) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1517) at org.mortbay.http.HttpServer.service(HttpServer.java:954) at org.mortbay.http.HttpConnection.service(HttpConnection.java:816) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:983) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Wrapped Exception:
java.sql.SQLException: ORA-02289: sequence does not exist
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:204) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1203) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) at com.xpn.xwiki.store.hibernate.HibernateAttachmentRecycleBinStore$1.doInHibernate(HibernateAttachmentRecycleBinStore.java:87) at com.xpn.xwiki.store.XWikiHibernateBaseStore.execute(XWikiHibernateBaseStore.java:1046) at com.xpn.xwiki.store.XWikiHibernateBaseStore.executeWrite(XWikiHibernateBaseStore.java:1098) at com.xpn.xwiki.store.hibernate.HibernateAttachmentRecycleBinStore.saveToRecycleBin(HibernateAttachmentRecycleBinStore.java:83) at com.xpn.xwiki.doc.XWikiDocument.deleteAttachment(XWikiDocument.java:2799) at com.xpn.xwiki.doc.XWikiDocument.deleteAttachment(XWikiDocument.java:2782) at com.xpn.xwiki.web.DeleteAttachmentAction.action(DeleteAttachmentAction.java:72) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:215) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:115) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:596) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830) at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:135) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.web.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:287) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at com.xpn.xwiki.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1565) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1517) at org.mortbay.http.HttpServer.service(HttpServer.java:954) at org.mortbay.http.HttpConnection.service(HttpConnection.java:816) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:983) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Again it's an Oracle problem. Any idea if it's because of the shema used or a DBA problem (admin Db team followed instructions from web site to allow all rigts to the xwiki user) ?
Thank you
System : Windows Server 2003 SP2 in a VMWare instance Oracle 10g Java 1.6.0_12 Xwiki 1.7.1 from the pack Jetty/HSQL
Christophe Périnaud
--------------------------------------------------------------------------------
This e-mail is intended only for the addressee named above. It does not bind the sender, except in the case of an existing written convention with the addressee. This e-mail may contain material that is confidential and privileged for the sole use of the intended recipient. Any review, reliance or distribution by others or forwarding without express permission is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender and delete all copies.
While reasonable precautions have been taken to ensure that this e-mail and any attachments are free from any computer virus or similar defect, no liability will be accepted in that respect. Anyone accessing this e-mail must take their own precautions as to security and virus protection.
KBL European Private Bankers S.A., 43 boulevard Royal L-2955 Luxembourg, R.C.S. Luxembourg B 6395, T (352) 47 97 1 _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users -------------------------------------------------------------------------------- This e-mail is intended only for the addressee named above. It does not bind the sender, except in the case of an existing written convention with the addressee. This e-mail may contain material that is confidential and privileged for the sole use of the intended recipient. Any review, reliance or distribution by others or forwarding without express permission is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender and delete all copies. While reasonable precautions have been taken to ensure that this e-mail and any attachments are free from any computer virus or similar defect, no liability will be accepted in that respect. Anyone accessing this e-mail must take their own precautions as to security and virus protection. KBL European Private Bankers S.A., 43 boulevard Royal L-2955 Luxembourg, R.C.S. Luxembourg B 6395, T (352) 47 97 1
Christophe -- Thanks for testing this. Your confirmation suggests I will follow your lead. Unfortunately, I only noticed the xwiki.cfg options that control this after i deleted them directly from the database in SQL: Here are the xwiki.cfg settings I'm using to achieve this: #-# Whether the document recycle bin feature is activated or not # xwiki.recyclebin=1 #-# Whether the attachment recycle bin feature is activated or not storage.attachment.recyclebin=0 #-# Whether the document versioning feature is activated or not # xwiki.store.versioning=1 #-# Whether the attachment versioning feature is activated or not xwiki.store.attachment.versioning=0 #-# Whether the attachments should also be rolled back when a document is reverted. xwiki.store.rollbackattachmentwithdocuments=0 It appears that xwiki.cfg setting xwiki.store.attachment.versioning.hint=void is redundant with xwiki.store.attachment.versioning=0 Question for all: Is the latter the preferable way of turning off attachment versionining? Niels http://nielsmayer.com PS: doesn't it make sense to avoid such problems in the future and bypass the recycle bin for deleted attachments. Alternately, some kind of heuristic could be employed, as the default, e.g. the recylcle-bin is used to hold deleted attachments, except when the attachments exceed a certain size, say 1Mb. In that case the user is warned of permanent deletion and can "ok" it away.
participants (2)
-
Niels Mayer -
PERINAUD Christophe