On 13/12/2017 8:23 PM, Shafi Ahmad wrote:
Thank you Mandy and David for review comments.

Please find updated webrev: http://cr.openjdk.java.net/~shshahma/8170299/webrev.03/

I have modify the code to use Emitter class rather than Broadcaster.

Okay. This at least seems less intrusive/disruptive.

Not sure why you added this:

 180     protected void handleNotification(NotificationListener listener,
181 Notification notif, Object handback) {
 182         listener.handleNotification(notif, handback);
 183     }

instead of executing line 182 directly at 228?

 226         public void run() {
 227             try {
 228                 handleNotification(listenerInfo.listener,
 229                                    notif, listenerInfo.handback);
 230             } catch (Exception e) {

I'm still concerned that the introduction of a new thread to actually execute the notification will causes more problems than it solves:
- the notifications are no longer synchronous wrt. sendNotification
- the execution context (security credentials etc) may be different in the InnocuousThread compared to the service thread.
- there may be synchronization/deadlock issues

Despite the spec for NotificationEmitter stating:

"Implementations of this interface can differ regarding the thread in which the methods of filters and listeners are called."

this may be a significant behavioural change - just to fix a debugger issue.

Thanks,
David

Regards,

Shafi

*From:*mandy chung
*Sent:* Tuesday, December 12, 2017 12:06 PM
*To:* David Holmes <david.hol...@oracle.com>; Shafi Ahmad <shafi.s.ah...@oracle.com>
*Cc:* serviceability-dev@openjdk.java.net
*Subject:* Re: [10] RFR for JDK-8170299: Debugger does not stop inside the low memory notifications code [internal]

On 12/11/17 9:32 PM, David Holmes wrote:

    Hi Shafi,

    I missed the first round of reviews on this so hadn't seen previous
    discussion. I'm still uneasy about introducing a new thread to the
    mix here, but at least Mandy's suggestion to modify the *Emitter
    class rather than change to the *Broadcaster is a lot less disruptive:

    
http://mail.openjdk.java.net/pipermail/serviceability-dev/2017-September/021851.html



Yes this is a better alternative (thanks for bringing this up, David).

Mandy


    David

    On 12/12/2017 3:02 PM, Shafi Ahmad wrote:

        Thank you Mandy and David.

        I am sorry, somehow I missed your earlier comment regarding the
        RFE.

          >> This is a spec change.  Is this intentional?

        Yes, this change is required as this is referenced inside
          MemoryImpl.java.

        I will file a separate RFE for adding hasListeners().

        I will send the updated webrev after incorporating the review
        comment.

        Regards,

        Shafi

        *From:*mandy chung
        *Sent:* Tuesday, December 12, 2017 2:35 AM
        *To:* Shafi Ahmad <shafi.s.ah...@oracle.com>
        <mailto:shafi.s.ah...@oracle.com>
        *Cc:* serviceability-dev@openjdk.java.net
        <mailto:serviceability-dev@openjdk.java.net>
        *Subject:* Re: [10] RFR for JDK-8170299: Debugger does not stop
        inside the low memory notifications code [internal]

        On 12/11/17 2:31 AM, Shafi Ahmad wrote:

             The method hasListeners() is referenced  inside
        MemoryImpl.java and
             defined in  NotificationEmitterSupport.

             This method is not present in
          NotificationBroadcasterSupport so I
             added it to NotificationBroadcasterSupport.


        This is a spec change.  Is this intentional?  I replied in Sept
        in reviewing an earlier version [1] that this cannot be
        backported.  If you intend to make this spec change, it's better
        to separate this RFE and it requires CSR.


             Jdk10 bug: https://bugs.openjdk.java.net/browse/JDK-8170299

             Webrev link:
        http://cr.openjdk.java.net/~shshahma/8170299/webrev.02/
        <http://cr.openjdk.java.net/%7Eshshahma/8170299/webrev.02/>
        <http://cr.openjdk.java.net/%7Eshshahma/8170299/webrev.02/>


        MemoryImpl.java

        189                     th.setName("Debugger");

        this is not a debugger thread.  Maybe rename it to

        "MemoryPool notification thread"?

        Mandy

        [1]
        
http://mail.openjdk.java.net/pipermail/serviceability-dev/2017-September/021836.html

Reply via email to