Discussion about fixing deprecation in jdk.hotspot.agent
Chris Plummer
chris.plummer at oracle.com
Tue Mar 31 20:55:57 UTC 2020
On 3/31/20 1:32 PM, coleen.phillimore at oracle.com wrote:
>
>
> On 3/31/20 12:19 PM, Poonam Parhar wrote:
>> Hello Coleen,
>>
>> Does the removal of this code only impact the 'reattach'
>> functionality, and it does not affect any commands available in
>> 'clhsdb' once it is attached to a core file? If that's true, then I
>> think it should be okay to remove this code.
>
> Hi Poonam, Thank you for answering. Yes, this patch only removes the
> reattach functionality. I tried out the other clhsdb commands from
> your wiki page, and they worked fine, including object and heap
> inspection.
I'm trying to understand exactly when all these static initializes are
triggered. Is it only after you do an attach?
The implementation of clhsdb reattach is exactly the same as doing a
detach followed by an attach to the same process. I'm not sure how much
value it has, but I think in general the removal of this code means you
can't detach and then attach to anything, even a different pid. So
"detach" might as well become "detach-and-exit", because your clhsdb
session is dead once you detach. Do we really want to do this?
Chris
>
> Thanks,
> Coleen
>>
>> Thanks,
>> Poonam
>>
>> On 3/31/20 5:34 AM, coleen.phillimore at oracle.com wrote:
>>>
>>> To answer my own question, this functionality is used to allow
>>> detach/reattach from {cl}hsdb. Which seems to work on linux but not
>>> windows with this code removed.
>>>
>>> The next question is whether this is useful functionality to justify
>>> all this code (900+ and this new code that Magnus has added). Can't
>>> you just exit and restart the clhsdb process on the core file or
>>> process?
>>>
>>> For the record, this is me playing with python to remove this code.
>>>
>>> http://cr.openjdk.java.net/~coleenp/2020/01/webrev/index.html
>>>
>>> Thanks,
>>> Coleen
>>>
>>> On 3/30/20 3:04 PM, coleen.phillimore at oracle.com wrote:
>>>>
>>>> I was wondering why this is needed when debugging a core file,
>>>> which is the key thing we need the SA for:
>>>>
>>>> /** This is used by both the debugger and any runtime system. It is
>>>> the basic mechanism by which classes which mimic underlying VM
>>>> functionality cause themselves to be initialized. The given
>>>> observer will be notified (with arguments (null, null)) when the
>>>> VM is re-initialized, as well as when it registers itself with
>>>> the VM. */
>>>> public static void registerVMInitializedObserver(Observer o) {
>>>> vmInitializedObservers.add(o);
>>>> o.update(null, null);
>>>> }
>>>>
>>>> It seems like if it isn't needed, we shouldn't add these classes
>>>> and remove their use.
>>>>
>>>> Coleen
>>>>
>>>> On 3/30/20 8:14 AM, Magnus Ihse Bursie wrote:
>>>>> No opinions on this?
>>>>>
>>>>> /Magnus
>>>>>
>>>>> On 2020-03-25 23:34, Magnus Ihse Bursie wrote:
>>>>>> Hi everyone,
>>>>>>
>>>>>> As a follow-up to the ongoing review for JDK-8241618, I have also
>>>>>> looked at fixing the deprecation warnings in jdk.hotspot.agent.
>>>>>> These fall in three broad categories:
>>>>>>
>>>>>> * Deprecation of the boxing type constructors (e.g. "new
>>>>>> Integer(42)").
>>>>>>
>>>>>> * Deprecation of java.util.Observer and Observable.
>>>>>>
>>>>>> * The rest (mostly Class.newInstance(), and a few number of other
>>>>>> odd deprecations)
>>>>>>
>>>>>> The first category is trivial to fix. The last category need some
>>>>>> special discussion. But the overwhelming majority of deprecation
>>>>>> warnings come from the use of Observer and Observable. This
>>>>>> really dwarfs anything else, and needs to be handled first,
>>>>>> otherwise it's hard to even spot the other issues.
>>>>>>
>>>>>> My analysis of the situation is that the deprecation of Observer
>>>>>> and Observable seems a bit harsh, from the PoV of
>>>>>> jdk.hotspot.agent. Sure, it might be limited, but I think it does
>>>>>> exactly what is needed here. So the migration suggested in
>>>>>> Observable (java.beans or java.util.concurrent) seems overkill.
>>>>>> If there are genuine threading issues at play here, this
>>>>>> assumption might be wrong, and then maybe going the j.u.c. route
>>>>>> is correct.
>>>>>>
>>>>>> But if that's not, the main goal should be to stay with the
>>>>>> current implementation. One way to do this is to sprinkle the
>>>>>> code with @SuppressWarning. But I think a better way would be to
>>>>>> just implement our own Observer and Observable. After all, the
>>>>>> classes are trivial.
>>>>>>
>>>>>> I've made a mock-up of this solution, were I just copied the
>>>>>> java.util.Observer and Observable, and removed the deprecation
>>>>>> annotations. The only thing needed for the rest of the code is to
>>>>>> make sure we import these; I've done this for three arbitrarily
>>>>>> selected classes just to show what the change would typically
>>>>>> look like. Here's the mock-up:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~ihse/hotspot-agent-observer/webrev.01
>>>>>>
>>>>>> Let me know what you think.
>>>>>>
>>>>>> /Magnus
>>>>>
>>>>
>>>
>>
>
More information about the serviceability-dev
mailing list