Skip to content

[Bug] UnsetVariableStmt write editlog in non master node #31079

@swjtu-zhanglei

Description

@swjtu-zhanglei

Search before asking

  • I had searched in the issues and found no similar issues.

Version

current master
c79b84e

What's Wrong?

2-05 21:47:12,772 ERROR (mysql-nio-pool-24|2975) [BDBJEJournal.write():270] catch ReplicaWriteException when writing to database, will exit. jo
urnal id 48157
com.sleepycat.je.rep.ReplicaWriteException: (JE 18.3.12) Problem closing transaction 2450276. The current state is:REPLICA. The node transitioned to 
this state at:Mon Feb 05 20:41:48 CST 2024
        at com.sleepycat.je.rep.txn.ReadonlyTxn.disallowReplicaWrite(ReadonlyTxn.java:114) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.rep.txn.ReadonlyTxn.preLogWithoutLock(ReadonlyTxn.java:102) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.dbi.CursorImpl.insertRecordInternal(CursorImpl.java:1371) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.dbi.CursorImpl.insertOrUpdateRecord(CursorImpl.java:1242) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Cursor.putNoNotify(Cursor.java:2938) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Cursor.putNotify(Cursor.java:2776) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Cursor.putNoDups(Cursor.java:2623) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Cursor.putInternal(Cursor.java:2454) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Cursor.putInternal(Cursor.java:841) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Database.put(Database.java:1635) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at com.sleepycat.je.Database.put(Database.java:1688) ~[je-18.3.14-doris-SNAPSHOT.jar:18.3.14-doris-SNAPSHOT]
        at org.apache.doris.journal.bdbje.BDBJEJournal.write(BDBJEJournal.java:248) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.persist.EditLog.logEdit(EditLog.java:1228) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.persist.EditLog.logGlobalVariableV2(EditLog.java:1817) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.VariableMgr.setGlobalVarAndWriteEditLog(VariableMgr.java:372) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.VariableMgr.setVarInternal(VariableMgr.java:349) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.VariableMgr.setVar(VariableMgr.java:285) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.VariableMgr.setAllVarsToDefaultValue(VariableMgr.java:722) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.handleUnsetVariableStmt(StmtExecutor.java:1333) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByLegacy(StmtExecutor.java:773) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:514) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:462) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:245) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:166) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:193) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:246) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_312]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_312]
        at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_312]

What You Expected?

master fe and non master fe work well

How to Reproduce?

  1. build a two fe environment, 1master + 1 follower or 1 master + 1 observer
  2. configure regression-conf.groovy, use non master mysql endpoint as jdbcUrl
  3. ./run-regression-test.sh --clean --run -s set_and_unset_variable
  4. and the connected non master fe node will crash

Anything Else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions