RFR (M): 8231209: [REDO] ThreadMXBean::getThreadAllocatedBytes() can be quicker for self thread

Hohensee, Paul hohensee at amazon.com
Tue Sep 24 15:54:55 UTC 2019


Thank you, Mandy.

Paul

On 9/23/19, 8:29 PM, "Mandy Chung" <mandy.chung at oracle.com> wrote:

    Looks fine.
    
    I added myself to the CSR reviewer.  I don't categorize it as source 
    incompatibility as other implementation outside JDK is not supported.  I 
    took the liberty to edit the compatibility kind.
    
    Mandy
    
    On 9/23/19 5:42 PM, Hohensee, Paul wrote:
    > Update:
    >
    > Bug: https://bugs.openjdk.java.net/browse/JDK-8231209
    > CSR: https://bugs.openjdk.java.net/browse/JDK-8231374
    > Webrev: http://cr.openjdk.java.net/~phh/8231209/webrev.01/
    >
    > All test suites that reference getThreadAllocatedBytes pass. These are
    >
    > hotspot/jtreg/vmTestbase/nsk/monitoring (contained the failing test)
    > jdk/com/sun/management
    > jdk/jdk/jfr/event/runtime
    >
    > Per Mandy, the default getCurrentThreadAllocatedBytes implementation throws a UOE.
    >
    > The CSR is a copy of the original, and in addition points out that ThreadMXBean is a PlatformManagedObject, why that's important, and why a default getCurrentThreadAllocatedBytes implementation is necessary.
    >
    > I changed the nsk test to make sure that the approach it uses will work with getCurrentThreadAllocatedBytes, which per Mandy is defined as a property. Though I'm happy to remove it if there's a consensus it isn't needed.
    >
    > Thanks,
    >
    > Paul
    >
    > On 9/19/19, 11:03 PM, "serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com> wrote:
    >
    >      Hi Paul,
    >      
    >      I have almost the same comments as David:
    >        - the same two spots of changes identified
    >        - the addition of the default method was expected
    >        - the change in test is a surprise (I also doubt, it is really needed)
    >        - new CSR is needed
    >      
    >      
    >      Sorry, I forgot to remind about running the vmTestbase monitoring tests. :(
    >      
    >      Thanks,
    >      Serguei
    >      
    >      
    >      On 9/19/19 16:06, David Holmes wrote:
    >      > Hi Paul,
    >      >
    >      > On 20/09/2019 2:52 am, Hohensee, Paul wrote:
    >      >> More formally,
    >      >>
    >      >> Bug: https://bugs.openjdk.java.net/browse/JDK-8231209
    >      >> Webrev: http://cr.openjdk.java.net/~phh/8231209/webrev.00/
    >      >
    >      > I'm assuming there are only two changes here:
    >      >
    >      > 1. The new method is now a default method that throws UOE.
    >      >
    >      > That seems fine.
    >      >
    >      > 2. You implemented the new method in the test class.
    >      >
    >      > I don't understand why you did that. The test can't be calling the new
    >      > method. Now that it is a default method we will get past the
    >      > compilation failure that caused the problem. So no change to the test
    >      > should be needed AFAICS.
    >      >
    >      > A new CSR request is needed. Just copy everything across from the old,
    >      > with the updated spec. But please also mention this is a
    >      > PlatformManagedObject in the compatibility discussion.
    >      >
    >      > Thanks,
    >      > David
    >      >
    >      >> Thanks,
    >      >>
    >      >> On 9/19/19, 9:44 AM, "serviceability-dev on behalf of Hohensee,
    >      >> Paul" <serviceability-dev-bounces at openjdk.java.net on behalf of
    >      >> hohensee at amazon.com> wrote:
    >      >>
    >      >>      Off by 2 error. Changed the subject to reflect 8231209.
    >      >>           http://cr.openjdk.java.net/~phh/8231209/webrev.00/
    >      >>           Paul
    >      >>           On 9/19/19, 6:31 AM, "Daniel D. Daugherty"
    >      >> <daniel.daugherty at oracle.com> wrote:
    >      >>                > http://cr.openjdk.java.net/~phh/8231211/webrev.00/
    >      >>                   The redo bug is 8231209. 8231211 is closed as a dup
    >      >> of 8231210.
    >      >>                   Dan
    >      >>                            On 9/19/19 9:17 AM, Hohensee, Paul wrote:
    >      >>          > I'll have the default method throw UOE. That's the same as
    >      >> the other default methods do.
    >      >>          >
    >      >>          > The necessary test fix is in
    >      >> test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/server/ServerThreadMXBeanNew.java,
    >      >> which needs a new getCurrentThreadAllocatedBytes method, defined as
    >      >>          >
    >      >>          >      public long getCurrentThreadAllocatedBytes() {
    >      >>          >          return (Long)
    >      >> invokeMethod("getCurrentThreadAllocatedBytes",
    >      >>          >              new Object[] { },
    >      >>          >              new String[] { });
    >      >>          >      }
    >      >>          >
    >      >>          > With this fix, the 134 tests in
    >      >> test/hotspot/jtreg/vmTestbase/nsk/monitoring/ThreadMXBean pass.
    >      >> Preliminary webrev at
    >      >>          >
    >      >>          > http://cr.openjdk.java.net/~phh/8231211/webrev.00/
    >      >>          >
    >      >>          > Is it worth adding getCurrentThreadAllocatedBytes tests to
    >      >> the
    >      >> test/hotspot/jtreg/vmTestbase/nsk/monitoring/ThreadMXBean/GetThreadAllocatedBytes
    >      >> set?
    >      >>          >
    >      >>          > Paul
    >      >>          >
    >      >>          > On 9/18/19, 8:16 PM, "David Holmes"
    >      >> <david.holmes at oracle.com> wrote:
    >      >>          >
    >      >>          >      On 19/09/2019 12:57 pm, Mandy Chung wrote:
    >      >>          >      > On 9/18/19 5:00 PM, Hohensee, Paul wrote:
    >      >>          >      >> They all implement
    >      >> com.sun.management.ThreadMXBean, so adding a
    >      >>          >      >> getCurrentThreadAllocatedBytes broke them.
    >      >> Potential fix is to give it
    >      >>          >      >> a default implementation, vis
    >      >>          >      >>
    >      >>          >      >>      public default long
    >      >> getCurrentThreadAllocatedBytes() {
    >      >>          >      >>          return -1;
    >      >>          >      >>      }
    >      >>          >      >>
    >      >>          >      >
    >      >>          >      > com.sun.management.ThreadMXBean (and other platform
    >      >> MXBeans) is a
    >      >>          >      > "sealed" interface which should only be implemented
    >      >> by JDK.
    >      >>          >
    >      >>          >      Didn't realize that. I don't recall knowing about
    >      >> PlatformManagedObject.
    >      >>          >      Sealed types will at least allow this to be enforced,
    >      >> though I have to
    >      >>          >      wonder what the tests are doing here.
    >      >>          >
    >      >>          >      > Unfortunately we don't have the sealed type feature
    >      >> yet.  Yes it needs
    >      >>          >      > to be a default method.  I think it should throw UOE.
    >      >>          >      >
    >      >>          >      >       * @implSpec
    >      >>          >      >       * The default implementation throws {@code
    >      >>          >      > UnsupportedOperationException}.
    >      >>          >      >
    >      >>          >      > The @throw UOE can make it clear that it does not
    >      >> support current thread
    >      >>          >      > memory allocation measurement.
    >      >>          >
    >      >>          >      Yes that seems a reasonable default if we don't want
    >      >> this to be
    >      >>          >      implemented outside the platform.
    >      >>          >
    >      >>          >      Thanks,
    >      >>          >      David
    >      >>          >
    >      >>          >      > Mandy
    >      >>          >
    >      >>          >
    >      >>
    >      
    >      
    >
    
    



More information about the serviceability-dev mailing list