DmitryKey / luke

This is mavenised Luke: Lucene Toolbox Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Swing UI hangs when trying to open index directory

dbooth-boston opened this issue · comments

Using this version:
https://github.com/DmitryKey/luke/releases/download/luke-swing-7.5.0/luke-swing-7.5.0-luke-release.zip

After unzipping I ran luke.sh. The swing UI started up. I clicked "Browse" to choose my index directory path, but the swing UI hangs on my home directory, with the spinning mouse cursor. See attached screenshots. I can navigate up to a parent directory, but it hangs as soon as I try to show my home directory, which only contains about 360 files/subdirectories. I downloaded and ran everything under my usual user account, so it cannot be a file permission issue.

I am on Ubuntu 16.04.

$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
img_20181018_142953965
img_20181018_143003376

This issue is repeatable, using the steps above. I do not have a work-around, except to try a different version of Luke.

I also tried it after a clean "git clone" and "mvn install", and it still hangs.

This seems to be a bug in Swing, not in Luke. The problem turned out to be a caused by a filename with special unicode characters in my home directory. I discovered this stack trace when I tried an older version of Luke:

luke-7.2.0$ ./luke.sh
Unable to find the LUKE_PATH environnement variable...
Assuming you're running from the root folder of luke...
Exception in thread "Basic L&F File Loading Thread" java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: /home/dbooth/???
at sun.nio.fs.UnixPath.encode(UnixPath.java:147)
at sun.nio.fs.UnixPath.(UnixPath.java:71)
etc.

My workaround was to delete the offending file.

@dbooth-boston thanks, for the reporting.

The problem turned out to be a caused by a filename with special unicode characters in my home directory.

Can you please tell us what characters caused the error? This information will be help for others.

Next version Luke will emit the stack traces when failing to open an index, as older versions: #128

Here is a unicode character that triggers the problem: ई
I don't know what the codepoint is. Here is how you can create one (on linux) to test:

$ cd /tmp
$ mkdir test
$ cd test
$ vi makedir
$ more makedir
mkdir 'ई';

$ perl makedir 
$ ls -la
total 100
drwxrwxr-x  3 dbooth dbooth  4096 Oct 19 10:23 .
drwxrwxrwt 55 root   root   86016 Oct 19 10:23 ..
-rw-rw-r--  1 dbooth dbooth    14 Oct 19 10:23 makedir
drwxrwxr-x  2 dbooth dbooth  4096 Oct 19 10:23 ???
$

The "ls -la" command is unable to display the unicode character, so the name of the newly created directory is listed as "???".

After you have done the above, just start Luke and try to navigate into the /tmp/test directory using the index directory chooser. As soon as you navigate into the /tmp/test directory, you will notice that the dialog hangs with the spinning cursor, as it is unable to display the weird directory name that you created.

To delete it after you are done, use a recursive delete on the parent:

$ rm -r /tmp/test

I hope this helps. Since this is ultimately a bug in OpenJDK Swing, I tried to report it there, but I was unable to figure out how/where to submit a bug report for it. I could only find a bug report interface for Oracle Java. If anyone knows how, please let me know by posting a comment here.

Thank you for the details, seems like this is a character of Sanscrit or Hindi. I will try to reproduce the error on my PC.

Here is the OpenJDK Jira:
https://bugs.openjdk.java.net/projects/JDK/issues/JDK-8212680?filter=allopenissues
I will check the Jira if there are issues related to this problem have been already reported.

Thanks, but I still do not see any way for me to report the bug on that site. The dashboard page at https://bugs.openjdk.java.net/secure/Dashboard.jspa
says:

"Everyone with OpenJDK Author status or above has a JBS account which may be used to create and edit bugs. Those without accounts can view bugs anonymously."

I am not an OpenJDK Author and I do not have a JBS account, so I do not see how I can submit a bug report to them. :(

According to this thread (https://stackoverflow.com/questions/29379425/where-to-report-issues-of-openjdk-when-youre-not-a-openjdk-developer), all an individual (who does not have the JDK bug system account) can do is post messages to the OpenJDK mailing lists.
https://mail.openjdk.java.net/mailman/listinfo

I subscribe to some of the lists but I have never posted messages to...