Author: vmassol
Date: 2008-01-25 10:03:25 +0100 (Fri, 25 Jan 2008)
New Revision: 7077

Modified:
   
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
Log:
XWIKI-2034: Parse error (encountered EOF) while migrating the database


Modified: 
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
===================================================================
--- 
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
    2008-01-24 23:15:52 UTC (rev 7076)
+++ 
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
    2008-01-25 09:03:25 UTC (rev 7077)
@@ -98,7 +98,7 @@
                     Transaction originalTransaction = 
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).getTransaction(context);
                     
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setSession(null,
 context);
                     
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setTransaction(null,
 context);
-                    PreparedStatement deleleteStatement = 
session.connection().prepareStatement("update xwikidoc set XWD_ARCHIVE=null 
where XWD_ID=?");
+                    PreparedStatement deleteStatement = 
session.connection().prepareStatement("update xwikidoc set XWD_ARCHIVE=null 
where XWD_ID=?");
 
                     while (rs.next()) {
                         if (logger.isInfoEnabled()) {
@@ -106,13 +106,20 @@
                         }
                         long docId = Long.parseLong(rs.getString(1));
                         String sArchive = rs.getString(2);
-                        XWikiDocumentArchive docArchive = new 
XWikiDocumentArchive(docId);
-                        docArchive.setArchive(sArchive);
-                        
context.getWiki().getVersioningStore().saveXWikiDocArchive(docArchive, true, 
context);
-                        deleleteStatement.setLong(1, docId);
-                        deleleteStatement.executeUpdate();
+
+                        // In some weird cases it can happen that the 
XWD_ARCHIVE field is empty (that shouldn't happen but we've seen it happening).
+                        // In this case just ignore the archive...
+                        if (sArchive.trim().length() != 0) {
+                            XWikiDocumentArchive docArchive = new 
XWikiDocumentArchive(docId);
+                            docArchive.setArchive(sArchive);
+                            
context.getWiki().getVersioningStore().saveXWikiDocArchive(docArchive, true, 
context);
+                        } else {
+                            LOG.warn("Empty revision found for document [" + 
rs.getString(3) + "]. Ignoring non-fatal error.");
+                        }
+                        deleteStatement.setLong(1, docId);
+                        deleteStatement.executeUpdate();
                     }
-                    deleleteStatement.close();
+                    deleteStatement.close();
                     stmt.close();
                     
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setSession(session,
 context);
                     
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setTransaction(originalTransaction,
 context);

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to