You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@jmeter.apache.org by bu...@apache.org on 2014/10/14 13:36:01 UTC

[Bug 57088] New: Cannot stop HTTP(S) recorder if it contains View Results in Table

https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

            Bug ID: 57088
           Summary: Cannot stop HTTP(S) recorder if it contains View
                    Results in Table
           Product: JMeter
           Version: 2.11
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: HTTP
          Assignee: issues@jmeter.apache.org
          Reporter: apache@famille-jung.fr

In workbench, add a HTTP(S) Recorder, a Recording Controller that is the target
chosen in the HTTP(S) Recorder.
Add a View Results in Table in the HTTP(S) Recorder.
Start recording.

When you want to Stop recording, you get the exception at the end of the
description.
If you remove the listener from the recorder, you can use Stop button again.

2014/10/14 13:22:44 ERROR - jmeter.JMeter: Uncaught exception: 
java.lang.NullPointerException
    at
java.lang.ApplicationShutdownHooks.remove(ApplicationShutdownHooks.java:85)
    at java.lang.Runtime.removeShutdownHook(Runtime.java:239)
    at
org.apache.jmeter.reporters.ResultCollector.testEnded(ResultCollector.java:269)
    at
org.apache.jmeter.reporters.ResultCollector.testEnded(ResultCollector.java:306)
    at
org.apache.jmeter.protocol.http.proxy.ProxyControl.notifyTestListenersOfEnd(ProxyControl.java:1192)
    at
org.apache.jmeter.protocol.http.proxy.ProxyControl.stopProxy(ProxyControl.java:560)
    at
org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui.actionPerformed(ProxyControlGui.java:365)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Linux Mint 17
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] NPE in ResultCollector.testEnded

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

Philippe Mouawad <p....@ubik-ingenierie.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |p.mouawad@ubik-ingenierie.c
                   |                            |om
         Resolution|FIXED                       |WONTFIX

--- Comment #7 from Philippe Mouawad <p....@ubik-ingenierie.com> ---
Based on your scenario, issue can happen as it is testStarted that initializes
ShutdownHook, so since you add it after recording it is null.

So the null check is enough as this scenario is weird and exceptional. You
usually add listener before starting recorder.
PS : By the way for recording there is a Template called recording that setups
all required config for recording.

If you have another opinion feel free to reopen with proposed solution.
Thanks

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] NPE in ResultCollector.testEnded

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

--- Comment #5 from Philippe Jung <ap...@famille-jung.fr> ---
Based on your comments I found a way to reproduce:

Launch JMeter
Add HTTPS Recorder
Add Recording controller (probably not required to reproduce the bug)
Start the HTTPS Recorder
Add a Listener to the HTTPS Recorder
Try to stop it.

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] NPE in ResultCollector.testEnded

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

Sebb <se...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from Sebb <se...@apache.org> ---
URL: http://svn.apache.org/r1631811
Log:
NPE in ResultCollector.testEnded
Bugzilla Id: 57088

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java
    jmeter/trunk/xdocs/changes.xml

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] Cannot stop HTTP(S) recorder if it contains View Results in Table

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

--- Comment #3 from Sebb <se...@apache.org> ---
Thanks. I have reported the missing word in the message.

It looks as though the NPE must be caused by a null value for the static field
shutdownHook. I cannot see how that can happen. Also, it does not look like
this has anything directlty to do with the Recording Controller. 

The problem can only occur if ResultCollector#testEnded() is called, and that
is only called at the end of a test run. It is not called during recording as
far as I can tell. Further, the variable cannot be null unless testStarted()
was not called.

However, given that this has occurred once, it would be sensible to check for
null before calling removeShutdownHook().

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] NPE in ResultCollector.testEnded

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

Sebb <se...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Cannot stop HTTP(S)         |NPE in
                   |recorder if it contains     |ResultCollector.testEnded
                   |View Results in Table       |

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] NPE in ResultCollector.testEnded

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

--- Comment #6 from Philippe Jung <ap...@famille-jung.fr> ---
Based on this, I would say the root cause is not fixed: if you add a listener
to a already recording recorder, you probably should call some kind of start

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] Cannot stop HTTP(S) recorder if it contains View Results in Table

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

Sebb <se...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #1 from Sebb <se...@apache.org> ---
I cannot reproduce this.

Can you create a simple JMX file that shows the behaviour?

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 57088] Cannot stop HTTP(S) recorder if it contains View Results in Table

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=57088

Philippe Jung <ap...@famille-jung.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |NEW

--- Comment #2 from Philippe Jung <ap...@famille-jung.fr> ---
Sorry but I cannot reproduce this bug since I restarted JMeter. I remember
switching language from French to English but even with this and the mentionned
actions, I cannot produce the exception. 

By the way, the bug tracker displays:

"If you are providing the requested information, please change the bug status
back to ."

Probably 'NEW' is missing at the end of the sentence

Philippe

-- 
You are receiving this mail because:
You are the assignee for the bug.