From: <vga...@us...> - 2010-02-19 20:14:06
|
Revision: 514 http://treebase.svn.sourceforge.net/treebase/?rev=514&view=rev Author: vgapeyev Date: 2010-02-19 20:13:59 +0000 (Fri, 19 Feb 2010) Log Message: ----------- More granular DB commits during data uploading. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/util/BulkUpload.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/util/BulkUpload.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/util/BulkUpload.java 2010-02-17 22:54:26 UTC (rev 513) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/util/BulkUpload.java 2010-02-19 20:13:59 UTC (rev 514) @@ -138,7 +138,8 @@ User submitter = null; // No submitter //Study s = bulkUpload.addFileSimple(new File(dirName, fn), submitter, session); - Study s = addFilesSimple(undoneFiles, submitter, null); + //Study s = addFilesSimple(undoneFiles, submitter, null); //VG 2010-02-18 -- see comment at the method + Study s = addFilesOneByOne(undoneFiles, submitter); if (s == null) { log("conversion of files failed"); } else { @@ -161,6 +162,7 @@ ContextManager.getTaxonLabelHome().flush(); } + //VG this is not used: the only use is commented out Study addFileSimple(File f, User aUser, Session session) throws IOException { List<File> theFile = new LinkedList<File> (); theFile.add(f); @@ -168,6 +170,11 @@ return addFilesSimple(theFile, aUser, session); } + //VG 2010-02-18 stopped using this method + //This method commits matrices, but not trees or the files. + //Uncommenting the commitTransaction() call does not help much, + //since then all trees and files are bundled into a huge transaction, + //where a single failure scraps uploads of all prior trees and files (but not matrices!) public Study addFilesSimple(List<File> files, User aUser, Session session) throws IOException { //Transaction t = session.beginTransaction(); Submission sub = getPseudoSubmission(); @@ -182,6 +189,27 @@ return study; } + //VG 2010-02-18 This fixes the deficiency of addFilesSimple by committing each file upload. + public Study addFilesOneByOne(List<File> files, User aUser) throws IOException { + Submission sub = getPseudoSubmission(); + Study study = sub.getStudy(); + log("submission ID = " + sub.getId() + " study ID " + study.getId()); + + int countMatrices = 0, countTrees = 0; + for (File f : files) { + beginTransaction(); + List<File> theFile = new LinkedList<File> (); + theFile.add(f); + UploadFileResult uploadResult = ContextManager.getSubmissionService().addNexusFilesJDBC(sub, theFile, null); + commitTransaction(); + log("added " + uploadResult.getMatrixCount() + " matrices and " + uploadResult.getTreeCount() + " trees."); + countMatrices += uploadResult.getMatrixCount(); + countTrees += uploadResult.getTreeCount(); + } + log("Added in his batch: " + countMatrices + " matrices, " + countTrees + " trees."); + return study; + } + private static Submission getPseudoSubmission() { return PseudoSubmission.getPseudoSubmission("TEST"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |