def retry_folder (repo, folderpath, id): try: if os.path.exists(os.path.join(folderpath, "LOCK")): os.unlink(os.path.join(folderpath, "LOCK")) # if CODETIMER_ON: # code_timer.Init() # code_timer.CreateTable("uplib") # code_timer.CodeTimerOn() # else: # code_timer.CodeTimerOff() _finish_inclusion (repo, folderpath, id) # if CODETIMER_ON: # noteOut = StringIO.StringIO() # noteOut.write("\nCode Timer statistics (what took time, in milliseconds):\n") # code_timer.PrintTable(noteOut, "uplib") # noteOut.write("\n") # noteOutString = noteOut.getvalue() # note(3, noteOutString) except AbortDocumentIncorporation, x: # ripper signalled to stop adopting this document, for good note(2, "AbortDocumentIncorporation exception on %s: %s", x.id, x.message) if (x.id == id): shutil.rmtree(folderpath) remove_from_index(repo.index_path(), id)
def flesh_out_folder(id, tmpfilename, metadata, repo, unpack_fn, counter): try: try: # note(3, "CODETIMER_ON is %s", CODETIMER_ON) # if CODETIMER_ON: # code_timer.Init() # code_timer.CreateTable("uplib") # code_timer.CodeTimerOn() # code_timer.StartInt("newFolder$unpack", "uplib") # else: # code_timer.CodeTimerOff() if unpack_fn and tmpfilename and os.path.exists(tmpfilename): unpack_fn(repo, id, tmpfilename, metadata) # if CODETIMER_ON: # code_timer.StopInt("newFolder$unpack", "uplib") folderpath = repo.pending_location(id) try: note("unpacked new folder in %s", folderpath) if not sys.platform.lower().startswith("win"): s, o, t = subproc("ls -Rl %s" % folderpath) note("%s\n" % o) fp = open(os.path.join(folderpath, "UNPACKED"), 'w') fp.flush() fp.close() # as of this point, we can restart the inclusion of the document md = read_metadata(os.path.join(folderpath, "metadata.txt")) replacement_id = md.get("replacement-contents-for") if replacement_id: if repo.valid_doc_id(replacement_id): # contents to replace another document md["replacement-contents-for"] = "" update_metadata(os.path.join(folderpath, "metadata.txt"), md) note(2, "replacing contents of %s with this data...", replacement_id) existing_document = repo.get_document(replacement_id) new_folder = existing_document.folder() process_folder(repo, replacement_id, folderpath, false, new_folder) _run_rippers(new_folder, repo, replacement_id) existing_document.recache() repo.touch_doc(existing_document) raise AbortDocumentIncorporation(id, "replacement for existing document %s" % replacement_id) else: raise AbortDocumentIncorporation(id, "replacement for non-existent document %s" % replacement_id) _finish_inclusion (repo, folderpath, id) # if CODETIMER_ON: # noteOut = StringIO.StringIO() # noteOut.write("\nCode Timer statistics (what took time, in milliseconds):\n") # code_timer.PrintTable(noteOut, "uplib") # noteOut.write("\n") # noteOutString = noteOut.getvalue() # note(3, noteOutString) except: type, value, tb = sys.exc_info() note("%s", ''.join(traceback.format_exception(type, value, tb))) note_error(folderpath, (type, value, tb)) raise value, None, tb except AbortDocumentIncorporation, x: # ripper signalled to stop adopting this document, for good note(2, "AbortDocumentIncorporation exception on %s: %s", x.id, x.message) if (x.id == id): shutil.rmtree(folderpath) remove_from_index(repo.index_path(), id) except: type, value, tb = sys.exc_info() note("Exception processing new folder:\n%s", ''.join(traceback.format_exception(type, value, tb)))