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 2019/11/20 20:05:56 UTC

[Bug 63945] New: NPE when opening a file after file system change

https://bz.apache.org/bugzilla/show_bug.cgi?id=63945

            Bug ID: 63945
           Summary: NPE when opening a file after file system change
           Product: JMeter
           Version: 5.2
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Main
          Assignee: issues@jmeter.apache.org
          Reporter: mcdermott.michaelj@gmail.com
  Target Milestone: JMETER_5.2

If you navigate to File > Open in JMeter 5.2 and the directory in which the
current file was opened no longer exists, you will get a null pointer
exception. The full stack trace is below. I run into this issue when working
with a Git repository that holds JMeter scripts. I will open a file, work with
it, then switch branches to look at a different script and get the error shown
below.

While this shouldn't matter, I am running JMeter under WSL in Windows 10,
rather than the Windows 10 binary.

ERROR | Error processing org.apache.jmeter.gui.action.Load@76b224cd
java.lang.NullPointerException
        at
java.desktop/javax.swing.plaf.metal.MetalFileChooserUI$IndentIcon.getIconWidth(MetalFileChooserUI.java:971)
        at
java.desktop/javax.swing.SwingUtilities.layoutCompoundLabelImpl(SwingUtilities.java:1091)
        at
java.desktop/javax.swing.SwingUtilities.layoutCompoundLabel(SwingUtilities.java:1004)
        at
java.desktop/javax.swing.plaf.basic.BasicLabelUI.layoutCL(BasicLabelUI.java:103)
        at
java.desktop/javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:257)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)
        at
com.bulenkov.darcula.ui.DarculaComboBoxUI.getSizeForComponent(DarculaComboBoxUI.java:129)
        at
java.desktop/javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize(BasicComboBoxUI.java:1409)
        at
java.desktop/javax.swing.plaf.basic.BasicComboBoxUI.getMinimumSize(BasicComboBoxUI.java:960)
        at
java.desktop/javax.swing.plaf.basic.BasicComboBoxUI.getPreferredSize(BasicComboBoxUI.java:949)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)
        at
java.desktop/javax.swing.plaf.metal.MetalFileChooserUI$1.getPreferredSize(MetalFileChooserUI.java:246)
        at
java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at
java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682)
        at
java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:729)
        at
java.desktop/javax.swing.plaf.metal.MetalFileChooserUI.getPreferredSize(MetalFileChooserUI.java:622)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)
        at
java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at
java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682)
        at
java.desktop/javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:866)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at
java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at
java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682)
        at
java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at
java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at java.desktop/java.awt.Window.pack(Window.java:826)
        at
java.desktop/javax.swing.JFileChooser.createDialog(JFileChooser.java:819)
        at
java.desktop/javax.swing.JFileChooser.showDialog(JFileChooser.java:747)
        at
java.desktop/javax.swing.JFileChooser.showOpenDialog(JFileChooser.java:653)
        at
org.apache.jmeter.gui.util.FileDialoger.promptToOpenFile(FileDialoger.java:207)
        at
org.apache.jmeter.gui.util.FileDialoger.promptToOpenFile(FileDialoger.java:156)
        at
org.apache.jmeter.gui.util.FileDialoger.promptToOpenFile(FileDialoger.java:135)
        at
org.apache.jmeter.gui.util.FileDialoger.promptToOpenFile(FileDialoger.java:115)
        at org.apache.jmeter.gui.action.Load.doActionAfterCheck(Load.java:76)
        at
org.apache.jmeter.gui.action.AbstractActionWithNoRunningTest.doAction(AbstractActionWithNoRunningTest.java:45)
        at
org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:88)
        at
org.apache.jmeter.gui.action.ActionRouter.lambda$actionPerformed$0(ActionRouter.java:70)
        at
java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at
java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at
java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at
java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at
java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at
java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

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

[Bug 63945] NPE when opening a file after file system change

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

