{
  "ticket": "U52 #89",
  "status": "passed",
  "startedAt": "2026-10-29T00:23:32.276892+08:00",
  "finishedAt": "2026-10-29T00:24:09.217957+08:00",
  "input": "python3 labs/mysql-engine/run.py u52",
  "exitCode": 0,
  "environment": {
    "os": "macOS-27.2-arm64-arm-64bit",
    "arch": "arm64",
    "python": "3.9.6",
    "mysql": "8.4.7",
    "innodbRedoLogCapacity": "104857600",
    "binlogFormat": "ROW"
  },
  "observed": [
    "U52 crashRecovery=PASS committedKept=true uncommittedRolledBack=true recoveryLog=2",
    "U52 replicationLag=PASS sqlThreadStopped=Yes replicaRowsWhileStopped=1 caughtUpSecondsBehind=0 rows=4",
    "U52 backupPitr=PASS pitrRows=a,b,c,d fullReplay=a,c,d",
    "U52 onlineDdl=PASS instantMs=14 inplaceMs=26 copyMs=56 inplaceRefused=1846 mdlWait=1205 rows=20000",
    "U52 cleanup=PASS ownInstancesRemoved=true"
  ],
  "checks": [
    {
      "name": "crashRecovery",
      "committedKept": 1,
      "uncommittedRolledBack": true,
      "recoveryLogLines": [
        "2026-10-28T16:23:39.513377Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...",
        "2026-10-28T16:23:39.514775Z 0 [System] [MY-010232] [Server] XA crash recovery finished."
      ],
      "binlogIndex": [
        "binlog.index"
      ]
    },
    {
      "name": "replicationLag",
      "afterFirstWrite": {
        "Replica_IO_Running": "Yes",
        "Replica_SQL_Running": "Yes",
        "Seconds_Behind_Source": "0",
        "Exec_Source_Log_Pos": "594",
        "Read_Source_Log_Pos": "885",
        "Auto_Position": "1"
      },
      "whileSqlThreadStopped": {
        "Replica_IO_Running": "Yes",
        "Replica_SQL_Running": "No",
        "Seconds_Behind_Source": "NULL",
        "Exec_Source_Log_Pos": "885",
        "Read_Source_Log_Pos": "1197",
        "Auto_Position": "1"
      },
      "replicaRowsWhileStopped": 1,
      "afterCatchUp": {
        "Replica_IO_Running": "Yes",
        "Replica_SQL_Running": "Yes",
        "Seconds_Behind_Source": "0",
        "Exec_Source_Log_Pos": "1197",
        "Read_Source_Log_Pos": "1197",
        "Auto_Position": "1"
      },
      "replicaRows": 4
    },
    {
      "name": "backupPitr",
      "binlogFile": "binlog.000002",
      "binlogStopPosition": 452,
      "pitrRows": [
        "a",
        "b",
        "c",
        "d"
      ],
      "fullReplayRows": [
        "a",
        "c",
        "d"
      ]
    },
    {
      "name": "onlineDdl",
      "instantMs": 14,
      "inplaceMs": 26,
      "copyMs": 56,
      "inplaceRefusedCode": "1846",
      "inplaceRefusedMs": 12,
      "instantUnsupportedCode": "1846",
      "mdlWaitCode": "1205",
      "mdlWaitMs": 2034,
      "rows": 20000,
      "flagsDefaultZero": 20000,
      "sampleAfterModify": "v12345"
    }
  ],
  "limits": [
    "崩溃恢复用 kill -9 mysqld 模拟断电；重启后 InnoDB 从 redo 前滚、undo 回滚未提交事务",
    "复制为同机两实例异步复制（server-id 51/52，GTID），不是跨机房或半同步；延迟由 STOP REPLICA SQL_THREAD 制造",
    "备份恢复用 mysqldump 全量 + mysqlbinlog PITR 到同一临时实例，不是物理备份/XtraBackup",
    "在线 DDL 只测 INSTANT 与 INPLACE 的耗时与 MDL 等待，不是生产规模或全部 DDL 类型",
    "未运行：8.0.39 镜像、跨机房复制、半同步/组复制、物理备份、生产负载"
  ],
  "artifacts": {
    "run.py": "4b8cf2397154792b5e6a75afb991e874c1d991a323d5546e163128193a163dfd",
    "u52.py": "993b5576306145e240e7021077974ae3038465a8eff74d4915b2b4be97ad6798"
  }
}
