On Mon, 3 Mar 2025 18:31:19 GMT, Valerie Peng <valer...@openjdk.org> wrote:

>> Francisco Ferrari Bihurriet has updated the pull request incrementally with 
>> one additional commit since the last revision:
>> 
>>   Clear ServicesMap fields in the declared order
>>   
>>   Constructors assign the fields in the same order.
>
> src/java.base/share/classes/java/security/Provider.java line 637:
> 
>> 635:     // let javadoc show doc from superclass
>> 636:     @Override
>> 637:     public synchronized Object get(Object key) {
> 
> How about the getProperty(String) method on line 675? Add `@Override` tag and 
> `synchronized` keyword there also? And the `keySet()` and `values()` methods 
> on line 432 and 444 respectively? What is the criteria for synchronizing the 
> method of the `Provider` class?

The reason why we need to synchronize `get` is because the handling of the 
properties map from ServicesMap may expose temporary holes. For example, if a 
property backed up by a service is overwritten with a value that is not (e.g. a 
non-string value), we need to delete the service first. When deleting the 
service, the properties map will have a temporary hole that is then filled up 
with the new property value.

It's possible that we missed some other methods such as `getProperty`. We will 
review them again.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22613#discussion_r2027591882

Reply via email to