Skip to content

Commit 9980ca0

Browse files
Align OLAP transaction timeout with OLTP for tpcc-olap
The `tpcc-olap` workload fails ~43% of runs with sysbench aborting: `FATAL: 'thread_run' function failed: (not a string)`. Plain `tpcc`, which is byte-for-byte identical except for running vtgate in OLAP mode (`--mysql_default_workload=OLAP`), passes 100% of the time. Root cause: vttablet enforces a *separate* transaction timeout for OLAP sessions via `--queryserver-config-olap-transaction-timeout`, which defaults to 30s. We tuned up the OLTP timeouts long ago (`transaction-timeout=300s`, `query-timeout=900s`) but never raised the OLAP one. Under TPCC's lock contention (42 threads, 2 warehouses), an OLAP-session transaction routinely blocks past 30s, so vttablet kills the connection. A killed connection — unlike a retryable lock-wait error that sysbench ignores via `--mysql-ignore-errors=all` — severs a sysbench worker mid-run and crashes the benchmark. Set `--queryserver-config-olap-transaction-timeout` to 300s so OLAP sessions get the same headroom as OLTP, matching the regular `tpcc` workload. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 338f907 commit 9980ca0

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

ansible/roles/vttablet/templates/vttablet.conf.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ EXTRA_VTTABLET_FLAGS="--alsologtostderr \
3737
--queryserver-config-query-timeout=900 \
3838
--queryserver-config-schema-reload-time=60 \
3939
--queryserver-config-transaction-timeout=300 \
40+
--queryserver-config-olap-transaction-timeout=300 \
4041
{% else %}
4142
--queryserver-config-query-timeout=900s \
4243
--queryserver-config-schema-reload-time=60s \
4344
--queryserver-config-transaction-timeout=300s \
45+
--queryserver-config-olap-transaction-timeout=300s \
4446
{% endif %}
4547
--grpc_max_message_size=67108864 \
4648
--db_charset=utf8 \

0 commit comments

Comments
 (0)