Skip to content

Can't insert some actions to MySQL database, and search, rollback or restore and etc after fail #285

@HyperPaint

Description

@HyperPaint

Expected behavior

Actions inserted as always

Observed/actual behavior

Log messages like this when mod tries insert actions

[11:52:04] [DefaultDispatcher-worker-2/WARN] (Exposed) Transaction attempt #7 failed: java.sql.BatchUpdateException: Data truncation: Data too long for column 'extra_data' at row 41. Statement(s): INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
INSERT INTO actions (action_id, block_state, extra_data, object_id, old_block_state, old_object_id, player_id, rolled_back, source, time, world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
org.jetbrains.exposed.exceptions.ExposedSQLException: java.sql.BatchUpdateException: Data truncation: Data too long for column 'extra_data' at row 41
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:94) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:244) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.Transaction.exec(Transaction.kt:221) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.kt:55) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.QueriesKt.executeBatch(Queries.kt:302) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.QueriesKt.batchInsert(Queries.kt:201) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.QueriesKt.batchInsert(Queries.kt:176) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.QueriesKt.batchInsert$default(Queries.kt:171) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager.insertActions(DatabaseManager.kt:416) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager.access$insertActions(DatabaseManager.kt:68) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$logActionBatch$2.invokeSuspend(DatabaseManager.kt:341) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$logActionBatch$2.invoke(DatabaseManager.kt) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$logActionBatch$2.invoke(DatabaseManager.kt) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$execute$2.invokeSuspend(DatabaseManager.kt:382) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$execute$2.invoke(DatabaseManager.kt) ~[ledger.jar:?]
at com.github.quiltservertools.ledger.database.DatabaseManager$execute$2.invoke(DatabaseManager.kt) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$suspendedTransactionAsyncInternal$1.invokeSuspend(Suspended.kt:187) ~[ledger.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[org_jetbrains_kotlin_kotlin-stdlib-2.0.0-e823d47a24b16be4.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702) ~[org_jetbrains_kotlinx_kotlinx-coe-jvm-1.8.1-682b081a811ff4e1.jar:?]
Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'extra_data' at row 41
at com.mysql.cj.jdbc.exceptions.SQLError.createBatchUpdateException(SQLError.java:223) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchWithMultiValuesClause(ClientPreparedStatement.java:716) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:407) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:802) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127) ~[com_zaxxer_hikaricp-5.1.0-a2ab78c3c3386cdb.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) ~[com_zaxxer_hikaricp-5.1.0-a2ab78c3c3386cdb.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeBatch(JdbcPreparedStatementImpl.kt:91) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.execInsertFunction(InsertStatement.kt:158) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.kt:168) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.kt:18) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:92) ~[ledger.jar:?]
... 24 more
Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'extra_data' at row 41
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:555) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:339) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1054) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1003) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1312) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchWithMultiValuesClause(ClientPreparedStatement.java:677) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:407) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:802) ~[com_mysql_mysql-connector-j-8.3.0-ecd0628c956d655f.jar:?]
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127) ~[com_zaxxer_hikaricp-5.1.0-a2ab78c3c3386cdb.jar:?]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) ~[com_zaxxer_hikaricp-5.1.0-a2ab78c3c3386cdb.jar:?]
at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeBatch(JdbcPreparedStatementImpl.kt:91) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.execInsertFunction(InsertStatement.kt:158) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.kt:168) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.kt:18) ~[ledger.jar:?]
at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.kt:92) ~[ledger.jar:?]
... 24 more
[11:52:04] [DefaultDispatcher-worker-2/WARN] (Exposed) Wait 979597 milliseconds before retrying

No logs, but message Text.translatable("error.ledger.command.no_results") when search after error. Maybe connection pool is busy

And queue in ledger status stacking up to 18 thousands and so on...

Steps/models to reproduce

idk, it seems like some action has very big extra data

What operating system are you running

Linux

Minecraft version

1.20.4

Ledger version

1.3.1

Logs

useful logs in Observed/actual behavior

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

Maybe changing column extra data from text to medium text will help

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions