LGTM

-- Igor

> On Apr 2, 2020, at 12:51 PM, Leonid Mesnik <leonid.mes...@oracle.com> wrote:
> 
> Thank you for review.
> 
> I still waiting for one more review.
> 
> Leonid
> 
> On 4/1/20 9:18 PM, David Holmes wrote:
>> Looks good - thanks Leonid.
>> 
>> David
>> 
>> On 2/04/2020 12:17 pm, Leonid Mesnik wrote:
>>> Find new version (updated webrev.00 by mistake)
>>> 
>>> http://cr.openjdk.java.net/~lmesnik/8241456/webrev.00/
>>> 
>>> The moving lock.lock() outside of try is required to don't get 
>>> IllegalStateException.
>>> 
>>> And avoiding locks in ThreadRunner is needed to avoid OOME.
>>> 
>>> Leonid
>>> 
>>> On 3/26/20 4:41 PM, Leonid Mesnik wrote:
>>>> 
>>>> On 3/26/20 4:29 PM, David Holmes wrote:
>>>>> On 27/03/2020 9:16 am, Leonid Mesnik wrote:
>>>>>> 
>>>>>> On 3/26/20 4:06 PM, David Holmes wrote:
>>>>>>> Hi Leonid,
>>>>>>> 
>>>>>>> On 27/03/2020 7:39 am, Leonid Mesnik wrote:
>>>>>>>> Replying with correct summary.
>>>>>>>> 
>>>>>>>> Leonid
>>>>>>>> 
>>>>>>>> On 3/23/20 8:55 PM, Leonid Mesnik wrote:
>>>>>>>>> Hi
>>>>>>>>> 
>>>>>>>>> Could you please review following fix which update ThreadsRunner to 
>>>>>>>>> use AtomicInteger/spinOnWait instead of Wicket to synchronize 
>>>>>>>>> starting of stress test threads.
>>>>>>>>> 
>>>>>>>>> Failing tests allocated all memory by earlier started threads before 
>>>>>>>>> Lock.unlock is called in the latest threads. So thread might get an 
>>>>>>>>> OOME exception while trying to release lock and/or get into 
>>>>>>>>> inconsistent state.
>>>>>>> 
>>>>>>> You have a bug in Wicket:
>>>>>>> 
>>>>>>> +        try {
>>>>>>> +            lock.lock();
>>>>>>> ...
>>>>>>> +        } finally {
>>>>>>> +            lock.unlock();
>>>>>>> 
>>>>>>> The lock() has to go outside the try block. That is why you were 
>>>>>>> getting IllegalMonitorStateExceptions when the lock() threw OOME.
>>>>>> Thanks for explanation. But anyway, as I understand locks use memory and 
>>>>>> might be inconsistent if OOME happened.
>>>>> 
>>>>> They use memory and so lock() can throw OOME, but they are never 
>>>>> inconsistent.
>>>> Ok, I will move lock.lock() outside of try {}. Thanks for explanation.
>>>>> 
>>>>>>> 
>>>>>>> But the OOME itself is still a problem as it means you can't use any 
>>>>>>> proper synchronizer. I don't like seeing the spin-loops but in this 
>>>>>>> code you may have no choice if memory may already be exhausted.
>>>>>> 
>>>>>> It should be really short spin-loop, test only start thread during this 
>>>>>> loop and don't do anything more. Also, it is done only once for all 
>>>>>> stress test. The goal is to start thread completely before heap is 
>>>>>> exhausted.
>>>>> 
>>>>> Okay. I'm somewhat dubious about making these changes in mainline now 
>>>>> just to support loom. I don't see why we need to care about pinning 
>>>>> threads in this kind of situation.
>>>> 
>>>> The idea is to add some nsk/share stress tests for virtual threads. 
>>>> Basically, there are the same tests as existing (gc, sysdict) but running 
>>>> in virtual threads. And these tests are going to be executed after loom is 
>>>> integrated. And I want to keep the difference as small as possible between 
>>>> mainline and loom.
>>>> 
>>>> Leonid
>>>> 
>>>>> 
>>>>> David
>>>>> 
>>>>>> Leonid
>>>>>> 
>>>>>>> 
>>>>>>> David
>>>>>>> -----
>>>>>>> 
>>>>>>> 
>>>>>>>>> 
>>>>>>>>> The bug was introduced by 
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8241123 
>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8241123>
>>>>>>>>> The Atomic works fine for stress test finishing sync. I just didn't 
>>>>>>>>> expect that tests might OOME while releasing start lock.
>>>>>>>>> Verified that tests now don't fail with -Xcomp -server 
>>>>>>>>> -XX:-TieredCompilation -XX:-UseCompressedOops.
>>>>>>>>> 
>>>>>>>>> webrev: http://cr.openjdk.java.net/~lmesnik/8241456/webrev.00/ 
>>>>>>>>> <http://cr.openjdk.java.net/~lmesnik/8241456/webrev.00/>
>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8241456 
>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8241456>
>>>>>>>>> 
>>>>>>>>> Leonid

Reply via email to