Author: sdumitriu
Date: 2007-12-13 18:19:12 +0100 (Thu, 13 Dec 2007)
New Revision: 6372

Modified:
   
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
Log:
XWIKI-1951: Archive migration should be performed with one transaction per 
document
Fixed. Merged from [EMAIL PROTECTED]


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
    2007-12-13 17:16:51 UTC (rev 6371)
+++ 
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java
    2007-12-13 17:19:12 UTC (rev 6372)
@@ -23,14 +23,16 @@
 import java.sql.SQLException;
 import java.sql.Statement;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.hibernate.HibernateException;
 import org.hibernate.Session;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.hibernate.Transaction;
 
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.doc.XWikiDocumentArchive;
+import com.xpn.xwiki.store.XWikiHibernateVersioningStore;
 import com.xpn.xwiki.store.XWikiHibernateBaseStore.HibernateCallback;
 import com.xpn.xwiki.store.migration.XWikiDBVersion;
 
@@ -92,19 +94,26 @@
                         // is there easier way to find what column is not 
exist?
                         return null;
                     }
+                    Transaction originalTransaction = 
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).getTransaction(context);
+                    
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setSession(null,
 context);
+                    
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setTransaction(null,
 context);
+
                     while (rs.next()) {
                         if (logger.isInfoEnabled()) {
                             logger.info("Updating document [" + 
rs.getString(3) + "]...");
                         }
                         long docId = Long.parseLong(rs.getString(1));
                         String sArchive = rs.getString(2);
-                        if (sArchive==null)
+                        if (sArchive==null) {
                             continue;
+                        }
                         XWikiDocumentArchive docArchive = new 
XWikiDocumentArchive(docId);
                         docArchive.setArchive(sArchive);
-                        
context.getWiki().getVersioningStore().saveXWikiDocArchive(docArchive, false, 
context);
+                        
context.getWiki().getVersioningStore().saveXWikiDocArchive(docArchive, true, 
context);
                     }
                     stmt.close();
+                    
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setSession(session,
 context);
+                    
((XWikiHibernateVersioningStore)context.getWiki().getVersioningStore()).setTransaction(originalTransaction,
 context);
                 } catch (SQLException e) {
                     throw new XWikiException(XWikiException.MODULE_XWIKI_STORE,
                         XWikiException.ERROR_XWIKI_STORE_MIGRATION, getName() 
+ " migration failed", e);

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

Reply via email to