[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    [OpenJDK 2D-Dev] Integrated: 6986863: ProfileDeferralMgr throwing ConcurrentModificationException
From:       Sergey Bylokhov <serb () openjdk ! java ! net>
Date:       2021-01-29 6:22:44
Message-ID: zW49QtcXNH5MVHO-73sz2Idepz1KE2bk9SDZ3NtMOvo=.c91b601b-5459-4ed0-9ff9-af61ed743063 () github ! com
[Download RAW message or body]

On Thu, 3 Dec 2020 23:52:25 GMT, Sergey Bylokhov <serb@openjdk.org> wrote:

> This change intended to enhance the lazy initialization of the standard color \
> profiles concurrently by different threads. 
> We defer standard profiles loading because most of UI application uses a small \
> amount of data from the profile like numComponents and colorSpaceType, and this \
> data is known in advance. But any other profile-related activity (like a color \
> conversion, profile data accesses, etc.) triggers profile activation when we load \
> all profile data to the memory. 
> Before the fix for JDK-6793818, we defer only one sRGB color profile, see: \
> https://github.com/openjdk/jdk/commit/2726f2a3621dd2562d4fb660b4c3d376c65027aa 
> Notes about the link above:
> - The code in the ProfileDeferralMgr, which contain the Vector of profiles for \
>                 activation does not use any synchronization
> - The `activateDeferredProfile` and `activate` methods are implemented to throw \
> `ProfileDataException`, but this exception is ignored during activation process:  \
> https://github.com/openjdk/jdk/commit/2726f2a3621dd2562d4fb660b4c3d376c65027aa#diff-0839c25a6c999452be28b431c54d5daa91364d302cfda6efa5c56421c2f2bdcbR96
>  
> The fix:
> - Drops the usage of ProfileDeferralMgr (which contained the Vector of profiles for \
> activation) and ProfileActivator machinery. Instead, we will have just one \
> `ICC_Profile.activate()` method which will activate and initialize the \
>                 `ICC_Profile.cmmProfile` if it is null
> - The `activate` method implementation mimics the old behavior when the \
> CMMException and IOException were wrapped by the ProfileDataException, and the \
> ProfileDataException itself was ignored during activation - > so an exception will \
> not be thrown in the method itself, but only when the null profile will be used. 
> See some comments inline.

This pull request has now been integrated.

Changeset: 64a150c5
Author:    Sergey Bylokhov <serb@openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/64a150c5
Stats:     520 lines in 9 files changed: 183 ins; 265 del; 72 mod

6986863: ProfileDeferralMgr throwing ConcurrentModificationException

Reviewed-by: kizune

-------------

PR: https://git.openjdk.java.net/jdk/pull/1613


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic