[rfc][icedtea-web] fixing CacheReproducerTest and improving VersionedJarTest

Jiri Vanek jvanek at redhat.com
Wed Mar 4 15:19:17 UTC 2015


On 03/04/2015 04:01 PM, Jie Kang wrote:
>
>
> ----- Original Message -----
>> snip
>>>
>>> +    private final PropertiesFile recentlyUsedPropertiesFile;
>>> +    private final File cacheDir;
>>> +    private final File recentlyUsedFile;
>>>
>>> +    /**
>>> +     * @return the recentlyUsedFile
>>> +     */
>>> +    public File getRecentlyUsedFile() {
>>> +        return recentlyUsedFile;
>>> +    }
>>>
>>> Instead of keeping recentlyUsedFile in memory, can you change it to:
>>>
>>> +    public File getRecentlyUsedFile() {
>>> +        return recentlyUsedPropertiesFile.getStoreFile();
>>> +    }
>>>
>>> Then you can remove that variable.
>>
>> As    you wish, done.
>>>
>>>
>>> -        if (cacheOrder.containsKey(key)) {
>>> +        if (getRecentlyUsedPropertiesFile().containsKey(key)) {
>>>
>>> AFAICT this code is inside CacheLRUWrapper so it should have access to
>>> 'recentlyUsedPropertiesFile'. It shouldn't use the getter if it doesn't
>>> need to, no?
>>>
>>> A lot of the code changes are like this. Can you change them all back?
>>
>> With the getter you wished no. And I vote for keeping the getter rather
>>>
>>>
>>>
>>>
>>> Also:
>>>
>>> +    public CacheLRUWrapper() {
>>> +     this(PathsAndFiles.RECENTLY_USED_FILE.getFile());
>>> +    }
>>>
>>> In terms of the constructor, the dependencies are opposite.
>>>
>>> Right now, you get recently_used file, and then get cacheDir off it.
>>>
>>> Instead, it should be get cacheDir, and then get recently_used file off it.
>>>
>>> E.g.
>>>
>>> RecentlyUsedFile is always inside the Cache.  (this is correct)
>>>
>>> as opposed to
>>>
>>> Cache is always parent file of RecentlyUsedFile. (In most cases this ends
>>> up being the same thing, but it's not as correct)
>>
>> Right. I removed misleading single-file constructor.
>>>
>>>
>>>
>>> The default constructor usage ends up breaking things when you use it in
>>> CacheUtil.
>>>
>>>       private static final String setCacheDir =
>>>       JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_CACHE_DIR);
>>>       private static final String cacheDir = new File(setCacheDir != null ?
>>>       setCacheDir : System.getProperty("java.io.tmpdir")).getPath(); // Do
>>>       this with file to standardize it.
>>>       private static final CacheLRUWrapper lruHandler =
>>>       CacheLRUWrapper.getInstance();
>>>
>>>    You need to also add changes to CacheUtil to use lruHandler's cache
>>>    directory.
>>>
>>>    At the moment, CacheUtil.cacheDir != lruHandler.getCacheDir() when
>>>    someone sets DeploymentConfiguration.KEY_USER_CACHE_DIR to non-default.
>>
>> Yes. Fixed.
>>>
>>>
>>> This patch is broken here and needs to be fixed.
>>>
>>>
>>> Why would you push this without a +1 from anyone? You also seem to be doing
>>> this with a number of other patches recently. If you need a review, ping
>>> someone.
>>
>> :( Rush is an eneymy. I need to calm bit down with all those failures...
>>
>>
>> See the patch for this commit.
>
> Hello,
>
>
> -    private static final CacheLRUWrapper lruHandler = CacheLRUWrapper.getInstance();
>
> I feel like keeping a static instance here is still okay... Does it cause any problems?

Unless you insists, I will go with the field removed.

>
> When the code inside CacheUtil calls: CacheLRUWrapper.getInstance() : it's receiving the same static instance anyways. So you should be able to just call it once and keep it for future use without any problems.
>
>
> Without the static instance you might want to move some code around to be more clean.
>
> E.g:
>
> @@ -145,12 +143,13 @@
>               return false;
>           }
>
> -        File cacheDir = new File(CacheUtil.cacheDir);
> +        File cacheDir = CacheLRUWrapper.getInstance().getCacheDir();
>           if (!(cacheDir.isDirectory())) {
>               return false;
>           }
>
>           OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Clearing cache directory: " + cacheDir);
> +        CacheLRUWrapper lruHandler = CacheLRUWrapper.getInstance();
>
> You should get the instance once before the line "File cacheDir = CacheLRUWrapper.getInstance().getCacheDir();", and reuse it throughout the method. This applies to a lot of the methods now.
>
>
> The rest looks good.
>
> The tests are all passing for me with this patch applied. For some reason though, I feel like there are still some hidden bugs in the caching system :\ I'll look into it.
>
>
Yes. The caching system had a lot of bugs in past. Mostl caused by various duplicated providers.

Ok to push  now?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: removeDuplicateDefinitionsInCacheUtilsAndUseDefaultsFromLruWrapper2.patch
Type: text/x-patch
Size: 6682 bytes
Desc: not available
URL: <http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20150304/14beb513/removeDuplicateDefinitionsInCacheUtilsAndUseDefaultsFromLruWrapper2.patch>


More information about the distro-pkg-dev mailing list