
I can't start the server on my Raspberry Pi 4
Hey
I can't start the server and I get everytime the same error
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Running with the following parameters - headless: false, libraryport: -1, adminport: -1, remoteadmin: false, host: null, debug: false, execdir: /opt/ubooquity
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - #############################
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - # Starting Ubooquity #
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - #############################
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Java version: 1.8.0_212
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Java vendor: Oracle Corporation
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - java vm name: OpenJDK Client VM
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - java runtime name: OpenJDK Runtime Environment
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Max heap size available: 247 MB
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - OS name: Linux
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - OS version: 5.4.83-v7l+
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - OS architecture: arm
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Loading local version info
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Ubooquity 2.1.2 built on 2018-10-14 at 12:58
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Creating application folders
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Loading preferences
20210118 09:59:01 [main] INFO com.ubooquity.Ubooquity - Saving preferences
20210118 09:59:02 [main] INFO org.eclipse.jetty.util.log - Logging initialized @2867ms to org.eclipse.jetty.util.log.Slf4jLog
java.lang.NoClassDefFoundError: javafx/fxml/Initializable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at com.ubooquity.e.a.d(SourceFile:597)
at com.ubooquity.e.a.loadClass(SourceFile:962)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.ubooquity.a.(SourceFile:19)
at com.ubooquity.Ubooquity.main(SourceFile:246)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.ubooquity.e.a.a(SourceFile:823)
at com.ubooquity.Launcher.main(SourceFile:10)
Caused by: java.lang.ClassNotFoundException: Failure to load: javafx.fxml.Initializable
at com.ubooquity.e.a.loadClass(SourceFile:992)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
20210118 09:59:02 [Thread-2] INFO com.ubooquity.b - Stopping internal server...
20210118 09:59:02 [Thread-2] INFO com.ubooquity.data.feeder.a - Aborting content scan...
20210118 09:59:03 [Thread-2] ERROR com.ubooquity.b - Error while stopping internal server
java.lang.NullPointerException: null
at com.ubooquity.d.e.a(SourceFile:99) ~[Ubooquity.jar:2.1.2]
at com.ubooquity.b.c(SourceFile:112) ~[Ubooquity.jar:2.1.2]
at com.ubooquity.Ubooquity.C(SourceFile:216) [Ubooquity.jar:2.1.2]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_212]
20210118 09:59:03 [Thread-2] INFO com.ubooquity.b - Internal server stopped
20210118 09:59:03 [Thread-2] INFO com.ubooquity.Ubooquity - Ubooquity has closed.

Recovering Database with error "File corrupted while reading record: null"
I had a heavily customized install of Ubooquity (Docker/Synology) a couple years back that I tweaked once too many times and broke it. I'd like to recover my old instance rather than start from scratch. Does this error give you any leads on what I should try first? The error in the log is as follows:
ata.database.d - Cound not get number of existing tables org.h2.jdbc.JdbcSQLException: File corrupted while reading record: null. Possible solution: use the recovery tool [90030-193] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.message.DbException.get(DbException.java:168) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:195) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:167) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.engine.Database.getPageStore(Database.java:2468) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.engine.Database.open(Database.java:695) ~[h2-1.4.193.jar.5380734851354284907.tmp:1.4.193] at org.h2.engine.Datab

Ubooquity for "Bandes Dessinées"
Hey everyone,
(Ubooquity on Debian Buster)
Dunno if there are lots of French users here.
The world of French language graphic novels is slightly different then that of anglo-saxon comics. No Marvels or Dc.
Therefore Comic Vine for metadata is a no no.
I am trying to wrap my head around tagging my files / making comicinfo.xml files, but it's a daunting tasks (1500 ish different series) I'd love to get more from Ubooquity than just file names ...
Anyone with any ideas, advice for
- French language graphic Novels tagging / metadata scrapping ?
- ComicInfo.xml file creator ? (looked into comicrack but it' windows only (and it can't be used with wine, and I am not going to create a VM just for that)
Any information is welcome !!
Cheers.
WB

How can use pdfjs as my pdfviewer. Thanks
Books open in new window in a self made book reader that is great. But I like pdfjs a pdfviewer and would like to customize ubooquity to use pdfjs as my default pdf viewer. How can I do it.
Thanks

using symlinks on linux to create different folders for adults and kids.
Hi there,
I have one massive folder for all comics, however I'd like to manage separate access for my kids to curated content.
I do not want to separate the comics into different folder. I thought that I could create a separate folder for KIDSCOMICS and in there add lots of symlinks to the folders that I wish to choose.
It works in terms in being scanned and added. However, when I create separate users to access those, only the first one created that has access to everything can actually list the comic folder
KIDSCOMICS/
--> symlink to COMIC_Folder_1/
--> symlink to COMIC_Folder_2/
In admin, I shared 2 folders 'COMICS' (with the actual folders of the actual comics) and "KIDS COMICS" (with links to folders I chose), created 2 users, one that has access to both, and one that can only access KIDS COMICS.
The user that can access both, has no problem visualising both shares, enters each and see the contents.
The user that can only access those can click on "KidsComics", see the 2 folders, but when the user clicks I get a
--> ERROR com.ubooquity.provider.comic.b - Comic entry not found or user not authorized
Any ideas as what could be the problem ?
Cheers.

Wondering if it's safe to use Ubooquity on an online VPS
Hello Guys,
I have just discovered Ubooquity and I'm loving it so far, but I have noticed that most people are using Ubooquity on their home networks and it's not exposed to the internet. but I only own a VPS and I was wondering if it's safe to run the application on my VPS and have it exposed to the internet
Any suggestions will be much appreciated

logs show comic imported but not in library
Hi all,
I've had a few issues with some folders, that were not imported at first launch. I fixed them, then did another scan, the logs shows "Inserting/updating comic entry in database : bmlablabla"
but they don't show up at all in the library

SYMBOLE DE SUIVIT DE LECTURE
Comme pour suivre où on es est sur Netflix ou prime ou mycanal ..
Une coche verte = déjà lu (si tout lu: coche aussi sur le dossier conteneur)
une légère ligne blanche au bas du livre à la grandeur proportionnelle du% de lecture
une section "en cours" dans l'accueil a coté de comics raw etc

WEBP image based comics crank up the memory requirements of Ubooquity
I decided to convert a bunch of my CBZ from containing JPG files to WEBP files, with the idea that it could save space without sacrificing quality. Doing so really cranked up the memory requirements of Ubooquity. Before using WEBP, I was running Ubooquity with 2gig of memory allocated. I had to turn it up to 3gig to keep from getting out of memory errors in the log.
How did I discover this? Well, after converting a lot of JPGs to WEBPs, I added these new folders to Ubooquity and launched a new scan of my folders. When it was done, I went in to look at the results. I found that many of my comics were showing the "no cover found" default cover that looks like an icon of a book, and that a few comics had a cover that was only a line where the cover image should be - as if the process that created the cover thumbnail just quit after 2 or 3 lines of the original image. The majority of the comic covers were fine though. When I went to read a comic with the built-in Ubooquity reader, if that comic had the default book icon, the first image wouldn't show. I would get a grey almost gradient background. Sometimes it would be bright green - like a green screen used in movie making. But sometimes, if I clicked through the page images, I would eventually get to an image that displayed properly. For each page I would get a spinning hourglass at the top, while Ubooquity decoded the WEBP image. For bad pages, it might spin forever. Other times it would spin a bit and then display the grey gradient or green screen. Some images displayed properly, though. So it was quite confusing. I tried to make sense of which CBZ files worked and which didn't. I tried to make sense of which WEBP files worked and which didn't. I couldn't find any rhyme or reason.
So I thought, well, I bet I know how to fix the cover issue. I'll copy the JPG covers from the original files into the CBZs with WEBP images. Tedious, but it worked. A Ubooquity rescan and things were looking good as far as the appearance of the covers went. But there were still problems once I opened a file in the reader.
So I dug into the Ubooquity logs to see if I could find errors. Sure enough, there were out of memory errors, like these:
20201127 11:20:23 [qtp122114483-765] ERROR com.ubooquity.d.b - Request not handled (should never happen, this is a bug !): /comicreader/335598
20201127 11:20:23 [qtp122114483-765] WARN org.eclipse.jetty.server.HttpChannel - /comicreader/335598
java.lang.OutOfMemoryError: GC overhead limit exceeded
20201127 11:20:34 [qtp122114483-788] ERROR com.ubooquity.d.b - Request not handled (should never happen, this is a bug !): /comicreader/335598
20201127 11:20:34 [qtp122114483-788] WARN org.eclipse.jetty.server.HttpChannel - /comicreader/335598
java.lang.OutOfMemoryError: GC overhead limit exceeded
20201127 11:20:41 [qtp122114483-763] ERROR com.ubooquity.d.b - Request not handled (should never happen, this is a bug !): /comicreader/335598
20201127 11:20:41 [qtp122114483-763] WARN org.eclipse.jetty.server.HttpChannel - /comicreader/335598
java.lang.OutOfMemoryError: Java heap space
20201127 11:21:31 [qtp122114483-766] ERROR com.ubooquity.c.a - Could not serve stream with URI: /comicreader/335598
org.eclipse.jetty.io.EofException: null
When I checked the memory by using the "View System Info" button on the Ubooquity admin console's General tab, It said I had memory available, but it also seems to indicate that it was using the max memory:
Max memory: | 1820 MB |
Free memory: | 373 MB |
Total memory: | 1820 MB |
Max memory: | 2731 MB |
Free memory: | 1875 MB |
Total memory: | 2400 MB |
Part of the memory issue I'm seeing could also be that I increased my "Items per page" for comics to the max 300. So I'm sure that's using up more memory than my old setting of 24. I'm thinking of increasing it further... I might need to jack up the memory allocated from 3gig to 4gig. That seems extreme, but I'd rather not have the errors.
Lastly, if you look at the errors posted above, I'm getting this error regardless of how much memory I allocate:
Could not serve stream with URI: /comicreader/335598And that concerns me. I don't know what to look at for that.
Anyway, I just wanted to share this so anyone else looking to play with the WEBP image format would know what they're in for.
Happy Thanksgiving,
Tom

Huge collection corrupts database all times
I'm trying to add a huge collection of ebooks (80k more or less) to my Ubooquity installation based on docker. I've added some extra memory with parameter MAXMEM=2048 in order to avoid memory problems during the long indexation needed
The problem is that when it finishes to index (without any error in logs), the system becomes unstable, I cannot access to the web UI correctly. For this reason I need to restart the docker container. When I restart it, in the startup log, the "Loading preferences"step takes about 10 minutes and it launches and error "Could not get number of existing tables". I attached the error below. It seems like the database became corrupted, also I've checked the database generated (ubooquity-5.mv.db) and its size is 7GB. I have repeated the process several times, indexing the full library, or even indexing the library in 3 stages, but at the end, the last stage fails in the same way.
Is there any limitation in the size of the database which at the end makes the database corrupted?
Thx in advance.
Error launched when I restart after indexing all the elements:
20201113 12:08:59 [main] INFO com.ubooquity.Ubooquity - Loading preferences 20201113 12:11:08 [main] ERROR com.ubooquity.data.database.d - Cound not get number of existing tables org.h2.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-193] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.message.DbException.get(DbException.java:168) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.message.DbException.convert(DbException.java:295) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.openDatabase(Database.java:304) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.<init>(Database.java:267) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.openSession(Engine.java:64) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.openSession(Engine.java:176) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.createSession(Engine.java:137) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.createSession(Engine.java:27) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:115) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:99) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.Driver.connect(Driver.java:69) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(JdbcDataSource.java:188) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:351) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:383) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:225) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:197) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at com.ubooquity.data.database.d.h(SourceFile:132) [Ubooquity.jar:2.1.2] at com.ubooquity.data.database.d.<init>(SourceFile:52) [Ubooquity.jar:2.1.2] at com.ubooquity.Ubooquity.main(SourceFile:211) [Ubooquity.jar:2.1.2] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_252] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_252] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_252] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_252] at com.ubooquity.e.a.a(SourceFile:823) [Ubooquity.jar:2.1.2] at com.ubooquity.Launcher.main(SourceFile:10) [Ubooquity.jar:2.1.2] Caused by: java.lang.NullPointerException: null at org.h2.mvstore.db.ValueDataType.compare(ValueDataType.java:102) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.compare(MVMap.java:708) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.Page.binarySearch(Page.java:334) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.binarySearch(MVMap.java:461) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.get(MVMap.java:450) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.remove(MVMap.java:538) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.db.TransactionStore.rollbackTo(TransactionStore.java:502) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.db.TransactionStore$Transaction.rollback(TransactionStore.java:799) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.openDatabase(Database.java:273) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] ... 24 common frames omitted 20201113 12:13:03 [main] ERROR com.ubooquity.data.database.d - Could not configure collation strength org.h2.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException" [50000-193] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.<init>(Database.java:267) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.openSession(Engine.java:64) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.openSession(Engine.java:176) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.createSessionAndValidate(Engine.java:154) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Engine.createSession(Engine.java:27) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:115) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:99) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.Driver.connect(Driver.java:69) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(JdbcDataSource.java:188) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:351) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:383) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:225) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:197) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at com.ubooquity.data.database.d.i(SourceFile:155) [Ubooquity.jar:2.1.2] at com.ubooquity.data.database.d.<init>(SourceFile:53) [Ubooquity.jar:2.1.2] at com.ubooquity.Ubooquity.main(SourceFile:211) [Ubooquity.jar:2.1.2] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_252] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_252] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_252] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_252] at com.ubooquity.e.a.a(SourceFile:823) [Ubooquity.jar:2.1.2] at com.ubooquity.Launcher.main(SourceFile:10) [Ubooquity.jar:2.1.2] Caused by: java.lang.NullPointerException: null at org.h2.mvstore.db.ValueDataType.compare(ValueDataType.java:102) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.compare(MVMap.java:708) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.Page.binarySearch(Page.java:334) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.binarySearch(MVMap.java:461) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.get(MVMap.java:450) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.MVMap.remove(MVMap.java:538) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.db.TransactionStore.rollbackTo(TransactionStore.java:502) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.db.TransactionStore$Transaction.rollback(TransactionStore.java:799) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.mvstore.db.MVTableEngine$Store.initTransactions(MVTableEngine.java:255) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.open(Database.java:765) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] at org.h2.engine.Database.openDatabase(Database.java:273) ~[h2-1.4.193.jar.8884071570020133214.tmp:1.4.193] ... 24 common frames omitted</init></init></init></init></init></init></init></init>
Customer support service by UserEcho