<div dir="ltr">I have been analyzing occasional And Bible module upgrade problems today.  DM - you observed this while attempting to upgrade KJV recently.<div><br></div><div>Upgrade consists of:</div><div>1. delete installed module (book.getDriver().delete(book);)</div>
<div>2. install new module</div><div><br></div><div>However about half the time an error occurs on step 2 in IOUtil.unpackZip on the following line:</div><div><div>     if (!parentDir.mkdirs()) {</div></div><div>This error never occurs when installing a new module so it is related to removal of the previous version of the module.</div>
<div><br></div><div>I can&#39;t really work out why that call sometimes fails during module upgrade and the only idea I have come up with is &quot;Java is known not to delete files immediately, so mkdir may fail sometimes&quot; (<a href="http://stackoverflow.com/questions/617414/create-a-temporary-directory-in-java">http://stackoverflow.com/questions/617414/create-a-temporary-directory-in-java</a>).  What do you think of that reason?  I have never knowingly observed this delay in deletion and the above is the only mention I have seen of this problem.</div>
<div><br></div><div>I have a sort-of work around for the above problem which is</div><div><div>1. remove module from JSword lists without deleting files (Books.installed().removeBook(book);)</div><div>2. install new module (overwriting previous files)</div>
</div><div>Do module file names ever change in later versions?  Are there any other potential problems?</div><div><br></div><div>There also seems to be a minor bug in Books.removeBook() which has;</div><div>     names.put(book.getName(), book);<br>
</div><div>which I believe should be:</div><div>     names.remove(book.getName());<br></div><div>but this does not appear to cause any problems.</div><div><br></div><div>Martin</div><div><br></div><div><br></div><div><br>
</div></div>