Skip to content

Error msg: "com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Record has changed since last read in table 'plan_extension_user_table_values'" #4468

@bobhenl

Description

@bobhenl

Describe the issue

Hello, I'm getting on proxy this error

[13:12:37] [Plan MySQLDB-transaction-thread-1/ERROR] [plan]: Ran into CompletionException - logged to plugins/plan/logs/CompletionException-8fd11eafaa.txt
[13:12:37] [Plan MySQLDB-transaction-thread-1/ERROR] [plan]: (INCLUDE CONTENTS OF THE FILE IN ANY REPORTS)
[13:12:37] [Plan MySQLDB-transaction-thread-1/ERROR] [plan]: Error msg: "com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Record has changed since last read in table 'plan_extension_user_table_values'"

Exceptions & Other Logs

8fd11eafaa - Last occurred: 2026-02-14 Occurrences: 1
---- Context 1 ----
Plan v5.7 build 3198
Velocity 3.4.0-SNAPSHOT-git-a71d27f3
Server v3.4.0-SNAPSHOT-git-a71d27f3

Transaction: class com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction
DB State: OPEN - fatal: false
Error code: 1020
UPDATE plan_extension_user_table_values SET col_1_value=?,col_2_value=?,col_3_value=?,col_4_value=? WHERE table_id=? AND uuid=? AND table_row=?
Modified since last read

---- Stacktrace ----
java.util.concurrent.CompletionException: com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Record has changed since last read in table 'plan_extension_user_table_values'
   java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
   java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
   java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
   java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
   java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
   java.base/java.lang.Thread.run(Thread.java:1583)
Caused by:
com.djrapitops.plan.exceptions.database.DBOpException: SQL Failure: Record has changed since last read in table 'plan_extension_user_table_values'
   com.djrapitops.plan.exceptions.database.DBOpException.forCause(DBOpException.java:160)
   com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:57)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.updateRows(StorePlayerTableResultTransaction.java:165)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.lambda$storeValue$0(StorePlayerTableResultTransaction.java:93)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.performOperations(StorePlayerTableResultTransaction.java:72)
   com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:86)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:333)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:332)
   java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
   java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
   java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
   java.base/java.lang.Thread.run(Thread.java:1583)
Caused by:
java.sql.BatchUpdateException: Record has changed since last read in table 'plan_extension_user_table_values'
   com.mysql.cj.jdbc.exceptions.SQLError.createBatchUpdateException(SQLError.java:214)
   com.mysql.cj.jdbc.ClientPreparedStatement.executePreparedBatchAsMultiStatement(ClientPreparedStatement.java:621)
   com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:461)
   com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:860)
   plan.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128)
   plan.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
   com.djrapitops.plan.storage.database.transactions.ExecBatchStatement.callExecute(ExecBatchStatement.java:35)
   com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:64)
   com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:55)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.updateRows(StorePlayerTableResultTransaction.java:165)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.lambda$storeValue$0(StorePlayerTableResultTransaction.java:93)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.performOperations(StorePlayerTableResultTransaction.java:72)
   com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:86)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:333)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:332)
   java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
   java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
   java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
   java.base/java.lang.Thread.run(Thread.java:1583)
Caused by:
java.sql.SQLException: Record has changed since last read in table 'plan_extension_user_table_values'
   com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
   com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:114)
   com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:988)
   com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:383)
   com.mysql.cj.jdbc.ClientPreparedStatement.executePreparedBatchAsMultiStatement(ClientPreparedStatement.java:564)
   com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:461)
   com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:860)
   plan.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128)
   plan.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
   com.djrapitops.plan.storage.database.transactions.ExecBatchStatement.callExecute(ExecBatchStatement.java:35)
   com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:64)
   com.djrapitops.plan.storage.database.transactions.ExecStatement.execute(ExecStatement.java:55)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.updateRows(StorePlayerTableResultTransaction.java:165)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.lambda$storeValue$0(StorePlayerTableResultTransaction.java:93)
   com.djrapitops.plan.storage.database.transactions.Transaction.execute(Transaction.java:223)
   com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerTableResultTransaction.performOperations(StorePlayerTableResultTransaction.java:72)
   com.djrapitops.plan.storage.database.transactions.Transaction.executeTransaction(Transaction.java:86)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$4(SQLDB.java:333)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:78)
   com.djrapitops.plan.storage.database.DBAccessLock.performDatabaseOperation(DBAccessLock.java:56)
   com.djrapitops.plan.storage.database.SQLDB.lambda$executeTransaction$5(SQLDB.java:332)
   java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
   java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
   java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
   java.base/java.lang.Thread.run(Thread.java:1583)
   java.base/java.lang.Thread.getStackTrace(Thread.java:2451)
   com.djrapitops.plan.storage.database.SQLDB.executeTransaction(SQLDB.java:319)
   com.djrapitops.plan.extension.implementation.providers.gathering.DataValueGatherer.storePlayerTable(DataValueGatherer.java:620)
   com.djrapitops.plan.extension.implementation.providers.gathering.DataValueGatherer.lambda$gatherPlayer$21(DataValueGatherer.java:384)
   java.base/java.util.Optional.ifPresent(Optional.java:178)
   com.djrapitops.plan.extension.implementation.providers.gathering.DataValueGatherer.gatherPlayer(DataValueGatherer.java:384)
   com.djrapitops.plan.extension.implementation.providers.gathering.DataValueGatherer.tryToUpdateValues(DataValueGatherer.java:344)
   com.djrapitops.plan.extension.implementation.providers.gathering.DataValueGatherer.updateValues(DataValueGatherer.java:331)
   com.djrapitops.plan.extension.ExtensionSvc.updatePlayerValues(ExtensionSvc.java:181)
   com.djrapitops.plan.extension.implementation.CallerImplementation.lambda$updatePlayerData$0(CallerImplementation.java:53)
   com.djrapitops.plan.processing.Processing.lambda$submitNonCritical$1(Processing.java:85)
   java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
   java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
   java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
   java.base/java.lang.Thread.run(Thread.java:1583)

Plugin versions

I built the plan after the #4403 (btw I do not mention it broke here, I just point out using this version, but it happened even before probably) but seems there's still this issue on Proxy
Plan version 5.7 build 3198 https://github.com/plan-player-analytics/Plan/actions/runs/22001911308 this one

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugIssues that contain unintended behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions