RFR: 8320687: sun.jvmstat.monitor.MonitoredHost.getMonitoredHost() throws unexpected exceptions when invoked concurrently [v4]

Kevin Walls kevinw at openjdk.org
Fri Nov 24 15:06:04 UTC 2023


On Fri, 24 Nov 2023 14:57:08 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java line 170:
>> 
>>> 168:                 break;
>>> 169:             }
>>> 170:         }
>> 
>> Alternatively, you can do it more succulently with a stream:
>> 
>> 
>> MonitoredHost mh = ServiceLoader.load(MonitoredHostService.class,
>>                                                   MonitoredHostService.class.getClassLoader())
>>                     .stream()
>>                     .map(ServiceLoader.Provider::get)
>>                     .filter(mhs -> mhs.getScheme().equals(hostId.getScheme()))
>>                     .map(mhs -> mhs.getMonitoredHost(hostId))
>>                     .findAny()
>>                     .orElse(null);
>
>> .map(mhs -> mhs.getMonitoredHost(hostId))
> 
> That was a reasoanable suggestion and I gave it a try, but `mhs.getMonitoredHost(hostId)` throws a checked exception `MonitorException` so using this `Stream` based approach then would need additional exception catching, wrapping and throwing, then catching this wrapped exception, checking the cause and rethrowing. That then defeats the purpose of using the `Stream` approach.
> 
> I see that you have approved the PR, so I think you are OK with the current non-stream approach. I'll now trigger the tier tests and if all comes back fine, I'll go ahead and integrate this in a day or two.
> 
> Kevin, does this latest form of the PR look OK to you too?

All good!

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16805#discussion_r1404446346


More information about the serviceability-dev mailing list