Skip to content

Reading binlog failed, When setting rpl_semi_sync_slave=1 #360

@liaobaikai

Description

@liaobaikai

The master is configured with semisync mode
[root@localhost][(none)]> select version();
+-----------+
| version() |
+-----------+
| 8.0.41 |
+-----------+
1 row in set (0.00 sec)

[root@localhost][(none)]> SHOW variables LIKE 'rpl_semi_sync_%';
+-------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)

let opts = OptsBuilder::default()
        .ip_or_hostname("localhost")
        .user(Some("root"))
        .pass(Some("123456"))
        .db_name(Some("test"))
        .init(vec!["SET @rpl_semi_sync_replica = 1, @rpl_semi_sync_slave = 1"]);

    let pool = Pool::new(opts);
    let mut conn = pool.get_conn().await?;
    println!("conn: {:?}", conn);

    //conn.query_drop("SET @rpl_semi_sync_replica = 1, @rpl_semi_sync_slave = 1").await?;

    let request = BinlogStreamRequest::new(3000)
        .with_filename(b"mysql-bin.000001")
        .with_pos(157);
    let mut binlog_stream = conn.get_binlog_stream(request).await?;

    let mut events_num = 0;

    while let Some(event) = binlog_stream.next().await {
        let event = event.unwrap();
        events_num += 1;

        // assert that event type is known
        event.header().event_type().unwrap();

        println!("event: {:?}", event);

        // iterate over rows of an event
        if let EventData::RowsEvent(re) = event.read_data()?.unwrap() {
            let tme = binlog_stream.get_tme(re.table_id());
            for row in re.rows(tme.unwrap()) {
                row.unwrap();
            }
        }
    }

thread 'main' panicked at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mysql_common-0.35.5/src/binlog/events/mod.rs:126:37:
called Result::unwrap() on an Err value: Error { kind: UnexpectedEof, message: "failed to fill whole buffer" }
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/std/src/panicking.rs:697:5
1: core::panicking::panic_fmt
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/core/src/panicking.rs:75:14
2: core::result::unwrap_failed
at /rustc/6b00bc3880198600130e1cf62b8f8a93494488cc/library/core/src/result.rs:1732:5
3: core::result::Result<T,E>::unwrap
at /Users/lbk/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/result.rs:1137:23
4: mysql_common::binlog::events::Event::read
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mysql_common-0.35.5/src/binlog/events/mod.rs:126:9
5: mysql_common::binlog::EventStreamReader::read
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mysql_common-0.35.5/src/binlog/mod.rs:160:21
6: <mysql_async::conn::binlog_stream::BinlogStream as futures_core::stream::Stream>::poll_next
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mysql_async-0.36.1/src/conn/binlog_stream/mod.rs:165:19
7: futures_util::stream::stream::StreamExt::poll_next_unpin
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/mod.rs:1638:9
8: <futures_util::stream::stream::next::Next as core::future::future::Future>::poll
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/next.rs:32:9
9: mysqltest::main::{{closure}}
at ./src/main.rs:39:50
10: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/park.rs:285:60
11: tokio::task::coop::with_budget
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/task/coop/mod.rs:167:5
12: tokio::task::coop::budget
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/task/coop/mod.rs:133:5
13: tokio::runtime::park::CachedParkThread::block_on
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/park.rs:285:31
14: tokio::runtime::context::blocking::BlockingRegionGuard::block_on
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/context/blocking.rs:66:9
15: tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/scheduler/multi_thread/mod.rs:87:13
16: tokio::runtime::context::runtime::enter_runtime
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/context/runtime.rs:65:16
17: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/scheduler/multi_thread/mod.rs:86:9
18: tokio::runtime::runtime::Runtime::block_on_inner
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/runtime.rs:358:45
19: tokio::runtime::runtime::Runtime::block_on
at /Users/lbk/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/runtime/runtime.rs:330:13
20: mysqltest::main
at ./src/main.rs:64:5
21: core::ops::function::FnOnce::call_once
at /Users/lbk/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions