suwayomi / suwayomi-server Goto Github PK
View Code? Open in Web Editor NEWA rewrite of Tachiyomi for the Desktop
License: Mozilla Public License 2.0
A rewrite of Tachiyomi for the Desktop
License: Mozilla Public License 2.0
It should load and let me read...I presume.
It either goes to a completely white screen or infinitely loads the manga.
I've tried everything listed IIRC and it has happened with the previous version as well, I have never had it work so last time I thought it would be fixed in a newer version.
PLEASE READ THIS
I acknowledge that:
README.md
Note that the issue will be automatically closed if you do not fill out the title or requested information.
DELETE THIS SECTION IF YOU HAVE READ AND ACKNOWLEDGED IT
Explain What the feature is and how it should work in detail
Explain why this should be added
If you are gonna straight copy Tachiyomi source code and re license it you should make sure you follow the musts.
https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)
When requesting page 0 of popular/latest, it should throw a error
Page 0 is a invalid index in the Tachiyomi api, depending on the source, it can error or duplicate results to the next page. I feel the api should throw an error to the client if they try to request this page to allow for easier identification to what the client did wrong
reported by @mahor1221
It should load and let me read...I presume.
It either goes to a completely white screen or infinitely loads the manga.
I've tried everything listed IIRC and it has happened with the previous version as well, I have never had it work so last time I thought it would be fixed in a newer version.
The title!
consistency in design!
url for checking the latest preview:
https://api.github.com/repos/Suwayomi/Tachidesk/contents/latest_pointer?ref=preview
url for checking the latest release:
https://api.github.com/repos/Suwayomi/Tachidesk/releases/latest -> key: "tag_name"
The app should call get image url or something,
request images from backend?
new info: imageRequest
What the title says. I installed Batoto then uninstalled, none of its sources disappeared from sources screen.
The reader should scroll left to right or right to left
A planned feature from Tachiyomi
It should load and let me read...I presume.
It either goes to a completely white screen or infinitely loads the manga.
I've tried everything listed IIRC and it has happened with the previous version as well, I have never had it work so last time I thought it would be fixed in a newer version.
I acknowledge that:
README.md
Yarn should be listed as a dependency in the README, as well as having good error logging.
v0.2.5-r256-jar
(edit: just confirmed this still occurs on v0.2.6-r273-jar
).The application actually works
It doesn't.
Here's the log:
$ java -jar Tachidesk-v0.2.5-r256.jar
[main] INFO Exposed - Preparing create tables statements took 30ms
[main] INFO Exposed - Executing create tables statements took 3ms
[main] INFO Exposed - Extracting table columns took 73ms
[main] INFO Exposed - Extracting column constraints took 15ms
[main] INFO Exposed - Preparing alter table statements took 89ms
[main] INFO Exposed - Executing alter table statements took 0ms
[main] WARN Exposed - Indices exist in database and not mapped in code on class 'CHAPTER':
[main] WARN Exposed - Index 'FK_CHAPTER_MANGA_ID_INDEX_5' for 'CHAPTER' on columns ir.armor.tachidesk.database.table.ChapterTable.manga
[main] WARN Exposed - Indices exist in database and not mapped in code on class 'SOURCE':
[main] WARN Exposed - Index 'FK_SOURCE_EXTENSION_ID_INDEX_9' for 'SOURCE' on columns ir.armor.tachidesk.database.table.SourceTable.extension
[main] WARN Exposed - Indices exist in database and not mapped in code on class 'PAGE':
[main] WARN Exposed - Index 'FK_PAGE_CHAPTER_ID_INDEX_2' for 'PAGE' on columns ir.armor.tachidesk.database.table.PageTable.chapter
[main] WARN Exposed - Indices exist in database and not mapped in code on class 'CATEGORYMANGA':
[main] WARN Exposed - Index 'FK_CATEGORYMANGA_CATEGORY_ID_INDEX_C' for 'CATEGORYMANGA' on columns ir.armor.tachidesk.database.table.CategoryMangaTable.category
[main] WARN Exposed - Index 'FK_CATEGORYMANGA_MANGA_ID_INDEX_C' for 'CATEGORYMANGA' on columns ir.armor.tachidesk.database.table.CategoryMangaTable.manga
[main] INFO Exposed - Checking mapping consistence took 14ms
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by dorkbox.util.Swt (file:/home/solonovamax/Downloads/Tachidesk-v0.2.5-r256.jar) to method java.lang.ClassLoader.findLoadedClass(java.lang.String)
WARNING: Please consider reporting this to the maintainers of dorkbox.util.Swt
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[main] WARN dorkbox.util.jna.linux.GtkTheme - Unable to get tray image size. Using default.
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): Gdk-CRITICAL **: 12:13:43.189: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed
(java:343959): dbind-WARNING **: 12:13:43.293: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-6kGghwTyak: No such file or directory
^C^C^C
Example: Timelessleaf
The waiting screen is with only the word "wait" instead of specifying what you are waiting for, which is very uncanny.
It is better to give clearer hints as to what it is waiting for, or if not, a loading icon e.g. spinner.
It shouldn't hang
manga details should load
screenshot and error log attached below
I mean turn off lazy load in reader and load all images at once. Because some sources are very slow and when scroll down to images position to load, it took a long time to wait , it would be great if images were preloaded while reading instead of scrolling down to it to load, like other manga reading websites, all images are loaded in 1 page load !!
Cloudflare blocks it
https://s8.mkklcdnv8.com/mangakakalot/p1/pn918005/vol2_chapter_137/1.jpg
Tachiyomi allows for scanning source comic updates and downloading manga series in one click. Bonus points if the "animal version/mirror duplicates" issues are solved.
In case someone were to go offline from WiFi, this would have been a god-send.
PLEASE READ THIS
I acknowledge that:
README.md
Note that the issue will be automatically closed if you do not fill out the title or requested information.
DELETE THIS SECTION IF YOU HAVE READ AND ACKNOWLEDGED IT
Explain What the feature is and how it should work in detail
Explain why this should be added
Downloading and updating through https://chocolatey.org/ would make maintenance easier.
Because I use tachiyomi a lot, I could just copy the downloads I make in my phone to PC or vice versa rather than downloading multiple times.
Currently, if I run tachidesk, the images of each and every single manga I browse or read from whatever I search gets stored at my C drive. Its a huge problem for me because there is hardly any space in it. Possible solutions of what I think would be best:
a. Option to change the directory.
b. Option to periodically clean sweep the thumbnails and other folders.
(This one is out of curiosity) Could you not open Tachidesk as a separate application window?
I get that you are trying with link to a browser. Like maybe open up Tachidesk as a different profile (I use multiple chrome profiles so they open up separate but not sure of other browsers) but thanks for the hard work so far you all put into!!
I think incorporaring a back button on the top left of the manga overview page (similarly to the exit button in the reader) that goes back to browsing the selected source would be such a big quality of life improvement especially if it remembers the browsing location. Right now if I select a manga I have to select the source and browse all over again. BTW I'm using Tachidesk in fullscreen mode so the back arrow isnt shown, and even if I press it, it either doesnt remember the previous location or goes back to the reader if I exited the reader using the top left escape button.
Cloudflare bypass.
A feature from Tachiyomi, nice to have, not critical.
Only show one page at a time in the reader.
A planned feature from Tachiyomi
A comparison between Tachidesk and other downloaders would be useful.
Main focus: UX coverage (main goal) and downloader coverage (Tachiyomi extensions)
Documentation is a good selling point.
PLEASE READ THIS
Since https://github.com/tachiyomiorg/tachiyomi-extensions/issues/5672 is in progress, it would be useful if one can download multiple extensions based on a keyword (e.g. English, anything that does not have "Manhua", webcomics)...
As a composite problem to https://github.com/Suwayomi/Tachidesk/issues/27, it would be useful to search niche manga through this method. If Tachiyomi is removing this feature due to bad implementations, Tachidesk can make this concept viable again.
I received this error when trying to clone the repo branch of this repository:
This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
I also cannot download the precompiled releases through GitHub. It just downloads a corrupted file.
Are there any other ways for me to mitigate this problem?
Change the genre from a string to a list of strings.
In the API currently the genre is shared as a string, with each genre separated by a ", ", this can be handled by the API to allow easier usage in the clients.
PLEASE READ THIS
I acknowledge that:
README.md
Note that the issue will be automatically closed if you do not fill out the title or requested information.
DELETE THIS SECTION IF YOU HAVE READ AND ACKNOWLEDGED IT
Scrolling images with dynamic navigation should be consistent
None of the scanned pages is the same size, leading to misalignment
It would be useful if the screen can display two pages at once in a consistent manner
Edge counter-case: Images that are two pages in one (many scan sites have them), and long art strips from webtoons and tapas.io
reproduction method
1- install an extension and put a manga from one the extensions into library
2- install fails: Manga to Source referral integrity Error
Special modal to get mangadex credentials like neko
Allow the downloaders to be accessed from other applications e.g.
Other applications are better at cataloging large amounts of Manga than Tachiyomi themselves, with tagging and metadata capabilities #51
It is quite complicate to run and install for users with less coding experience and troubleshooting bugs in the initial install itself. Would it possible for you to create a docker image when it comes out of development so could run it as docker container thanks.
I acknowledge that:
README.md
Yarn should be listed as a dependency in the README, as well as having good error logging.
yarn
installed.There are clear messages in the error log telling you that you must install yarn + yarn is listed as a dependency in the README.
The error logs aren't clear on what the issue is + yarn is not listed as a dependency in the README.
If you don't feel like fixing the issue with the error logging, at least list it in the README.
Here's some code that I use in one of my projects that depends on git
being installed:
(It's written for a kotlin gradle buildscript, which is what you use. exit code 127
is the one you care about.)
fun Project.getGitHash(): String {
val stdout = ByteArrayOutputStream()
val result = exec {
isIgnoreExitValue = true
commandLine = mutableListOf("git", "rev-parse", "--short", "HEAD")
standardOutput = stdout
}
when (result.exitValue) {
128 -> {
project.logger.error("You must git clone the repository. You cannot build from a zip/tarball of the sources.")
result.rethrowFailure().assertNormalExitValue()
}
127 -> {
project.logger.error("Could not find git executable. Please install git. https://git-scm.com/downloads")
result.rethrowFailure().assertNormalExitValue()
}
0 -> { // do nothing
}
else -> {
project.logger.error("An error may or may not have occurred. The exit code was not zero.")
result.rethrowFailure().assertNormalExitValue()
}
}
return stdout.toString().trim()
}
Requesting implementation of continuous chapter reading (and not have to separately open each chapter) so that we can have better readability on Tachidesk thanks
Scrolling images with dynamic navigation should be consistent
None of the scanned pages is the same size, leading to misalignment
It would be useful if the screen can display two pages at once in a consistent manner
Edge counter-case: Images that are two pages in one (many scan sites have them), and long art strips from webtoons and tapas.io
Instead of hardcoding it should be a configuration value.
Update:
The previous info may not be valid but it still makes sense to make port number configurable.
Explain What the feature is and how it should work in detail
Could you add an option save chapter as cbz ?
Explain why this should be added
Saving as CBZ will save place when downloading chaters
android.os.Looper.getMainLooper
ref: eu.kanade.tachiyomi.extension.all.cubari.RemoteStorageUtils.handler
Describe what should have happened
Describe what happens instead
Describe additional details If necessary
In case covers are missing manga grid shouldn’t become unusable. Maybe some placeholder until cover image are available.
currently when we click backup it goes to download directory only (from browser). It would be nice to have auto backup with configuration settings like backup location and frequency in the ui.
Features -
make an end point that takes the parameters for automatic backup like backup interval, backup save location, maximum backups ( ex only have 1, 2 or 3 backups and delete older backup when new backup is created) and also make the front end code that sets those parameters and also call it from the front end
warn the user that if the app is not running, it won't backups anything
develop a feature so the app can run as a service or on startup so the user just has to click on the tray icon to open the app at any time
In case we forgot to create manual backup frequently, we have auto backup that can be restored later if something goes wrong
can't uninstall an extension after viewing manga page [http://localhost:4567/manga/1/ http://localhost:4567/manga/2/ etc]
i can uninstall before i view any manga page but after viewing any manga can't uninstall it.
Log
uninstalling tachiyomi-en.mangakakalot-v1.2.1.apk
used cached extension list
[qtp895705623-27] WARN Exposed - Transaction attempt #0 failed: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]. Statement(s): DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?
org.jetbrains.exposed.exceptions.ExposedSQLException: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
SQL: [DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:63)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:129)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:115)
at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:29)
at org.jetbrains.exposed.sql.statements.DeleteStatement$Companion.where(DeleteStatement.kt:22)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere(Queries.kt:57)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere$default(Queries.kt:56)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt:144)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:170)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$2.invoke(ThreadLocalTransactionManager.kt:211)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:210)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:148)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:120)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:118)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:117)
at ir.armor.tachidesk.util.ExtensionKt.removeExtension(Extension.kt:141)
at ir.armor.tachidesk.Main$Companion$main$3.handle(Main.kt:77)
at io.javalin.core.security.SecurityUtil.noopAccessManager(SecurityUtil.kt:23)
at io.javalin.http.JavalinServlet$addHandler$protectedHandler$1.handle(JavalinServlet.kt:121)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:45)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:24)
at io.javalin.http.JavalinServlet$service$1.invoke(JavalinServlet.kt:129)
at io.javalin.http.JavalinServlet$service$2.invoke(JavalinServlet.kt:40)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.javalin.websocket.JavalinWsServlet.service(JavalinWsServlet.kt:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at io.javalin.core.JavalinServer$start$wsAndHttpHandler$1.doHandle(JavalinServer.kt:49)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:457)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:373)
at org.h2.constraint.ConstraintReferential.checkRowRefTable(ConstraintReferential.java:390)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:265)
at org.h2.table.Table.fireConstraints(Table.java:1020)
at org.h2.table.Table.fireAfterRow(Table.java:1038)
at org.h2.command.dml.Delete.update(Delete.java:129)
at org.h2.command.CommandContainer.update(CommandContainer.java:133)
at org.h2.command.Command.executeUpdate(Command.java:267)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:23)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:9)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:6)
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:61)
... 59 more
[qtp895705623-27] WARN Exposed - Transaction attempt #1 failed: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]. Statement(s): DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?
org.jetbrains.exposed.exceptions.ExposedSQLException: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
SQL: [DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:63)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:129)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:115)
at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:29)
at org.jetbrains.exposed.sql.statements.DeleteStatement$Companion.where(DeleteStatement.kt:22)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere(Queries.kt:57)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere$default(Queries.kt:56)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt:144)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:170)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$2.invoke(ThreadLocalTransactionManager.kt:211)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:210)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:148)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:120)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:118)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:117)
at ir.armor.tachidesk.util.ExtensionKt.removeExtension(Extension.kt:141)
at ir.armor.tachidesk.Main$Companion$main$3.handle(Main.kt:77)
at io.javalin.core.security.SecurityUtil.noopAccessManager(SecurityUtil.kt:23)
at io.javalin.http.JavalinServlet$addHandler$protectedHandler$1.handle(JavalinServlet.kt:121)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:45)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:24)
at io.javalin.http.JavalinServlet$service$1.invoke(JavalinServlet.kt:129)
at io.javalin.http.JavalinServlet$service$2.invoke(JavalinServlet.kt:40)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.javalin.websocket.JavalinWsServlet.service(JavalinWsServlet.kt:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at io.javalin.core.JavalinServer$start$wsAndHttpHandler$1.doHandle(JavalinServer.kt:49)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:457)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:373)
at org.h2.constraint.ConstraintReferential.checkRowRefTable(ConstraintReferential.java:390)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:265)
at org.h2.table.Table.fireConstraints(Table.java:1020)
at org.h2.table.Table.fireAfterRow(Table.java:1038)
at org.h2.command.dml.Delete.update(Delete.java:129)
at org.h2.command.CommandContainer.update(CommandContainer.java:133)
at org.h2.command.Command.executeUpdate(Command.java:267)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:23)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:9)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:6)
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:61)
... 59 more
[qtp895705623-27] WARN Exposed - Transaction attempt #2 failed: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]. Statement(s): DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?
org.jetbrains.exposed.exceptions.ExposedSQLException: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
SQL: [DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:63)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:129)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:115)
at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:29)
at org.jetbrains.exposed.sql.statements.DeleteStatement$Companion.where(DeleteStatement.kt:22)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere(Queries.kt:57)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere$default(Queries.kt:56)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt:144)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:170)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$2.invoke(ThreadLocalTransactionManager.kt:211)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:210)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:148)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:120)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:118)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:117)
at ir.armor.tachidesk.util.ExtensionKt.removeExtension(Extension.kt:141)
at ir.armor.tachidesk.Main$Companion$main$3.handle(Main.kt:77)
at io.javalin.core.security.SecurityUtil.noopAccessManager(SecurityUtil.kt:23)
at io.javalin.http.JavalinServlet$addHandler$protectedHandler$1.handle(JavalinServlet.kt:121)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:45)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:24)
at io.javalin.http.JavalinServlet$service$1.invoke(JavalinServlet.kt:129)
at io.javalin.http.JavalinServlet$service$2.invoke(JavalinServlet.kt:40)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.javalin.websocket.JavalinWsServlet.service(JavalinWsServlet.kt:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at io.javalin.core.JavalinServer$start$wsAndHttpHandler$1.doHandle(JavalinServer.kt:49)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:457)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:373)
at org.h2.constraint.ConstraintReferential.checkRowRefTable(ConstraintReferential.java:390)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:265)
at org.h2.table.Table.fireConstraints(Table.java:1020)
at org.h2.table.Table.fireAfterRow(Table.java:1038)
at org.h2.command.dml.Delete.update(Delete.java:129)
at org.h2.command.CommandContainer.update(CommandContainer.java:133)
at org.h2.command.Command.executeUpdate(Command.java:267)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:23)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:9)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:6)
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:61)
... 59 more
[qtp895705623-27] WARN io.javalin.Javalin - Uncaught exception
org.jetbrains.exposed.exceptions.ExposedSQLException: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
SQL: [Failed on expanding args for DELETE: org.jetbrains.exposed.sql.statements.DeleteStatement@27522944]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:63)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:129)
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:115)
at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:29)
at org.jetbrains.exposed.sql.statements.DeleteStatement$Companion.where(DeleteStatement.kt:22)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere(Queries.kt:57)
at org.jetbrains.exposed.sql.QueriesKt.deleteWhere$default(Queries.kt:56)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt:144)
at ir.armor.tachidesk.util.ExtensionKt$removeExtension$1.invoke(Extension.kt)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:170)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$2.invoke(ThreadLocalTransactionManager.kt:211)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:210)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:148)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:219)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:120)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:118)
at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:117)
at ir.armor.tachidesk.util.ExtensionKt.removeExtension(Extension.kt:141)
at ir.armor.tachidesk.Main$Companion$main$3.handle(Main.kt:77)
at io.javalin.core.security.SecurityUtil.noopAccessManager(SecurityUtil.kt:23)
at io.javalin.http.JavalinServlet$addHandler$protectedHandler$1.handle(JavalinServlet.kt:121)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:45)
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:24)
at io.javalin.http.JavalinServlet$service$1.invoke(JavalinServlet.kt:129)
at io.javalin.http.JavalinServlet$service$2.invoke(JavalinServlet.kt:40)
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.javalin.websocket.JavalinWsServlet.service(JavalinWsServlet.kt:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at io.javalin.core.JavalinServer$start$wsAndHttpHandler$1.doHandle(JavalinServer.kt:49)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FK_MANGA_SOURCE_ID: PUBLIC.MANGA FOREIGN KEY(SOURCE) REFERENCES PUBLIC.SOURCE(ID) (2528986671771677900)"; SQL statement:
DELETE FROM "SOURCE" WHERE "SOURCE".EXTENSION = ? [23503-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:457)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:373)
at org.h2.constraint.ConstraintReferential.checkRowRefTable(ConstraintReferential.java:390)
at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:265)
at org.h2.table.Table.fireConstraints(Table.java:1020)
at org.h2.table.Table.fireAfterRow(Table.java:1038)
at org.h2.command.dml.Delete.update(Delete.java:129)
at org.h2.command.CommandContainer.update(CommandContainer.java:133)
at org.h2.command.Command.executeUpdate(Command.java:267)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeUpdate(JdbcPreparedStatementImpl.kt:23)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:9)
at org.jetbrains.exposed.sql.statements.DeleteStatement.executeInternal(DeleteStatement.kt:6)
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:61)
... 59 more
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.