Shopkeepers

Shopkeepers

2M Downloads

SQLite logging database directory creation bug

wojtekwi opened this issue ยท 0 comments

commented

When trade logging is enabled and set to SQLITE mode, the plugin doesn't create the directory for the database, instead throws an error about a non-existent path:

[14:59:29 ERROR]: [Shopkeepers] SQLITE trade log: Could not create table 'trade'.
java.sql.SQLException: path to 'plugins/Shopkeepers/trade-logs/trades.db': '/paperserver/plugins/Shopkeepers/trade-logs' does not exist
at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:261) ~[sqlite-jdbc-3.49.1.0.jar:?]
at org.sqlite.SQLiteConnection.(SQLiteConnection.java:67) ~[sqlite-jdbc-3.49.1.0.jar:?]
at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:28) ~[sqlite-jdbc-3.49.1.0.jar:?]
at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:19) ~[sqlite-jdbc-3.49.1.0.jar:?]
at org.sqlite.JDBC.createConnection(JDBC.java:106) ~[sqlite-jdbc-3.49.1.0.jar:?]
at org.sqlite.JDBC.connect(JDBC.java:79) ~[sqlite-jdbc-3.49.1.0.jar:?]
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) ~[java.sql:?]
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:253) ~[java.sql:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.tradelog.sqlite.SQLiteTradeLogger.getConnection(SQLiteTradeLogger.java:79) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.tradelog.sqlite.SQLiteTradeLogger.createTable(SQLiteTradeLogger.java:98) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.tradelog.sqlite.SQLiteTradeLogger.asyncSetup(SQLiteTradeLogger.java:86) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.tradelog.base.AbstractSingleWriterTradeLogger$SetupTask.execute(AbstractSingleWriterTradeLogger.java:136) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.util.bukkit.SingletonTask.doExecuteTask(SingletonTask.java:511) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.util.bukkit.SingletonTask.executeTask(SingletonTask.java:489) ~[Shopkeepers-2.23.10.jar:?]
at Shopkeepers-2.23.10.jar/com.nisovin.shopkeepers.util.bukkit.SingletonTask$InternalAsyncTask.run(SingletonTask.java:392) ~[Shopkeepers-2.23.10.jar:?]
at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.8.jar:1.21.8-60-29c8822]
at org.bukkit.craftbukkit.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.21.8.jar:1.21.8-60-29c8822]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.21.8.jar:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

(running Shopkeepers-2.23.10 on Paper 1.21.8-60 using Java 21, server has full r/w privileges)

This problem is easily fixed by creating the trade-logs directory manually inside Shopkeepers.
However, to prevent this error from happening, the plugin should create the directory by itself.