Never having done this before, is it
hg backout -r <original commit id>
? Do I file a JBS issue for the reversion? Seems necessary.
On 9/18/19, 5:18 PM, "Daniel D. Daugherty" <daniel.daughe...@oracle.com> wrote:
% hg backout
is the usual way to do this...
Dan
On 9/18/19 8:17 PM, Hohensee, Paul wrote:
> Is there a tool that will generate a reversal patch?
>
> On 9/18/19, 5:14 PM, "Daniel D. Daugherty" <daniel.daughe...@oracle.com>
wrote:
>
> > Shall I go with that, or reverse the original patch?
>
> I'm a bit worried about what else might show up since the
> NSK monitoring tests were not run prior to this push.
>
> I vote for backing out the fix until proper testing has
> been done (and at least the one problem fixed...)
>
> Dan
>
>
> On 9/18/19 8: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;
> > }
> >
> > Shall I go with that, or reverse the original patch?
> >
> > On 9/18/19, 4:48 PM, "serviceability-dev on behalf of Hohensee, Paul"
<serviceability-dev-boun...@openjdk.java.net on behalf of hohen...@amazon.com> wrote:
> >
> > I'll take a look.
> >
> > On 9/18/19, 4:40 PM, "David Holmes"
<david.hol...@oracle.com> wrote:
> >
> > Paul,
> >
> > Unfortunately this patch has broken the
vmTestbase/nsk/monitoring tests:
> >
> > [2019-09-18T22:59:32,349Z]
> >
/scratch/mesos/jib-master/install/jdk-14+15-615/src.full/open/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/server/ServerThreadMXBeanNew.java:32:
> > error: ServerThreadMXBeanNew is not abstract and does
not override
> > abstract method getCurrentThreadAllocatedBytes() in
ThreadMXBean
> >
> > and possibly other issues as we are seeing hundreds of
failures.
> >
> > David
> >
> > On 18/09/2019 8:50 am, David Holmes wrote:
> > > On 18/09/2019 12:10 am, Hohensee, Paul wrote:
> > >> Thanks, Serguei. :)
> > >>
> > >> David, are you ok with the patch?
> > >
> > > Yep, nothing further from me.
> > >
> > > David
> > >
> > >> Paul
> > >>
> > >> *From: *"serguei.spit...@oracle.com"
<serguei.spit...@oracle.com>
> > >> *Date: *Tuesday, September 17, 2019 at 2:26 AM
> > >> *To: *"Hohensee, Paul" <hohen...@amazon.com>, David
Holmes
> > >> <david.hol...@oracle.com>, Mandy Chung
<mandy.ch...@oracle.com>
> > >> *Cc: *OpenJDK Serviceability
<serviceability-dev@openjdk.java.net>,
> > >> "hotspot-gc-...@openjdk.java.net"
<hotspot-gc-...@openjdk.java.net>
> > >> *Subject: *Re: RFR (M): 8207266:
> > >> ThreadMXBean::getThreadAllocatedBytes() can be
quicker for self thread
> > >>
> > >> Hi Paul,
> > >>
> > >> Thank you for refactoring and fixing the test.
> > >> It looks great now!
> > >>
> > >> Thanks,
> > >> Serguei
> > >>
> > >>
> > >> On 9/15/19 02:52, Hohensee, Paul wrote:
> > >>
> > >> Hi, Serguei, thanks for the review. New webrev at
> > >>
> > >> http://cr.openjdk.java.net/~phh/8207266/webrev.09/
> > >>
> > >> I refactored the test’s main() method, and you’re
correct,
> > >> getThreadAllocatedBytes should be
getCurrentThreadAllocatedBytes in
> > >> that context: fixed.
> > >>
> > >> Paul
> > >>
> > >> *From: *"serguei.spit...@oracle.com"
> > >> <mailto:serguei.spit...@oracle.com>
<serguei.spit...@oracle.com>
> > >> <mailto:serguei.spit...@oracle.com>
> > >> *Organization: *Oracle Corporation
> > >> *Date: *Friday, September 13, 2019 at 5:50 PM
> > >> *To: *"Hohensee, Paul" <hohen...@amazon.com>
> > >> <mailto:hohen...@amazon.com>, David Holmes
<david.hol...@oracle.com>
> > >> <mailto:david.hol...@oracle.com>, Mandy Chung
> > >> <mandy.ch...@oracle.com>
<mailto:mandy.ch...@oracle.com>
> > >> *Cc: *OpenJDK Serviceability
<serviceability-dev@openjdk.java.net>
> > >> <mailto:serviceability-dev@openjdk.java.net>,
> > >> "hotspot-gc-...@openjdk.java.net"
> > >> <mailto:hotspot-gc-...@openjdk.java.net>
> > >> <hotspot-gc-...@openjdk.java.net>
> > >> <mailto:hotspot-gc-...@openjdk.java.net>
> > >> *Subject: *Re: RFR (M): 8207266:
> > >> ThreadMXBean::getThreadAllocatedBytes() can be
quicker for self
> > >> thread
> > >>
> > >> Hi Paul,
> > >>
> > >> It looks pretty good in general.
> > >>
> > >>
> > >>
http://cr.openjdk.java.net/~phh/8207266/webrev.08/test/jdk/com/sun/management/ThreadMXBean/ThreadAllocatedMemory.java.frames.html
> > >>
> > >>
> > >> It would be nice to refactor the java main()
method as it becomes
> > >> too big.
> > >> Two ways ofgetCurrentThreadAllocatedBytes()
testing are good
> > >> candidates
> > >> to become separate methods.
> > >>
> > >> 98 long size1 =
mbean.getThreadAllocatedBytes(id);
> > >>
> > >> Just wanted to double check if you wanted to
invoke
> > >> the getCurrentThreadAllocatedBytes() instead as
it is
> > >> a part of:
> > >>
> > >> 85 // First way,
getCurrentThreadAllocatedBytes
> > >>
> > >>
> > >> Thanks,
> > >> Serguei
> > >>
> > >> On 9/13/19 12:11 PM, Hohensee, Paul wrote:
> > >>
> > >> Hi David, thanks for your comments. New
webrev in
> > >>
> > >>
> > >>
http://cr.openjdk.java.net/~phh/8207266/webrev.08/
> > >>
> > >>
> > >> Both the old and new versions of the code
check that thread
> > >> allocated memory is both supported and enabled. The
existing version
> > >> of getThreadAllocatedBytes(long []) calls
> > >> verifyThreadAllocatedMemory(long []), which checks
inline to make sure
> > >> thread allocated memory is supported, then calls
> > >> isThreadAllocatedMemoryEnabled() to verify that it's
enabled.
> > >> isThreadAllocatedMemoryEnabled() duplicates (!) the
support check and
> > >> returns the enabled flag. I removed the redundant
check in the new
> > >> version.
> > >>
> > >>
> > >> You're of course correct about the
back-to-back check.
> > >> Application code can't know when the runtime will
hijack a thread for
> > >> its own purposes. I've removed the check.
> > >>
> > >>
> > >> Paul
> > >>
> > >>
> > >> On 9/13/19, 12:50 AM, "David
Holmes"<david.hol...@oracle.com>
> > >> <mailto:david.hol...@oracle.com> wrote:
> > >>
> > >>
> > >> Hi Paul,
> > >>
> > >>
> > >> On 13/09/2019 10:29 am, Hohensee, Paul
wrote:
> > >>
> > >> > Thanks for clarifying the review
rules. Would someone
> > >> from the
> > >>
> > >> > serviceability team please review? New
webrev at
> > >>
> > >> >
> > >>
> > >>
>http://cr.openjdk.java.net/~phh/8207266/webrev.07/
> > >>
> > >>
> > >> One aspect of the functional change
needs clarification
> > >> for me - and
> > >>
> > >> apologies if this has been covered in
the past. It seems
> > >> to me that
> > >>
> > >> currently we only check
isThreadAllocatedMemorySupported
> > >> for these
> > >>
> > >> operations, but if I read things
correctly the updated
> > >> code additionally
> > >>
> > >> checks isThreadAllocatedMemoryEnabled,
which is a
> > >> behaviour change not
> > >>
> > >> mentioned in the CSR.
> > >>
> > >>
> > >> > I didn’t disturb the existing checks
in the test, just
> > >> added code to
> > >>
> > >> > check the result of
getThreadAllocatedBytes(long) on a
> > >> non-current
> > >>
> > >> > thread, plus the back-to-back
no-allocation checks. The
> > >> former wasn’t
> > >>
> > >> > needed before because
getThreadAllocatedBytes(long) was
> > >> just a wrapper
> > >>
> > >> > around getThreadAllocatedBytes(long
[]). This patch
> > >> changes that, so I
> > >>
> > >> > added a separate test. The latter is
supposed to fail
> > >> if there’s object
> > >>
> > >> > allocation on calls to
getCurrentThreadAllocatedBytes and
> > >>
> > >> > getThreadAllocatedBytes(long). I.e., a
feature, not a
> > >> bug, because
> > >>
> > >> > accumulation of transient small
objects can be a
> > >> performance problem.
> > >>
> > >> > Thanks to your review, I noticed that
the back-to-back
> > >> check on the
> > >>
> > >> > current thread was using
getThreadAllocatedBytes(long)
> > >> instead of
> > >>
> > >> > getCurrentThreadAllocatedBytes and
fixed it. I also
> > >> removed all
> > >>
> > >> > instances of “TEST FAILED: “.
> > >>
> > >>
> > >> The back-to-back check is not valid in
general. You don't
> > >> know if the
> > >>
> > >> first check might trigger some class
loading on the
> > >> return path after it
> > >>
> > >> has obtained the first memory value. The
check might also
> > >> fail if using
> > >>
> > >> JVMCI and some compilation related
activity occurs in the
> > >> current thread
> > >>
> > >> on the second call. Also with the
introduction of
> > >> handshakes its
> > >>
> > >> possible the current thread might hit a
safepoint checks
> > >> that results in
> > >>
> > >> it executing a handshake operation that
performs
> > >> allocation. Potentially
> > >>
> > >> there could be numerous
non-deterministic actions that
> > >> might occur
> > >>
> > >> leading to unanticipated allocation.
> > >>
> > >>
> > >> I understand what you want to test here,
I just don't
> > >> think it is
> > >>
> > >> reliably doable.
> > >>
> > >>
> > >> Thanks,
> > >>
> > >> David
> > >>
> > >> -----
> > >>
> > >>
> > >> >
> > >>
> > >> > Paul
> > >>
> > >> >
> > >>
> > >> > *From: *Mandy
Chung<mandy.ch...@oracle.com>
> > >> <mailto:mandy.ch...@oracle.com>
> > >>
> > >> > *Date: *Thursday, September 12, 2019
at 10:09 AM
> > >>
> > >> > *To: *"Hohensee,
Paul"<hohen...@amazon.com>
> > >> <mailto:hohen...@amazon.com>
> > >>
> > >> > *Cc: *OpenJDK
> > >> Serviceability<serviceability-dev@openjdk.java.net>
> > >> <mailto:serviceability-dev@openjdk.java.net>,
> > >>
> > >> >"hotspot-gc-...@openjdk.java.net"
> > >> <mailto:hotspot-gc-...@openjdk.java.net>
> > >> <hotspot-gc-...@openjdk.java.net>
> > >> <mailto:hotspot-gc-...@openjdk.java.net>
> > >>
> > >> > *Subject: *Re: RFR (M): 8207266:
> > >> ThreadMXBean::getThreadAllocatedBytes()
> > >>
> > >> > can be quicker for self thread
> > >>
> > >> >
> > >>
> > >> > On 9/3/19 12:38 PM, Hohensee, Paul
wrote:
> > >>
> > >> >
> > >>
> > >> > Minor update in new
> > >>
webrevhttp://cr.openjdk.java.net/~phh/8207266/webrev.05/.
> > >>
> > >> >
> > >>
> > >> >
> > >>
> > >> > I only reviewed the library side
implementation that
> > >> looks good. I
> > >>
> > >> > expect the serviceability team to
review the test and
> > >> hotspot change.
> > >>
> > >> >
> > >>
> > >> >
> > >>
> > >> > Need a confirmatory review to push
this. If I
> > >> understand the rules correctly, it doesn't need a
Reviewer review
> > >> since Mandy's already reviewed it, it just needs a
Committer review.
> > >>
> > >> >
> > >>
> > >> >
> > >>
> > >> > You need another reviewer to advice
the following
> > >> because I was not
> > >>
> > >> > close to the ThreadsList work.
> > >>
> > >> >
> > >>
> > >> > 2087 ThreadsListHandle tlh;
> > >>
> > >> >
> > >>
> > >> > 2088 JavaThread* java_thread =
> > >> tlh.list()->find_JavaThread_from_java_tid(thread_id);
> > >>
> > >> >
> > >>
> > >> > 2089
> > >>
> > >> >
> > >>
> > >> > 2090 if (java_thread != NULL) {
> > >>
> > >> >
> > >>
> > >> > 2091 return
java_thread->cooked_allocated_bytes();
> > >>
> > >> >
> > >>
> > >> > 2092 }
> > >>
> > >> >
> > >>
> > >> > This looks right to me.
> > >>
> > >> >
> > >>
> > >> >
> > >>
test/jdk/com/sun/management/ThreadMXBean/ThreadAllocatedMemory.java
> > >>
> > >> >
> > >>
> > >> > -
"ThreadAllocatedMemory is expected to
> > >> be disabled");
> > >>
> > >> >
> > >>
> > >> > + "TEST FAILED:
ThreadAllocatedMemory is
> > >> expected to be
> > >>
> > >> > disabled");
> > >>
> > >> >
> > >>
> > >> > Prepending "TEST FAILED" in exception
message (in
> > >> several places)
> > >>
> > >> >
> > >>
> > >> > seems redundant since such
RuntimeException is thrown
> > >> and expected
> > >>
> > >> >
> > >>
> > >> > a test failure.
> > >>
> > >> >
> > >>
> > >> > + // back-to-back calls
shouldn't allocate any
> > >> memory
> > >>
> > >> >
> > >>
> > >> > + size =
mbean.getThreadAllocatedBytes(id);
> > >>
> > >> >
> > >>
> > >> > + size1 =
mbean.getThreadAllocatedBytes(id);
> > >>
> > >> >
> > >>
> > >> > + if (size1 != size) {
> > >>
> > >> >
> > >>
> > >> > Is there anything in the test can do
to help guarantee
> > >> this? I didn't
> > >>
> > >> >
> > >>
> > >> > closely review this test. The main
thing I advice is
> > >> to improve
> > >>
> > >> >
> > >>
> > >> > the reliability of this test. Put it
in another way,
> > >> we want to
> > >>
> > >> >
> > >>
> > >> > ensure that this test change will pass
all the time in
> > >> various
> > >>
> > >> >
> > >>
> > >> > test configuration.
> > >>
> > >> >
> > >>
> > >> > Mandy
> > >>
> > >> >
> > >>
> > >>
> > >>
> > >>
> > >>
> >
> >
> >
> >
>
>
>