--- Comment #7 from Michael <mc...@gmail.com> ---
(In reply to Philippe Mouawad from comment #6)
> Hello Michael,
> Any feedback please ?
> 
> Thank you

Sorry, just getting back to this after a space away.

I tried the most recent nightly (the 2020-03-06 build from
https://ci.apache.org/projects/jmeter/nightlies/) and it fixed the problem I
was having. After creating a test repo and deleting the directory, the open
dialog moved up the tree to a directory that did still exist.

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

[Bug 63945] NPE when opening a file after file system change

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

Felix Schumacher <fe...@internetallee.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #36899|0                           |1
        is obsolete|                            |

--- Comment #4 from Felix Schumacher <fe...@internetallee.de> ---
Created attachment 36900
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=36900&action=edit
Use a more consistent logic to choose initial dir for FileChooser

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

[Bug 63945] NPE when opening a file after file system change

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

Felix Schumacher <fe...@internetallee.de> changed:

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

--- Comment #8 from Felix Schumacher <fe...@internetallee.de> ---
Thanks for confirming, that the problem is fixed for you.

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

[Bug 63945] NPE when opening a file after file system change

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|JMETER_5.2                  |JMETER_5.3.0

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

[Bug 63945] NPE when opening a file after file system change

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

--- Comment #3 from Felix Schumacher <fe...@internetallee.de> ---
This problem -- I still think it is an JDK problem -- might be the cause for a
few other reports that I found:


https://stackoverflow.com/questions/56928382/with-jmeter-5-1-1-r1855137-not-able-to-save-any-script-getting-exceptions-in-l
 https://stackoverflow.com/questions/50097525/jmeter-4-0-unable-to-access-menus

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

[Bug 63945] NPE when opening a file after file system change

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

Felix Schumacher <fe...@internetallee.de> changed:

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

--- Comment #1 from Felix Schumacher <fe...@internetallee.de> ---
Thanks for the report. This seems to be a problem with JDK.

As a workaround, you can try to use another LAF than Metal in JMeter.

@team
While having a look at the code, I found a few places, where we look for the
existence of the initial directory on which the file chooser should start.

I extended and simplified those occurrences and think I found a bug in the
logic that chooses the initial location in FileDialoger#promptToOpenFile from
line 177.

First we look, if existingFileName is pointing to something valid and use that
as the initial location or the global initial location, if none location has
been used before.

After that a bit further down, we test if a location has been used before and
may initialize such a location.

Than -- and this is the potential bug -- we always use that location for the
initial location of the file chooser.

Another dodgy logic is that we test for the default initial location in two
different ways. First -- when no existingFileName is given -- we test for an
empty default location and refuse to use it, if it is empty. The second time,
we accept the default location, even if it is empty AND use it as the default
location for the next runs.

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

[Bug 63945] NPE when opening a file after file system change

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

--- Comment #2 from Felix Schumacher <fe...@internetallee.de> ---
Created attachment 36899
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=36899&action=edit
Use a more consistent logic to choose initial dir for FileChooser

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

[Bug 63945] NPE when opening a file after file system change

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

--- Comment #5 from Felix Schumacher <fe...@internetallee.de> ---
@Michael, could you test the next nightly, if this fixes your problem?


commit bfabdb8fc84b992ab73c516f591ac5d08da1b0a7
AuthorDate: Sun Nov 24 11:33:32 2019 +0100

    Use a sane initial dir for the file chooser

    While having a look at 63945, I found a few places, where we look for the
existence
    of the initial directory on which the file chooser should start.

    I extended and simplified those occurrences and think I found a bug in the
logic that
    chooses the initial location in FileDialoger#promptToOpenFile from line
177.

    First we look, if existingFileName is pointing to something valid and use
that as the
    initial location or the global initial location, if none location has been
used before.

    After that a bit further down, we test if a location has been used before
and may
    initialize such a location.

    Than -- and this is the potential bug -- we always use that location for
the initial
    location of the file chooser.

    Another dodgy logic is that we test for the default initial location in two
different ways.
    First -- when no existingFileName is given -- we test for an empty default
location and refuse
    to use it, if it is empty. The second time, we accept the default location,
even if it is
    empty AND use it as the default location for the next runs.

    Bugzilla Id: 63945
---
 .../org/apache/jmeter/gui/util/FileDialoger.java   | 39 ++++++++++++----------
 xdocs/changes.xml                                  |  2 ++
 2 files changed, 24 insertions(+), 17 deletions(-)

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

[Bug 63945] NPE when opening a file after file system change

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

Felix Schumacher <fe...@internetallee.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |FixedInTrunk

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

[Bug 63945] NPE when opening a file after file system change

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

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

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

--- Comment #6 from Philippe Mouawad <p....@ubik-ingenierie.com> ---
Hello Michael,
Any feedback please ?

Thank you

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