You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Shai Erera (JIRA)" <ji...@apache.org> on 2012/12/20 10:09:14 UTC

[jira] [Updated] (LUCENE-4639) Improving _TestUtil.getTempDir

     [ https://issues.apache.org/jira/browse/LUCENE-4639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shai Erera updated LUCENE-4639:
-------------------------------

    Attachment: LUCENE-4639.patch

Patch addresses the following:

* getTempDir call genTempFile and mkdir() until success.
* counter and counterBase are initialized statically.
** counter is now AtomicInt, so no need for tempFileLock and the sync block.
* Fixed few Lucene testNoDir tests which tested the code when the directory does not exist - they delete the directory returned from getTempDir.
* Fixed few Solr tests which incorrectly called getTempDir in an attempt to create a temporary file!
** It's good then that getTempDir creates the directory. If anyone's code uses it improperly, he'll get an exception.

All Lucene and Solr tests pass. Would appreicate if someone can give it another look before I commit it.
                
> Improving _TestUtil.getTempDir
> ------------------------------
>
>                 Key: LUCENE-4639
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4639
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Shai Erera
>            Assignee: Shai Erera
>            Priority: Minor
>         Attachments: LUCENE-4639.patch
>
>
> Spinoff from here: http://lucene.472066.n3.nabble.com/TestUtil-getTempFile-may-fail-on-quot-Access-Denied-quot-td4028048.html.
> _TestUtil.getTempDir uses createTempFile and then deletes the file. While this usually works, if someone runs tests by multiple JVMs and does not ensure each JVM gets an isolated temp.dir to work in, that my result in two JVMs sharing the same directory.
> Also, on Windows, if you call getTempDir on an existing directory, you get an "Access is denied" exception.
> Dawid proposed a simple solution to just call mkdirs() continuously until success. I'd like to try that.
> Also, I think that genTempFile could use some house cleaning, e.g.:
> * tempFileLocker can be just an Object instance? Why do we need a class?
> * If we initialize counter and counterBase in a static clause, we can avoid checking if counter==0 as well as passing Random to genTempFile (that will remove any suspicion that it does anything randomly)
> ** Also, instead of synchronizing on tempFileLocker, can we just use AtomicInteger for the counter?
> I'll modify getTempDir first. It documents "does not create the directory", I want to make sure no test fails due that.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org